
Nicht-intrusiver Erkennungsscanner für die WordPress wp2shell Pre-Auth-RCE-Kette (CVE-2026-63030 + CVE-2026-60137). Nur Erkennung, keine Ausnutzung.
Nicht-intrusiver Erkennungsscanner für aktuelle WordPress Core-Schwachstellen – einschließlich der wp2shell Pre-Authentifizierungs-RCE-Kette.
wp2shell_scanner.py ermittelt die Core-Version einer WordPress-Seite und liest deren öffentlich beworbene REST-API-Oberfläche aus, klassifiziert dann jede verfolgte Core-CVE unabhängig gegen die erkannte Version. Die Urteile sind branch-bewusst – z. B. wird eine 6.8.x-Seite korrekt als exponiert gegenüber der SQL-Injection-CVE gemeldet, aber nicht gegenüber der vollständigen RCE-Kette. Es erkennt nur: Es wird niemals ein Exploit-Payload gesendet. Einzelne Datei, eine Abhängigkeit (requests), CI-freundliche Exit-Codes und kundenfertige HTML‑/JSON‑/E-Mail-Berichte.
⚠️ Nur autorisierte Nutzung. Scannen Sie nur Systeme, die Ihnen gehören oder für die Sie ausdrücklich (schriftlich) autorisiert sind. Der Scanner sendet einen identifizierenden
User-Agent, damit Blue Teams den Datenverkehr zuordnen können – er versteckt sich nicht.
Die wp2shell-RCE-Kette = CVE-2026-63030 + CVE-2026-60137 zusammen → Pre-Auth-Fernausführung von Code auf einer Standardinstallation. Der Scanner meldet die Kette nur dann als exponiert, wenn beide CVEs für die erkannte Version als anfällig eingestuft werden.
Branch-Nuancen, die der Scanner richtig beherrscht:
6.8.x trägt die SQL-Injection (CVE-2026-60137) nur – nicht die RCE-Kette.6.9-Zweig ist CVE-2026-3906 (Notes) in 6.9.2 behoben, aber die wp2shell-Kette ist erst mit 6.9.5 geschlossen. Daher liest 6.9.2/6.9.4 gepatcht für den Notes-Fehler, bleibt aber anfällig für die RCE-Kette – der Scanner empfiehlt daher in diesem Zweig nur 6.9.5 oder später, niemals 6.9.4.Betrieblich wichtig: Technische Ausarbeitungen und ein funktionierender PoC für wp2shell sind bereits öffentlich. Die Versionserkennung ist jetzt das absolute Minimum – die Priorität liegt auf Patchen. Das Aktualisieren schließt den anfälligen Pfad, entfernt aber keine Hintertür, die vor dem Patch platziert wurde – daher der Kompromittierungsbewertungsschritt im Bericht.
Dies ist ein Core-Versionen-Scanner. Plugin- und Theme-CVEs – die große Mehrheit des WPScan‑/Patchstack-Katalogs – erfordern einen live kuratierten Feed und eine Versionen-Aufzählung pro Plugin und sind hier bewusst ausgeschlossen. Innerhalb seines Bereichs (aktuelle WordPress-Core-CVEs) zielt er darauf ab, präzise und branch-genau zu sein, anstatt eine kommerzielle Schwachstellendatenbank zu duplizieren.
<meta name="generator"> auf der Startseite/readme.html<generator>-Tag/wp-links-opml.php (OPML)/wp-json/, um zu sehen, ob WordPress den Namensraum batch/v1 im REST-Index bewirbt. Dies bestätigt, dass der Namensraum registriert ist, nicht, dass der Endpunkt durch eine WAF erreichbar ist. Es wird keine Batch-Anfrage und kein Payload gesendet.Es exploitiert nichts. Kein SQL-Injection-Payload, keine Batch-Routen-Konfusion-Anfrage, kein Versuch, Code auszuführen oder Daten zu lesen. Die Erkennung erfolgt versionsbasiert plus einem passiven Auslesen der öffentlich beworbenen API-Oberfläche.
pip install requests
# einzelnes Ziel
python3 wp2shell_scanner.py -t https://site.example --authorized
# Liste von Zielen (eines pro Zeile, #-Kommentare erlaubt)
python3 wp2shell_scanner.py -T scope.txt --authorized -o ./reports
# Vorschau der Ausgabeformate mit synthetischen Daten – kein Netzwerk, keine Authentifizierung nötig
python3 wp2shell_scanner.py --demo -o ./reports
Das Flag --authorized ist eine explizite Autorisierungssperre – Live-Scans weigern sich, ohne es auszuführen.
| Code | Bedeutung |
|---|---|
2 | Mindestens ein Ziel anfällig |
1 | Mindestens ein Ziel nicht eindeutig / Fehler |
0 | Sauber (gepatcht / nicht betroffen / kein WordPress) |
Der Empfänger der Benachrichtigungs-E-Mail ist die Konstante CSSLTD_CONTACT nahe dem Anfang des Skripts (Standard [email protected]). Bearbeiten Sie sie zu Ihrer eigenen Eingangsadresse.
Das Verzeichnis examples/ enthält synthetische (--demo) Ausgabe für einen fiktiven anfälligen Host (example.com, WordPress 6.9.1 – allen drei verfolgten CVEs ausgesetzt):
wp2shell_report_example.com.html – der kundenfertige HTML-Berichtwp2shell_example.com.json – der JSON-Datensatzwp2shell_email_example.com.txt – die Entwurfs-Benachrichtigungs-E-MailDiese werden aus erfundenen Daten generiert, um das Berichtsformat zu veranschaulichen. Sie sind nicht das Ergebnis des Scannens einer echten Website.
6.9.5+ sauber – 6.9.4 hat noch die wp2shell-Kette.)uploads/, wp-config.php, wp-cron und Admin-Konten durch; führen Sie Dateiintegritätsprüfungen gegen bekanntermaßen guten Core durch./wp-json/batch/v1 einschränken).Dieses Tool ist nur für autorisierte Sicherheitstests bestimmt. Sie sind dafür verantwortlich, dass Sie die Erlaubnis haben, jedes Ziel zu scannen. Nicht autorisiertes Scannen kann rechtswidrig sein. Die Autoren übernehmen keine Haftung für Missbrauch.
| CVE | Schwachstelle | Zugriff | Betroffene Core-Version | Behoben in |
|---|
| CVE-2026-63030 – wp2shell | CWE-436 – REST-Batch-Routen-Konfusion → RCE (Kritisch; CVSS 9.8 WPScan CNA / 7.5 CISA-ADP; GHSA-ff9f-jf42-662q) | Nicht authentifiziert | 6.9.0–6.9.4, 7.0.0–7.0.1 | 6.9.5, 7.0.2 |
| CVE-2026-60137 | CWE-89 – SQL-Injection in WP_Query author__not_in (Moderat alleinstehend, CVSS 5.9; Kritisch in der Kette; GHSA-fpp7-x2x2-2mjf) | Nicht authentifiziert | 6.8.0–6.8.5, 6.9.0–6.9.4, 7.0.0–7.0.1 | 6.8.6, 6.9.5, 7.0.2 |
| CVE-2026-3906 | CWE-862 – Notes-REST-API fehlende Autorisierung (Moderat, CVSS 4.3, GHSA-6x83-fcf5-r65g) | Abonnent+ | 6.9.0–6.9.1 | 6.9.2 |
| Flag | Bedeutung |
|---|
-t, --target | Einzelne Ziel-URL oder Host |
-T, --targets-file | Datei mit einem Ziel pro Zeile |
--demo | Einen BEISPIEL-Bericht/E-Mail aus synthetischen Daten generieren (kein Netzwerk) |
-o, --output-dir | Ausgabeverzeichnis (Standard ./wp2shell_reports) |
--formats | Komma-Liste: json,html,email (Standard: alle) |
--authorized | Autorisierungssperre – für Live-Scans erforderlich |
--timeout | HTTP-Timeout in Sekunden (Standard 12) |
--delay | Sekunden zwischen Zielen (höflich sein; Standard 1,0) |
--insecure | TLS-Zertifikate nicht überprüfen |
--quiet | Konsolenzusammenfassung unterdrücken |
| Urteil | Bedeutung |
|---|
VULNERABLE | Erkannte Version liegt innerhalb eines betroffenen Bereichs – sofort patchen |
PATCHED | Auf einem behobenen Release; nicht gegenüber den verfolgten CVEs exponiert |
NOT_AFFECTED | Version liegt vor dem frühesten verfolgten Fehler (< 6.8.0 – CVE-2026-60137) |
UNKNOWN | Version konnte nicht bestätigt werden, Vektoren waren uneinig oder es wurde ein Pre-Release-Build gesehen – manuell überprüfen |
NOT_WORDPRESS | Kein WordPress-Fingerabdruck gefunden |