
Un script complet tout-en-un basé sur Python servant de preuve de concept pour découvrir et exploiter une vulnérabilité critique de contournement d'authentification (CVE-2024-55591) sur certains dispositifs Fortinet.
Un script tout-en-un complet en Python pour découvrir et exploiter une vulnérabilité critique de contournement d'authentification (CVE-2024-55591) dans certains appareils Fortinet. Ce script :
nmapCVE-2024-55591 est un contournement d'authentification critique dans certains produits Fortinet (FortiOS et FortiProxy). En exploitant une faille dans l'interface de gestion WebSocket/Telnet, un attaquant peut obtenir un accès CLI privilégié sans identifiants valides.
Selon l'avis de sécurité Fortinet PSIRT (FG-IR-24-535), les versions suivantes sont connues pour être affectées :
git clone https://github.com/exfil0/CVE-2024-55591-POC.git
cd CVE-2024-55591-POC
python3 attack.py
Lors de l'exécution, le script vérifie automatiquement les dépendances Python manquantes (requests, urllib3) et tente de les installer.
Il vous sera demandé :
Une fois confirmé, le script teste la connectivité, vérifie la vulnérabilité, met à niveau la connexion vers WebSocket et tente le contournement d'authentification.
Au démarrage, ce script vérifie la présence de requests et urllib3. S'ils sont manquants, il tente de les installer via pip.
Si vous le souhaitez, le script exécute nmap -sS -p- --min-rate 500 <hôte> pour découvrir les ports TCP ouverts, puis :
Si plusieurs ports sont découverts ouverts, vous pouvez demander au script de les tester tous. Ceci est utile si les services Fortinet écoutent sur des ports non standards.
Si l'exploitation réussit, vous pouvez éventuellement exécuter des commandes supplémentaires dans la même session Telnet, par exemple :
diag sys topdiag debug crashlog readexecute shellVous pouvez modifier ces commandes post-exploitation dans le script pour récolter des données plus avancées.
Le script tente d'analyser la version de l'appareil à partir de la sortie de get system status ou get system info. Si elle correspond à une plage vulnérable connue, il vous en informe.
192.168.1.50y (Oui) pour découvrir les ports ouvertsy si connexion via HTTPS/443get system statusy ou nSi Nmap trouve plusieurs ports ouverts, vous pouvez choisir de tester tous les ports automatiquement ou d'en sélectionner un spécifique.
/login?redir=/ng renvoie l'interface de gestion Fortinetservice-worker.js?local_access_token=ScaryBYte contient la sous-chaîne api/v2/staticget system statusSi le mode post-exploitation est activé, le script envoie des commandes supplémentaires de débogage ou système. La sortie est collectée et affichée dans votre console.
Ce script de preuve de concept est fourni uniquement à des fins éducatives et de test. L'exploitation non autorisée de systèmes sans permission explicite est illégale. Assurez-vous toujours d'avoir les approbations appropriées avant d'analyser ou de tester tout système, et référez-vous à l'avis de sécurité Fortinet (FG-IR-24-535) pour les informations sur les correctifs.