Strumento di rilevamento e validazione per l'esposizione del core WordPress a wp2shell (CVE-2026-63030 / CVE-2026-60137). Le modalità vengono selezionate con un flag e il target è posizionale. --scan rileva l'impronta della versione del core e conferma che la route REST /batch/v1 sia raggiungibile senza inviare un payload di exploit; le modalità --check/--read/--shell/--rce/--root-prereq sono il PoC di validazione per uso autorizzato in laboratorio.
wp2shell.py è un singolo script basato esclusivamente sulla libreria standard — nessuna dipendenza esterna. Ogni invocazione stampa un banner ZephrSec su stderr prima di eseguire (rimane fuori da stdout, quindi l'output JSON di --scan -j non è influenzato).
Controllo di esposizione non distruttivo: impronta della versione + conferma che la route REST /batch/v1 sia raggiungibile. Nessun payload di exploit inviato.
--check
Conferma la SQLi blind basata sul tempo con una sonda differenziale innocua.
--read
Estrae dati tramite SQLi blind (un preset o un'espressione scalare SQL grezza).
--shell
Catena RCE autenticata tramite una password admin violata/recuperata.
--rce
RCE pre-auth senza credenziali: forgia un proprio admin tramite la SQLi, poi distribuisce una webshell auto-pulente.
--root-prereq
Controllo benigno dei prerequisiti shell-to-root; esegue solo diagnostica, mai un'escalation locale dei privilegi.
Flag delle opzioni
Flag
Applicabile a
Cosa fa
-f, --file
--scan
Legge gli host da un file (uno per riga; i commenti # vengono saltati).
-j, --json
--scan
Emette i risultati come JSON su stdout.
-t, --threads
--scan
Concorrenza di scansione (default 10).
--prefix
--check/--read
Prefisso delle tabelle del DB (default wp_).
--delay
--check/--read
Secondi SLEEP iniettati per l'oracolo di timing (default 0.15).
--repeats
--check/--read
Mediana su N sonde per bit; da aumentare su collegamenti rumorosi (default 1).
Opzioni: -f/--file file degli host (uno per riga), -j/--json output JSON, -t/--threads concorrenza (default 10).
PoC di validazione
Le modalità --check/--read/--shell/--rce/--root-prereq inviano payload di exploit reali. Eseguile solo contro il laboratorio localhost incluso o altri sistemi di tua proprietà e su cui sei esplicitamente autorizzato a testare. --shell e --rce eseguono codice in remoto e sono pensate per i target di laboratorio/autorizzati; --rce su un host non-loopback richiede --authorized. --root-prereq usa lo stesso plugin diagnostico protetto da token per verificare i prerequisiti shell-to-root, ma non esegue un'escalation locale dei privilegi.
--shell richiede una password admin recuperata/violata. --rce è la catena pre-auth senza credenziali: forgia un proprio amministratore tramite la SQLi (oEmbed → changeset → parse_request rientrante), poi distribuisce la webshell — nessuna password richiesta.
--shell, --rce e --root-prereq richiedono un'autorizzazione interattiva y/N prima che venga inviato qualsiasi payload di esecuzione di codice (si interrompono su stdin non interattivo/EOF). Passa -y/--yes per saltare il prompt per l'automazione contro il laboratorio o un target autorizzato.
I diff delle patch usati per fondare il PoC sono salvati in poc/diffs/, con note di ricerca in poc/RESEARCH.md. La SQLi è completamente ricostruibile dalla fix author__not_in. La catena --rce senza credenziali (oEmbed → changeset → rientro → creazione admin) riproduce la RCE stock-default contro il laboratorio incluso; --shell è il percorso alternativo tramite una credenziale admin recuperata/violata per il caricamento autenticato del plugin e l'esecuzione dei comandi.
--cmd
--shell/--rce
Comando da eseguire sul target (default id).
-i, --interactive
--shell/--rce
Ciclo interattivo di comandi web invece di un singolo comando.
--no-cleanup
--shell/--rce
Lascia il plugin/webshell rilasciato in posizione (solo laboratorio).
-y, --yes
--shell/--rce/--root-prereq
Salta il prompt di autorizzazione interattivo (per l'automazione).
--sleep
--rce
Secondi SLEEP iniettati per il rilevamento SQLi pre-auth (default 4).
--rounds
--rce
Mediana su N sonde per il rilevamento di --rce (default 3).
--route
--rce
Forma della route batch: auto, rest-route o wp-json (default auto).
--proxy
--rce
Instrada le richieste tramite un proxy HTTP, es. Burp su http://127.0.0.1:8080.
--authorized
--rce
Dichiara l'autorizzazione per un target --rce non-loopback (richiesto per host remoti).