Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
wp2shell-poc2 — CVE-2026-63030 | Kitploit
Strumenti/GitHubGitHub/attackercan/wp2shell-poc2
Framework di ExploitAnalisi delle VulnerabilitàSfruttamento di Applicazioni WebPost-ExploitPenetration TestingCommand and ControlRed TeamingSviluppo Payload
GitHubattackercan/wp2shell-poc2

wp2shell-poc2

CVE-2026-63030

Vedi Repository
64111 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

wp2shell-poc

Proof-of-concept per un'iniezione SQL non autenticata nel core di WordPress che porta all'esecuzione remota di codice, tramite una route confusion del batch REST (CVE-2026-63030).

L'exploit non richiede credenziali né altra configurazione oltre a un target raggiungibile. Raggiunge l'iniezione tramite un singolo endpoint: POST /wp-json/batch/v1.

La scoperta in sé è un'iniezione SQL non autenticata: check la conferma e read dimostra la lettura arbitraria del database. Il comando shell è post-exploitation opzionale (credenziali amministrative recuperate → upload di un plugin → esecuzione di comandi), incluso per dimostrare l'impatto completo; non è la vulnerabilità.

Versioni interessate

Scarica lo strumento
BranchAffectedFixed in
6.9.x6.9.0 – 6.9.46.9.5
7.0.x7.0.0 – 7.0.17.0.2

Le versioni precedenti alla 6.9.0 non sono interessate da questa catena.

Come funziona

Il batch endpoint REST (/batch/v1) non è autenticato ed esegue più sub-request in una singola chiamata, affidandosi al fatto che ogni sub-request venga validata e controllata nei permessi singolarmente.

serve_batch_request_v1() costruisce due array paralleli — $matches (l'handler associato a ogni sub-request) e $validation (il risultato della validazione per ogni sub-request) — poi indicizza entrambi con lo stesso offset durante l'invio. Una sub-request il cui percorso fallisce wp_parse_url() viene aggiunta a $validation ma non a $matches, quindi gli array si disallineano e una sub-request viene inviata tramite l'handler di una diversa sub-request. Questa è la route confusion.

La PoC annida la primitiva due volte:

  1. Una richiesta POST /wp/v2/posts con un corpo requests viene inviata tramite l'handler del batch stesso. Essendo stata validata come richiesta di posts, la sua lista requests non viene mai verificata contro lo schema del batch, quindi le sue sub-request possono usare GET: la allow-list dei metodi viene aggirata.
  2. All'interno di quel batch interno, una richiesta GET /wp/v2/users con una stringa author_exclude (lo schema degli utenti non ha tale parametro, quindi il valore supera la validazione senza modifiche) viene inviata tramite get_items() dei posts. Lì author_exclude viene mappata sulla query var author__not_in di WP_Query, che la build vulnerabile interpola in SQL come stringa.

Il risultato è un'iniezione SQL cieca basata su boolean e temporale raggiungibile in fase pre-autenticazione. Con l'accesso in lettura al database è possibile recuperare l'hash della password dell'amministratore; una volta crackato, l'accesso amministrativo consente l'esecuzione di codice tramite l'upload di un plugin.

Requisiti

Python 3.8+ e libreria standard. Nessuna dipendenza di terze parti.

Utilizzo

Eseguilo dalla directory del repository:

root@kitploit:~
./wp2shell.py <command> <url> [options]

Oppure pip install . per avere un comando wp2shell nel tuo PATH.

check — conferma la vulnerabilità (sicuro)

Conferma la sfruttabilità con un ritardo temporale differenziale. Non legge dati e non modifica nulla.

root@kitploit:~
./wp2shell.py check http://target

read — estrazione dati (blind SQL injection)

root@kitploit:~
./wp2shell.py read http://target                      # server fingerprint
./wp2shell.py read http://target --preset users       # user logins and password hashes
./wp2shell.py read http://target --query "SELECT @@version"

shell — esegui un comando (remote code execution)

Post-exploitation opzionale. Richiede credenziali amministrative valide; l'iniezione recupera l'hash della password, quindi fornisci qui il testo in chiaro recuperato.

root@kitploit:~
./wp2shell.py shell http://target --user admin --password '<recovered>' --cmd id
./wp2shell.py shell http://target --user admin --password '<recovered>' -i   # interactive shell

shell carica una webshell come plugin (protetta da un percorso casuale e da un token per esecuzione) e ne stampa il percorso. Rimuovila al termine.

Opzioni

OptionApplies toDescription
--rest-routeallUsa /?rest_route=/batch/v1 (per siti senza permalink personalizzati).
--proxy URLallInstrada il traffico attraverso un proxy HTTP (ad esempio, Burp).
--timeout NallTimeout delle richieste in secondi.
--sleep NcheckRitardo usato per confermare l'iniezione.
--presetreadfingerprint o users.
--queryreadUn'espressione SQL scalare da leggere.
--prefixreadPrefisso delle tabelle del database (default wp_).
--max-length NreadNumero massimo di caratteri letti per valore (default 128).
--user / --passwordshellCredenziali amministrative (in chiaro, recuperate dall'hash).
--cmdshellComando da eseguire (omettilo quando usi -i).
-i / --interactiveshellApre una shell interattiva dopo il deploy.

Rimedio

Aggiorna a WordPress 6.9.5 o 7.0.2. Nel frattempo, blocca sia /wp-json/batch/v1 sia il parametro della query rest_route=/batch/v1 al perimetro, oppure richiedi l'autenticazione per il batch endpoint tramite il filtro rest_pre_dispatch.

Note legali

Solo per test di sicurezza autorizzati. Usalo esclusivamente su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta al test. L'autore non si assume alcuna responsabilità per un uso improprio.

Riferimenti

  • Annuncio di rilascio di WordPress 7.0.2 — https://wordpress.org/news/2026/07/wordpress-7-0-2-release/
  • CVE-2026-63030