Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
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
WPSniper — Rilevatore CVE-2026-87902. Classe LFI di WordPress get_page_template. Solo rilevamento. Laboratorio autorizzato. | Kitploit
Strumenti/GitHubGitHub/ynsmroztas/wpsniper
RicognizioneScanner di VulnerabilitàScanner di Vulnerabilità WebAnalisi delle VulnerabilitàRaccolta InformazioniSicurezza WebPenetration Testing
GitHubynsmroztas/wpsniper

WPSniper

Rilevatore CVE-2026-87902. Classe LFI di WordPress get_page_template. Solo rilevamento. Laboratorio autorizzato.

Vedi Repository
615h 9m 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

WPSniper — rilevatore CVE-2026-87902

WPSniper

Rilevatore CVE-2026-87902 per WordPress Core.

get_page_template() può essere manipolato in modo che la risoluzione del template di pagina includa un file .php locale leggibile al di fuori del tema attivo. WPSniper identifica il sito, seleziona un page_id pubblicato, sonda la classe di inclusione e stampa VULN solo quando un forte banner PEAR è univoco rispetto al corpo della sonda.

Solo rilevamento. Nessuna webshell. Nessun config-create di pearcmd. Nessuna esecuzione di comandi OS.

root@kitploit:~
python3 WPSniper.py -u https://lab.wordpress.local --shell

Pipeline:

root@kitploit:~
subfinder -d lab.example -silent | httpx -silent | python3 WPSniper.py -t 8

Ambito scritto. Laboratorio proprio. Questa è l'intera licenza per eseguirlo.


Sessione di laboratorio WPSniper oscurata

Classe

WordPress costruisce il nome del template di pagina dalla variabile di query pagename derivata dall'URL e decodificata:

page-{$pagename}.php

locate_template() include poi quel file. Nelle build interessate il percorso risolto non è forzato a rimanere all'interno di una directory di tema consentita. Un traversal con doppia codifica in pagename sopravvive a sanitize_title abbastanza a lungo perché get_page_template() lo decodifichi una volta e risalga fuori dall'albero del tema.

Due precondizioni si trovano davanti a un'inclusione chiusa:

  1. Il tema genitore o figlio attivo ha una directory di primo livello il cui nome inizia con page- (WordPress documenta page-templates/ — Twenty Twelve, Twenty Fourteen, Neve, Hestia, Sydney e altri).
  2. Esiste un target .php leggibile per l'account del web server. Il rilevatore usa i banner standard della CLI PEAR come oracolo di inclusione. Non ne scrive uno.

L'RCE è un possibile seguito quando quelle condizioni più un gadget scrivibile/eseguibile si allineano. Quel seguito non è in questo repository.

Credito dello scopritore sulla CVE: Robert (ressl) tramite WordPress HackerOne. Advisory: GHSA-7hp8-65ch-5whp.


Flusso di rilevamento WPSniper

Cosa fa l'operatore

La tabella delle versioni è integrata. 4.7.0–7.1.1 sono la finestra interessata. Punti corretti: 7.1.2, 7.0.6, 6.9.9, 6.8.10 … fino a 4.7.37.

Regola di conferma

Una pagina di marketing che dice "pearcmd" in un post del blog non è un riscontro.

VULN solo quando tutto questo è vero:

  • Digest del corpo della sonda ≠ digest della baseline ?page_id=
  • Almeno un token forte è univoco rispetto alla sonda (PEAR Version:, Usage: pear, PEAR_Config, Commands for pear, config-create, DEPRECATED: PEAR commands, pear.php)
  • Il token debole pearcmd / PEAR da solo viene scartato, specialmente se era già presente nell'HTML della baseline

INFO = versione interessata e/o directory page-templates, inclusione non chiusa. Non aprire un critical su INFO.

SAFE = branch corretto, o inclusione identica alla baseline.

SKIP = non WordPress, URL errato.

/etc/passwd è l'oracolo sbagliato per questa CVE. locate_template() aggiunge .php. Il comando interattivo passwd esiste così puoi vederlo da solo. La comparsa di una stanza root:x:0:0: è insolita e deve essere verificata manualmente.

