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
xss2shell-check — Rilevatore non distruttivo per CVE-2026-64638 (XSS2Shell) — primitiva di riflessione XSS pre-autenticazione di WordPress | Kitploit
Strumenti/GitHubGitHub/sanaullahamanullah/xss2shell-check
Strumenti DifensiviScanner di VulnerabilitàScanner di Vulnerabilità WebAnalisi delle VulnerabilitàRaccolta InformazioniSicurezza WebPenetration Testing
GitHubsanaullahamanullah/xss2shell-check

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

xss2shell-check

Rilevatore non distruttivo per CVE-2026-64638 (XSS2Shell) — primitiva di riflessione XSS pre-autenticazione di WordPress

Vedi Repository
5 giorni faNon ancora revisionato

xss2shell-check

Rilevatore non distruttivo e senza dipendenze per la primitiva di riflessione CVE-2026-64638 ("XSS2Shell") in WordPress wp-login.php.

Contesto

CVE-2026-64638 è una XSS riflessa pre-autenticazione nel core di WordPress, divulgata da PWN.AI il 2026-08-07 (CVSS 8.9, CWE-79) e corretta nella 7.0.3 con backport a tutti i rami mantenuti (6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, …).

La causa principale è una differenza di parsing tra strip_tags() di PHP e il sanitizzatore KSES di WordPress:

  • strip_tags() rifiuta di riconoscere un tag quando uno spazio segue <, quindi un nome utente come < area id=x> sopravvive come testo semplice.
  • KSES non ha questa regola e ri-analizza il testo in un elemento <area id="x"> attivo all'interno del messaggio di errore di login.

Questo produce un'iniezione DOM arbitraria con attributi id/class/href scelti dall'attaccante — la primitiva alla base della catena multi-stadio pubblicata (DOM clobbering → REST JSONP → furto delle Application Password → upload di plugin → RCE contro una vittima admin con sessione attiva).

Cosa fa questo strumento

Due sonde non distruttive (un login fallito con un nome utente marker casuale):

  1. RAW_HTML — <b>marker</b> appare non escapato nella risposta di errore.
  2. AREA_BYPASS — < area id=marker> sopravvive a strip_tags() e riappare come elemento attivo/normalizzato (es. area id="marker") nella risposta.

Nessun payload esegue nulla; lo strumento verifica soltanto se l'HTML dell'attaccante viene renderizzato come DOM attivo. Extra opzionali:

  • --version — fingerprint della versione del core tramite il tag <generator> del feed.
  • --jsonp — verifica che l'envelope JSONP REST (_jsonp/_envelope) usato dalla catena pubblicata sia raggiungibile.

Utilizzo

root@kitploit:~
python3 xss2shell_check.py https://example.com
python3 xss2shell_check.py --jsonp --verbose https://example.com
python3 xss2shell_check.py --version https://example.com
python3 xss2shell_check.py --json https://example.com

Python 3.6+, solo stdlib. Nessuna dipendenza.

Codici di uscita

CodiceSignificato
0VULNERABILE (primitiva di riflessione presente)
1CORRETTO / NON VULNERABILE
2ERRORE (irraggiungibile, sfida WAF, risposta inattesa)

Matrice di rilevamento

Note sul rilevamento

  • La firma vulnerabile è l'elemento normalizzato (<area id="…">). Il quoting degli attributi varia in base alla generazione di KSES (vecchio parser personalizzato: <area id=x>; DOMDocument: <area id="x"> / <area id="x" />), pertanto vengono riconosciute tutte le forme. Un passaggio grezzo di < area …> senza ri-analisi è testo inerte nel browser, non la primitiva — viene segnalato come RAW_TEXT_ONLY e non genera un falso positivo.
  • L'etichetta della versione è solo indicativa: i backport corretti (6.9.6, 6.8.7, 6.7.6, 6.6.6, 6.5.9, 4.7.34, …) ricadono all'interno della serie 4.7.0–7.0.2 e sono gestiti per ramo; il controllo di riflessione resta autorevole.
  • Richieste: 1 GET (pagina di login — cattura anche i cookie WAF/sticky e l'URL effettivo dopo i redirect) + 2 POST con marker casuali univoci. I redirect POST vengono riemessi come POST. I blocchi WAF emergono come exit 2, non come un silenzioso "non vulnerabile".
  • È possibile un falso negativo se un filtro login_errors personalizzato o una CDN/WAF riscrive le risposte, o se l'errore di login non riflette mai il nome utente.

Disclaimer

Solo test di sicurezza autorizzati. Questo strumento è destinato esclusivamente al test di sistemi di tua proprietà o per i quali disponi di esplicita autorizzazione scritta. I test non autorizzati sono illegali nella maggior parte delle giurisdizioni.

Riferimenti

  • Criminal IP — Vulnerabilità WordPress CVE-2026-64638: dalla XSS nella pagina di login all'esecuzione di codice lato server
  • CUHK ITS — Vulnerabilità XSS pre-autenticazione in WordPress "XSS2Shell" (CVE-2026-64638)

Licenza

MIT

Scarica lo strumento
FlagScopo
--versionfingerprint della versione del core (tag generator del feed, fallback meta della homepage)
--jsonpverifica anche che l'envelope JSONP REST (_jsonp/_envelope) sia raggiungibile
-v, --verbosestampa estratti delle risposte delle sonde (prove per i report)
--jsonrisultato JSON leggibile da una macchina (CI / automazione)
Comportamento osservatoVerdettoExit
<b>marker</b> riflesso non escapatoRAW_HTML — vulnerabile0
< area id=marker> ri-analizzato in un <area id="marker"> attivo (qualsiasi quoting / forma void)AREA_BYPASS — vulnerabile0
Nome utente escapato in HTMLESCAPED — non vulnerabile1
Tag rimossi, il testo rimaneSTRIPPED — non vulnerabile1
< area …> grezzo passa ma non viene mai ri-analizzatoRAW_TEXT_ONLY — testo inerte, non vulnerabile1
Nessun echoNOT_REFLECTED — non vulnerabile1
Sonda bloccata (HTTP ≥ 400 / pagina di sfida) o target irraggiungibileERROR2