
Blackbox, nicht-intrusiver Detektor für wp2shell (WordPress Core Pre-Auth RCE, CVE-2026-63030 / CVE-2026-60137). Nur Erkennung.
Blackbox-, nicht-intrusiver Detektor für wp2shell — die Pre-Auth-RCE-Kette im WordPress-Core, die am 17.07.2026 offengelegt wurde:
/wp-json/batch/v1): Eine Unteranfrage, deren Pfad wp_parse_url() scheitern lässt,
landet im Validierungs-Array, nicht jedoch im Handler-Array, wodurch die beiden
desynchronisiert werden.author__not_in-Behandlung von WP_Query,
vor der Authentifizierung über diese Routenkonfusion erreichbar.Verkettet ermöglichen sie einem anonymen Angreifer, ein Administrator-Konto anzulegen und eine Plugin-Webshell zu platzieren — auf einer Standardinstallation, ohne dass ein Plugin oder Theme erforderlich ist.
Ausführlicher technischer Artikel: https://own2pwn.fr/articles/appsec/wp2shell-wordpress-rce
Es erkennt Gefährdung. Es nutzt nichts aus. Jede Anfrage, die es sendet, ist eine normale, schreibgeschützte Anfrage, die auch ein Crawler senden könnte:
generator-Tag entfernt, identifiziert wird:
das generator-Meta-Tag, Core-Assets ?ver= (bei /wp-includes/- und
/wp-admin/-Assets, die der Core-Version folgen), der RSS-Feed-Generator (?v=),
/wp-links-opml.php, die Assets der Login-Seite, /wp-includes/version.php,
readme.html und der /wp-json/-Index. Die Quellen werden gegengeprüft, und eine
Konfidenz (high, wenn ≥2 übereinstimmen) wird gemeldet.OPTIONS-Anfrage (und dem REST-Index),
die das Routenschema zurückgibt, , um festzustellen,
ob eine Edge-Mitigation vorhanden ist.Keine Anfrage löst die Schwachstelle aus. Kein POST /wp-json/batch/v1, kein
author_exclude, kein SQL. Wenn die Core-Version verborgen ist, sagt das Tool dies,
anstatt zu raten (um wp2shell blind zu bestätigen, müsste man es ausnutzen).
Resilienz: Wiederholungsversuche mit Backoff, gzip/deflate-Dekodierung,
https→http-Fallback, Verfolgen von Cross-Host-Weiterleitungen, ein browserähnlicher
User-Agent (überschreibbar) und paralleles Scannen mehrerer Ziele.
| Versionen | Gefährdung | Behoben in |
|---|---|---|
| 6.8.0 – 6.8.5 | Nur SQL-Injection (kein RCE) | 6.8.6 |
| 6.9.0 – 6.9.4 | Pre-Auth-RCE | 6.9.5 |
pip install wp2shell-detect
Oder direkt aus dem Quellcode ausführen (eine einzige Datei, keine Abhängigkeiten, Python 3.8+):
git clone https://github.com/own2pwn-fr/wp2shell-detect
./wp2shell-detect/wp2shell_detect.py https://example.com
Keine Abhängigkeiten. Python 3.8+.
wp2shell-detect https://example.com
wp2shell-detect --json https://a.example https://b.example
wp2shell-detect --targets hosts.txt --workers 16 # parallel sweep
wp2shell-detect --discover https://front.example # follow headless WP
(Bei Installation von PyPI lautet der Befehl wp2shell-detect. Von einem Klon aus lässt
sich ./wp2shell_detect.py mit denselben Argumenten aufrufen.)
Optionen: --json, --discover, --workers N, --timeout S, --user-agent UA,
--insecure, --targets FILE. Exit-Code 2, wenn ein Ziel als verwundbar erkannt
wird (praktisch für CI-/Cron-Durchläufe).
Moderne Websites liefern oft ein JS/Next.js-Frontend unter www. aus und betreiben
WordPress auf einem Schwester-Host (wordpress., wp., cms.). Ein Scan von www.
gibt dann not WordPress zurück — zu Recht, denn dieser Host ist kein WordPress.
Richten Sie den Scan auf den WordPress-Host, oder übergeben Sie --discover, damit das
Tool ihn anhand des CSP, des Link-Headers bzw. der Asset-URLs des Frontends automatisch
findet und scannt.
Beispiel:
[!!] https://blog.example.com -> VULNERABLE (pre-auth RCE)
version : 6.9.3 (generator meta tag=6.9.3, RSS feed generator=6.9.3)
batch : reachable (/wp-json/batch/v1)
cves : CVE-2026-63030, CVE-2026-60137
note : WordPress 6.9.3 is in the wp2shell pre-auth RCE range. REST batch endpoint reachable — no edge mitigation.
Patchen Sie den WordPress-Core auf 6.8.6 / 6.9.5 / 7.0.2 oder neuer. Falls das
Patchen warten muss, blockieren Sie die Batch-Route am Edge (/wp-json/batch/v1 und
?rest_route=/batch/v1) oder über ein Must-Use-Plugin, das rest_pre_dispatch hookt,
und prüfen Sie anschließend auf nicht autorisierte Administrator-Konten und unbekannte
Plugins.
Nur für autorisierte Tests. Der Einsatz dieses Tools gegen Systeme, die Sie weder besitzen noch zu testen beauftragt sind, kann in Ihrem Land illegal sein. Sie sind für die Nutzung selbst verantwortlich.
MIT. Siehe LICENSE. Von own2pwn.
Link-Header oder
Asset-URLs — üblich bei Headless-/Next.js-Frontends), meldet das Tool dies, und
--discover scannt ihn ebenfalls.| 7.0.0 – 7.0.1 | Pre-Auth-RCE | 7.0.2 |