
Rilevatore blackbox non intrusivo per wp2shell (RCE pre-autenticazione del core di WordPress, CVE-2026-63030 / CVE-2026-60137). Solo rilevamento.
Blackbox, rilevatore non intrusivo per wp2shell — la catena RCE pre-autenticazione nel core di WordPress divulgata il 2026-07-17:
/wp-json/batch/v1): una sub-request il cui percorso fa fallire wp_parse_url() finisce nell'array di validazione ma non in quello degli handler, desincronizzando i due.author__not_in di WP_Query, raggiungibile pre-autenticazione tramite quella confusione di route.Incatinate, permettono a un attaccante anonimo di creare un account amministratore e rilasciare una webshell come plugin — su un'installazione predefinita, senza richiedere plugin o temi.
Analisi tecnica completa: https://own2pwn.fr/articles/appsec/wp2shell-wordpress-rce
Rileva l'esposizione. Non sfrutta nulla. Ogni richiesta che effettua è una normale richiesta di sola lettura che un crawler potrebbe inviare:
generator viene comunque identificata: il meta tag generator, gli asset del core con ?ver= (sugli asset di /wp-includes/ e /wp-admin/, che seguono il core), il generatore del feed RSS (?v=), /wp-links-opml.php, gli asset della pagina di login, /wp-includes/version.php, readme.html e l'indice /wp-json/. Le fonti vengono incrociate e viene riportato un livello di confidenza (high quando ≥2 concordano).OPTIONS innocua (e l'indice REST) — che restituisce lo schema della rotta — per capire se è in atto una mitigazione perimetrale.Nessuna richiesta innesca la vulnerabilità. Nessun POST /wp-json/batch/v1, nessun author_exclude, nessuna SQL. Se la versione del core è nascosta, lo strumento lo dice invece di fare supposizioni (confermare wp2shell alla cieca richiederebbe di sfruttarlo).
Resilienza: tentativi con backoff, decodifica gzip/deflate, fallback https→http, seguito dei redirect cross-host, User-Agent simile a un browser (sovrascrivibile) e scansione parallela di più target.
| Intervallo | Esposizione | Corretta in |
|---|---|---|
| 6.8.0 – 6.8.5 | Solo SQL injection (niente RCE) | 6.8.6 |
| 6.9.0 – 6.9.4 | RCE pre-autenticazione |
pip install wp2shell-detect
Oppure eseguilo direttamente dal sorgente (file singolo, nessuna dipendenza, Python 3.8+):
git clone https://github.com/own2pwn-fr/wp2shell-detect
./wp2shell-detect/wp2shell_detect.py https://example.com
Nessuna dipendenza. 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
(Installato da PyPI, il comando è wp2shell-detect. Da un clone, chiama ./wp2shell_detect.py con gli stessi argomenti.)
Opzioni: --json, --discover, --workers N, --timeout S, --user-agent UA, --insecure, --targets FILE. Codice di uscita 2 se un qualsiasi target risulta vulnerabile (comodo in sweep CI / cron).
I siti moderni servono spesso un frontend JS/Next.js su www. e tengono WordPress su un host gemello (wordpress., wp., cms.). La scansione di www. restituisce quindi not WordPress — correttamente, perché quell'host non è WordPress. Punta la scansione sull'host WordPress, oppure passa --discover per far sì che lo strumento lo trovi e lo scansioni automaticamente dalla CSP / header Link / URL degli asset del frontend.
Esempio:
[!!] 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.
Aggiorna il core di WordPress alle versioni 6.8.6 / 6.9.5 / 7.0.2 o successive. Se l'aggiornamento deve attendere, blocca la rotta batch al perimetro (/wp-json/batch/v1 e ?rest_route=/batch/v1) oppure tramite un must-use plugin che aggancia rest_pre_dispatch, poi verifica la presenza di account amministratore non autorizzati e plugin sconosciuti.
Solo per valutazioni autorizzate. Eseguirlo su sistemi che non possiedi né sei incaricato di testare può essere illegale nella tua giurisdizione. Sei responsabile dell'uso che ne fai.
MIT. Vedi LICENSE. Di own2pwn.
Link o URL di asset — comune con frontend headless/Next.js), lo strumento lo segnala e --discover lo scansiona anch'esso.| 6.9.5 |
| 7.0.0 – 7.0.1 | RCE pre-autenticazione | 7.0.2 |