
WordPress Core RCE Non Autenticata (CVE-2026-63030, CVE-2026-60137)
__ ______ ____ ____ _ _ _____ _ _ \ \ / / _ \___ \/ ___|| | | | ____| | | | \ \ /\ / /| |_) |__) \___ \| |_| | _| | | | | \ V V / | __// __/ ___) | _ | |___| |___| |___ \_/\_/ |_| |_____|____/|_| |_|_____|_____|_____|wp2shell-checker | WordPress Batch API Desync Detector
Rivelatore checker per la RCE pre-auth della REST Batch API del WordPress Core
Creato da 0xjessie21 — Cybersecurity ILCS
| Firma | wp2shell / WP Core REST Batch API Desync |
| Gravità | 9.8 CRITICAL — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Versioni interessate | WordPress 6.9.0-6.9.4 e 7.0.0-7.0.1 |
| Corretta in | 6.9.5, 7.0.2 |
| Prerequisiti | Nessuno — non autenticato, nessun plugin, configurazione predefinita |
| Modalità | Non distruttivo / sonda in sola lettura |
Screenshot dello strumento che rileva un'istanza WordPress vulnerabile in un impegno VAPT interno autorizzato.

Questo strumento è strettamente destinato a test di sicurezza autorizzati e a finalità esclusive di verifica difensiva.
| Usalo solo su istanze WordPress che possiedi o per le quali hai esplicita autorizzazione scritta al test (ad es. uno scope VAPT interno approvato). | |
Questa sonda è progettata per essere non distruttiva: prende di mira un ID di categoria inesistente (0) e si ferma al livello di verifica dei permessi, quindi non viene mai creato, modificato o eliminato alcun dato. | |
| Non modificare il payload (ad es. cambiare l'ID di categoria in uno reale o puntarlo verso altre route REST) per tentare uno sfruttamento effettivo. In tal modo lo strumento da rilevatore diventerebbe un exploit armato, cosa per cui questo tool non è esplicitamente progettato e che non supporta. | |
| Non pubblicare, ridistribuire o eseguire questo strumento contro sistemi al di fuori del tuo scope autorizzato. L'uso non autorizzato contro sistemi di terze parti potrebbe violare la Legge ITE (UU ITE) in Indonesia e leggi equivalenti sull'abuso informatico in altri paesi. | |
| Fornito così com'è, senza alcuna garanzia. L'autore e le organizzazioni associate non si assumono alcuna responsabilità per usi impropri, danni o conseguenze legali derivanti dall'uso di questo strumento. |
Utilizzando questo strumento accetti di essere l'unico responsabile di garantire che il tuo uso sia conforme alla legge applicabile e alle policy di autorizzazione della tua organizzazione.
L'API REST Batch del WordPress Core (/wp-json/batch/v1) mantiene sincronizzati tre array paralleli durante la risoluzione di un batch di sotto-richieste. Una sotto-richiesta volutamente malformata li desincronizza, facendo sì che ogni sotto-richiesta successiva venga elaborata con l'handler e la callback di permessi errati.
Questo strumento invia una singola richiesta batch appositamente costruita e ispeziona solo i codici di risposta, senza mai arrivare a un'operazione che modifichi lo stato.
| # | Sotto-richiesta | Scopo |
|---|---|---|
| 0 | POST http://: | Volutamente malformata — attiva la desincronizzazione dell'indice |
| 1 | DELETE /wp/v2/categories/0 | Sensore sicuro — l'ID di categoria 0 non esiste mai |
| 2 | POST /wp/v2/block-renderer/core/paragraph | Handler di riferimento usato per rilevare la falla |
Logica del verdetto
| Risultato | Verdetto |
|---|---|
block_cannot_read | VULNERABILE — il controllo permessi è fuoriuscito dall'handler di block-renderer |
rest_term_invalid | CORRETTO — l'handler delle categorie ha risposto correttamente |
| nessun marcatore trovato | INCONCLUSIVO — WAF, API disabilitata o non-WordPress |
Inoltre, lo strumento esegue fingerprinting passivo WAF/CDN dagli header di risposta:
Cloudflare · Sucuri · Akamai · AWS CloudFront · Imperva · Fastly · F5 BIG-IP · Wordfence
# Basic scan
./wp2shell_checker.py https://your-site.com
# Multiple targets in one run
./wp2shell_checker.py https://site1.com https://site2.com https://site3.com
# Custom timeout
./wp2shell_checker.py https://your-site.com --timeout 20
# Show full raw request/response (payload, headers, body)
./wp2shell_checker.py https://your-site.com --raw
# Disable colors/animation (for logging to a file)
./wp2shell_checker.py https://your-site.com --no-color > scan_report.txt
Tutti i flag
| Flag | Descrizione |
|---|---|
targets | Una o più URL di base da scansionare (obbligatorio) |
--timeout N | Timeout delle richieste in secondi (default: 10) |
--no-color | Disattiva i colori ANSI e l'animazione di scansione |
--raw | Stampa l'intero payload e gli header della richiesta/risposta raw |
Se un target risulta VULNERABILE:
7.0.2 (o 6.9.5 sul ramo 6.9). Conferma che l'aggiornamento sia stato effettivamente applicato./wp-json/batch/v1 e ?rest_route=/batch/v1 nel tuo WAF/reverse proxy — entrambe le forme devono essere bloccate.| wp2shell.com | checker originale e advisory, Searchlight Cyber |
| Hadrian Security — Technical Breakdown | analisi della causa principale |
Questo progetto è concesso in licenza MIT — consulta il file LICENSE per i dettagli.
Cybersecurity ILCS · realizzato per uso difensivo interno