Installazione

root@kitploit:~
python3 -m pip install -r requirements.txt
python3 WPSniper.py -u https://lab.wordpress.local

Richiede requests.

Flag

--shell viene ignorato su una pipeline. È intenzionale.

Shell interattiva

root@kitploit:~
python3 WPSniper.py -u https://lab.wordpress.local --shell
root@kitploit:~
[email protected] ▶
  1 fp        versione / tema / corretto?
  2 pages     pagine pubblicate REST
  3 theme     directory page-templates
  4 probe     inclusione PEAR + diff baseline   (nessuna scrittura)
  5 diff      idem, stampa Δ + token
  6 passwd    prova …/etc/passwd               (questa classe include *.php)
  7 include P includi un percorso .php senza suffisso
  8 save      ultimo corpo → /tmp/wpsniper-probe.html
  9 help
  0 exit

Ogni sonda stampa l'URL completo e un curl da copiare e incollare. Usalo nel report. Non inventare una seconda richiesta.

7 include è per un file di laboratorio autorizzato che hai già posizionato. Il nome di esempio nel testo di aiuto è un marcatore di testimonianza, non un dropper.

Sessione di laboratorio (oscurata)

root@kitploit:~
WPSniper v1.3   CVE-2026-87902  get_page_template LFI
[radar] target  https://lab.wordpress.local
[radar] generator=6.8.3  theme=twentytwelve  status=affected
[radar] page_id=2
[radar] theme dir /wp-content/themes/twentytwelve/page-templates/ → 403

VULN  lab.wordpress.local  unique=['PEAR Version:','Usage: pear'] Δlen=+18420

patched  7.1.2 · 7.0.6 · 6.8.10 · backports to 4.7.37

L'host in questa pagina è un'etichetta di laboratorio. I nomi host reali dei clienti non appartengono a uno screenshot pubblico.

Patch

Aggiorna a 7.1.2 o al backport per il tuo branch:

7.0.6 · 6.9.9 · 6.8.10 · 6.7.9 · 6.6.9 · 6.5.12 · 6.4.12 · 6.3.12 · 6.2.13 · 6.1.14 · 6.0.16 · 5.9.18 … fino a 4.7.37.

7.1.2 richiede anche che il percorso del template risolto rimanga all'interno di una directory di tema consentita. Questa è la correzione effettiva, non una regola WAF.

Cosa questo repo non farà

  • Nessuna webshell, nessun pearcmd config-create, nessun wrapper system()
  • Nessun playbook di scansione di massa di Internet
  • Nessuna affermazione che ogni macchina WordPress 6.x sia RCE
  • Nessun /etc/passwd grezzo come conferma primaria

Se ti serve un finding: allega il curl che WPSniper ha già stampato, i token forti univoci e la mancata corrispondenza del digest della baseline.

Disclaimer

Solo test di sicurezza autorizzati. Eseguirlo contro un host che non possiedi o che non hai per iscritto è un tuo problema, non dello strumento.

Link

  • Sito: ynsmroztas.github.io
  • X: @ynsmroztas
  • CVE: CVE-2026-87902

mitsec · Yunus Emre Öztaş

Scarica lo strumento
PassoAzioneSegnale
1Home + generator + /feed/WordPress? versione? slug del tema?
2REST /wp-json/wp/v2/pages o page_id= nell'HTMLUna pagina pubblicata affinché il percorso del template venga effettivamente eseguito
3GET /wp-content/themes/{slug}/page-templates/200 / 401 / 403 = la directory esiste
4Baseline ?page_id=N vs sonda pagename=Digest del corpo + token PEAR forti univoci
FlagSignificato
-u URLSingolo target
-l fileLista di URL
stdinsubfinder | httpx | WPSniper
-t NThread su una lista (default 6)
-qRighe silenziose + riepilogo
--shellSonda interattiva su un singolo -u
--timeoutSecondi (default 14)