Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
xss2shell-check — Nicht-destruktiver Detektor für CVE-2026-64638 (XSS2Shell) — WordPress Pre-Auth-XSS-Reflexions-Primitiv | Kitploit
Tools/GitHubGitHub/sanaullahamanullah/xss2shell-check
DefensivwerkzeugeSchwachstellenscannerWeb-SchwachstellenscannerSchwachstellenanalyseInformationsbeschaffungWebsicherheitPenetrationstests
GitHubsanaullahamanullah/xss2shell-check

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

xss2shell-check

Nicht-destruktiver Detektor für CVE-2026-64638 (XSS2Shell) — WordPress Pre-Auth-XSS-Reflexions-Primitiv

Repository anzeigen
vor 5 TagenNoch nicht geprüft

xss2shell-check

Nicht-destruktiver Detektor ohne Abhängigkeiten für das Reflection-Primitive CVE-2026-64638 („XSS2Shell") in WordPress wp-login.php.

Hintergrund

CVE-2026-64638 ist eine vor der Authentifizierung ausnutzbare, reflektierte XSS-Schwachstelle im WordPress-Core, die von PWN.AI am 07.08.2026 offengelegt wurde (CVSS 8.9, CWE-79) und in 7.0.3 gepatcht wurde, mit Backports für alle gepflegten Branches (6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, …).

Die Ursache ist eine Parser-Differenz zwischen strip_tags() in PHP und dem KSES-Sanitizer von WordPress:

  • strip_tags() weigert sich, ein Tag zu erkennen, wenn auf < ein Leerzeichen folgt, sodass ein Benutzername wie < area id=x> als Klartext überlebt.
  • KSES hat keine solche Regel und parst den Text erneut zu einem lebenden <area id="x">-Element innerhalb der Login-Fehlermeldung.

Das ergibt eine vom Angreifer wählbare DOM-Injection mit wählbaren id-/class-/href-Attributen — das Primitive hinter der veröffentlichten mehrstufigen Kette (DOM-Clobbering → REST-JSONP → Diebstahl von Anwendungspasswörtern → Plugin-Upload → RCE gegen ein eingeloggtes Admin-Opfer).

Was dieses Tool tut

Zwei nicht-destruktive Sonden (ein fehlgeschlagener Login mit einem zufälligen Marker-Benutzernamen):

  1. RAW_HTML — <b>marker</b> erscheint unmaskiert in der Fehlerantwort.
  2. AREA_BYPASS — < area id=marker> übersteht strip_tags() und erscheint erneut als lebendes/normalisiertes Element (z. B. area id="marker") in der Antwort.

Kein Payload führt etwas aus; das Tool misst lediglich, ob Angreifer-HTML als lebendes DOM gerendert wird. Optionale Extras:

  • --version — Fingerprinting der Core-Version über das Feed-<generator>-Tag.
  • --jsonp — prüft, ob das in der veröffentlichten Kette verwendete REST-JSONP-Envelope (_jsonp/_envelope) erreichbar ist.

Verwendung

root@kitploit:~
python3 xss2shell_check.py https://example.com
python3 xss2shell_check.py --jsonp --verbose https://example.com
python3 xss2shell_check.py --version https://example.com
python3 xss2shell_check.py --json https://example.com

Python 3.6+, nur Standardbibliothek. Keine Abhängigkeiten.

Exit-Codes

CodeBedeutung
0VERWUNDBAR (Reflection-Primitive vorhanden)
1GEPATCHT / NICHT VERWUNDBAR
2FEHLER (nicht erreichbar, WAF-Challenge, unerwartete Antwort)

Erkennungsmatrix

Hinweise zur Erkennung

  • Die verwundbare Signatur ist das normalisierte Element (<area id="…">). Die Anführungszeichen bei Attributen variieren je nach KSES-Generation (alter Custom-Parser: <area id=x>; DOMDocument: <area id="x"> / <area id="x" />), daher werden alle Formen abgeglichen. Ein rohes < area …>-Durchreichen ohne erneutes Parsen ist im Browser nur inaktiver Text, nicht das Primitive — es wird als RAW_TEXT_ONLY gemeldet und löst keinen False Positive aus.
  • Die Versionsangabe ist rein informativ: gepatchte Backports (6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, 4.7.34, …) liegen innerhalb der Serie 4.7.0–7.0.2 und werden pro Branch berücksichtigt; der Reflection-Check bleibt maßgeblich.
  • Requests: 1 GET (Login-Seite — erfasst auch WAF-/Sticky-Cookies und die effektive URL nach Weiterleitungen) + 2 POSTs mit eindeutigen Zufalls-Markern. POST-Weiterleitungen werden erneut als POST gesendet. WAF-Blockaden erscheinen als Exit 2 und nicht als stilles „nicht verwundbar".
  • Ein False Negative ist möglich, wenn ein benutzerdefinierter login_errors-Filter oder CDN/WAF Antworten umschreibt oder die Login-Fehlermeldung den Benutzernamen nie zurückspiegelt.

Haftungsausschluss

Nur für autorisierte Sicherheitstests. Dieses Tool ist ausschließlich für Tests an Systemen bestimmt, die dir gehören oder für die du eine ausdrückliche schriftliche Genehmigung zur Bewertung hast. Nicht autorisierte Tests sind in den meisten Rechtsordnungen illegal.

Referenzen

  • Criminal IP — WordPress-Schwachstelle CVE-2026-64638: XSS auf der Login-Seite bis zur serverseitigen Codeausführung
  • CUHK ITS — Pre-Authenticated-XSS-Schwachstelle in WordPress „XSS2Shell" (CVE-2026-64638)

Lizenz

MIT

Tool herunterladen
FlagZweck
--versionFingerprinting der Core-Version (Feed-Generator-Tag, Homepage-Meta als Fallback)
--jsonpzusätzlich prüfen, ob das REST-JSONP-Envelope (_jsonp/_envelope) erreichbar ist
-v, --verboseAntwortausschnitte der Sonden ausgeben (Belege für Berichte)
--jsonmaschinenlesbares JSON-Ergebnis (CI/Automatisierung)
Beobachtetes VerhaltenBefundExit
<b>marker</b> unmaskiert zurückgegebenRAW_HTML — verwundbar0
< area id=marker> wird erneut zu einem lebenden <area id="marker"> geparst (beliebige Anführungszeichen/Void-Form)AREA_BYPASS — verwundbar0
Benutzername HTML-maskiertESCAPED — nicht verwundbar1
Tags entfernt, Text bleibtSTRIPPED — nicht verwundbar1
Rohes < area …> wird durchgereicht, aber nie erneut geparstRAW_TEXT_ONLY — inaktiver Text, nicht verwundbar1
Keine ZurückspiegelungNOT_REFLECTED — nicht verwundbar1
Sonde blockiert (HTTP ≥ 400 / Challenge-Seite) oder Ziel nicht erreichbarFEHLER2