
Genera una pagina HTML trigger auto-inviante che sfrutta un'iniezione HTML riflessa nel login di WordPress (CVE-2026-64638) per visualizzare un banner personalizzato, per test di sicurezza autorizzati.
Un generatore di PoC a file singolo, senza dipendenze, per l'iniezione HTML riflessa CVE-2026-64638 di WordPress su wp-login.php (differenziale tra strip_tags() e il parser KSES). Produce una pagina trigger auto-inviante: quando la vittima apre il file, la pagina invia silenziosamente il payload di iniezione e la vittima atterra direttamente sulla pagina di login del target con un banner renderizzato — nessuna interazione, nessun JavaScript lato target.
Solo per test di sicurezza autorizzati. Utilizzare esclusivamente su sistemi di tua proprietà o per i quali hai esplicita autorizzazione ai test.
| Versioni | Stato |
|---|
| 6.4.0 – 7.0.2 | Vulnerabili — funzionano subito |
| 5.8 – 6.3 | Condizionali — richiedono un plugin che passi login_errors attraverso wp_kses() con style consentito |
| 4.7 – 5.7 | Non sfruttabili (il nome utente non viene riflesso) |
| 6.4.9 / 6.5.9 / 6.6.6 / 6.7.6+ / 6.8.7 / 6.9.6 / 7.0.3+ | Corrette (esc_html) |
python3 banner_poc.py \
--out trigger.html \
--target http://192.0.2.10/wp-login.php \
--msg "Manutenzione di sistema programmata"
# sottodirectory + percorso di login nascosto + sottotitolo
python3 banner_poc.py \
--out trigger.html \
--target http://10.0.0.5:8080/blog/my-secret-login \
--msg "Accedi nuovamente" --sub "Sessione scaduta"
Ospita trigger.html ovunque. Quando la vittima lo apre, viene reindirizzata alla pagina di login del target con il banner renderizzato. Il passaggio è silenzioso: nessun contenuto intermedio visibile, lo sfondo corrisponde alla schermata di login di WordPress, l'atterraggio avviene in ~0,5 s.
| Flag | Descrizione |
|---|---|
--out | File HTML di output (obbligatorio) |
--target | URL completo della pagina di login — incluse sottodirectory / percorsi di login nascosti (obbligatorio) |
--msg | Testo del banner (predefinito: Manutenzione di sistema programmata) |
--sub | Riga di sottotitolo opzionale |
wp-login.php riflette un nome utente di login fallito nel messaggio di errore.
Le versioni vulnerabili lo sanitizzano con PHP strip_tags(), che lascia passare
qualsiasi cosa in cui < è seguito da uno spazio bianco.< div style="..."> arriva come elemento reale.< /strong> (barra preceduta da uno spazio) sopravvive anch'esso a strip_tags() e viene
ricostruito come tag di chiusura reale, consentendo al payload di chiudere il
<strong> del template (un elemento di formattazione attiva HTML5) come primo token e
mantenere il controllo esatto del DOM.div finale non chiuso, di dimensione zero e fuori schermo, inghiotte il testo di coda del template
("… non è registrato su questo sito …").class che sopravvivono a
safecss_filter_attr(). Su 6.3+ / 6.4+ position:fixed renderizza un overlay
a pagina intera; su 5.8–6.2 quelle proprietà vengono rimosse e lo stesso payload
si degrada automaticamente a un banner rosso nel flusso della pagina.Puro HTML/CSS — nessun JavaScript viene eseguito sul target. Le regole WAF che prendono di mira
<script> o gestori di eventi non si applicano.
Questo strumento è pubblicato per ricerca difensiva e test di penetrazione autorizzati. L'autore non è responsabile per un uso improprio.