Dieses Repository enthält produktionsreife Detection-Engineering-Inhalte für **CVE-2025-25257**, eine SQL-Injection-Schwachstelle ohne vorherige Authentifizierung im Fortinet FortiWeb Fabric Connector in den Versionen 7.0 bis 7.6.x. Eine erfolgreiche Ausnutzung kann ohne jegliche vorherige Authentifizierung zu Remote Code Execution führen.
Dieses Repository enthält produktionsreifes Detection-Engineering-Material für CVE-2025-25257, eine SQL-Injection-Schwachstelle ohne vorherige Authentifizierung im Fortinet FortiWeb Fabric Connector in den Versionen 7.0 bis 7.6.x. Eine erfolgreiche Ausnutzung kann ohne vorherige Authentifizierung zu Remote Code Execution führen.
Dieser Inhalt ist ausschließlich für defensive Zwecke bestimmt. Er richtet sich an Security Operations Center (SOC)-Teams, Detection Engineers und Threat Hunter. Es ist kein waffenfähiger Exploit-Code enthalten.
| Feld | Detail |
|---|---|
| CVE | CVE-2025-25257 |
| EDB-ID | 52473 |
| Produkt | Fortinet FortiWeb |
| Betroffene Versionen | 7.0.x bis 7.6.x |
| Schwachstellentyp | SQL-Injection vor der Authentifizierung, die zu RCE führt |
| Angriffsvektor | HTTP-API-Endpunkt (ohne Authentifizierung) |
| Erforderliche Authentifizierung | Keine |
| CVSS-Score | 9.8 (Kritisch) |
| Patch verfügbar | Ja, Upgrade auf 7.6.1 oder höher |
| Veröffentlicht | 2026-02-04 |
| Entdecker | Milad Karimi (Ex3ptionaL) |
CVE-2025-25257 betrifft den Fabric-Connector-API-Endpunkt /api/fabric/device/status in FortiWeb. Der Authorization-Header wird ohne vorherige Bereinigung direkt in eine SQL-Abfrage übergeben. Ein nicht authentifizierter Angreifer kann SQL-Syntax in den Bearer-Token-Wert injizieren, um die zugrunde liegende Abfrage zu manipulieren, die Authentifizierung zu umgehen und in bestimmten Konfigurationen über SQL-basiertes Command Stacking oder Datei-Schreib-Primitive Remote Code Execution zu erreichen.
Die Schwachstelle ist ohne Anmeldedaten über das Netzwerk ausnutzbar. Sie ist in HTTP-Zugriffsprotokollen trivial erkennbar, sofern eine Protokollierung vorhanden ist.
Der Angreifer sendet eine präparierte HTTP-GET-Anfrage an die Fabric-Connector-API. Das Bearer-Token im Authorization-Header enthält injiziertes SQL. Beispielmuster:
Authorization: Bearer aaa' OR '1'='1
Dadurch wird die SQL-Abfrage im Backend als wahr ausgewertet, wodurch die Token-Validierung umgangen wird. Eine weitergehende Ausnutzung kann UNION-basierte Injektion zum Auslesen von Daten oder gestapelte Abfragen (Stacked Queries) zum Schreiben von Dateien oder zur Ausführung von Betriebssystembefehlen umfassen, abhängig von der Datenbankkonfiguration und den Berechtigungen.
Das Folgende ist ausschließlich zu Validierungszwecken der Erkennungsregeln dokumentiert.
GET /api/fabric/device/status HTTP/1.1
Host: <fortiweb-ip>
Authorization: Bearer aaa' OR '1'='1
Die Erkennungsregeln in diesem Repository sind darauf abgestimmt, diese und ähnliche Injektionsmuster in HTTP-Protokollen und im Netzwerkverkehr zu identifizieren.
| ID | Kategorie | Erkennungsmethode | Quelle | Abdeckungsgrad |
|---|---|---|---|---|
| D-01 | Ausnutzung per Web-Anfrage | SQLi-Muster im Authorization-Header | Web-/Proxy-Protokolle, WAF | Hoch |
| D-02 | Ausnutzung per Web-Anfrage | Anfragen an /api/fabric/device/status ohne gültiges Token | Web-Protokolle | Hoch |
| D-03 | Anomalie bei der Prozessausführung | Shell-Prozess, der von einem Webserver-Prozess gestartet wurde | EDR / Sysmon | Hoch |
| D-04 | Anomalie bei der Prozessausführung | sh-, bash-, python-Kindprozess von nginx oder httpd | EDR | Hoch |
| D-05 | Verdächtige Dateierstellung | Web-Shell, die in das FortiWeb-Webroot geschrieben wurde | EDR / Dateiintegrität | Mittel |
| D-06 | Verdächtige Dateierstellung | Unerwartete .php-, .jsp-, .py-Dateien in Web-Verzeichnissen | Dateiüberwachung | Mittel |
| D-07 | Persistenzmechanismus | Cron-Job-Modifikation nach der Ausnutzung | EDR / Auditd | Mittel |
| D-08 | Persistenzmechanismus | Neues Admin-Konto, das nach der SQLi über die API erstellt wurde | API-/Auth-Protokolle | Hoch |
| D-09 | Container-Aktivität | Ungewöhnlicher Prozess im FortiWeb-Container-Namespace | Container-Runtime | Mittel |
| D-10 | Threat Hunting | Abweichung von der Baseline bei der Aufrufrate der Fabric-Connector-API | SIEM / Analysen | Mittel |
| D-11 | Threat Hunting | Quell-IPs mit wiederholten 200/403-Mustern an /api/fabric/ | Web-Protokolle | Hoch |
| D-12 | Konfigurationsmanipulation | Änderungen an FortiWeb-Konfigurationsdateien nach einer Web-Anfrage | Dateiintegrität / EDR | Hoch |
| D-13 | Konfigurationsmanipulation | Unerwartete Schreibvorgänge in /data/ oder /etc/ auf der Appliance |
Die YARA-Regeln befinden sich unter rules/yara/.
cve_2025_25257_http.yar - Erkennt Ausnutzungsmuster in HTTP-Protokolldateien und mitgeschnittenem Datenverkehrcve_2025_25257_webshell.yar - Erkennt Web-Shells, die möglicherweise nach der Ausnutzung abgelegt wurdencve_2025_25257_payload.yar - Erkennt rohe Payload-Artefakte auf der FestplatteHTTP-Zugriffsprotokolle scannen:
yara -r rules/yara/cve_2025_25257_http.yar /var/log/fortiweb/
Webroot auf abgelegte Dateien scannen:
yara -r rules/yara/cve_2025_25257_webshell.yar /var/www/html/
Mitgeschnittene PCAP-Datei scannen:
yara rules/yara/cve_2025_25257_http.yar capture.pcap
Alle Regeln rekursiv gegen ein Verzeichnis ausführen:
yara -r rules/yara/ /path/to/scan/
Die KQL-Abfragen befinden sich unter rules/kql/. Jede Datei zielt auf eine bestimmte Erkennungskategorie ab.
| Datei | Beschreibung |
|---|---|
01_web_exploitation.kql | SQL-Injection-Muster im Authorization-Header |
02_process_spawn.kql | Anomale Kindprozesse vom Webserver |
03_command_execution.kql | Verdächtige Befehlsausführungsketten |
04_file_creation.kql | Unerwartete Datei-Schreibvorgänge in Web-Verzeichnissen |
05_persistence.kql | Indikatoren für Persistenzmechanismen |
06_config_modification.kql | Manipulation von Konfigurationsdateien |
07_threat_hunting.kql | Erweiterte Threat-Hunting-Abfrage |
Die Sigma-Regeln befinden sich unter rules/sigma/. Sie können mit sigma-cli oder pySigma in jedes SIEM-Format konvertiert werden.
In Splunk SPL konvertieren:
sigma convert -t splunk rules/sigma/cve_2025_25257_sqli.yml
In Elastic EQL konvertieren:
sigma convert -t elasticsearch rules/sigma/cve_2025_25257_sqli.yml
Auf der CLI der FortiWeb-Appliance:
get system status | grep Version
Betroffen: 7.0.x bis 7.6.0
Gepatcht: 7.6.1 und höher
Ein einfacher Nginx-Reverse-Proxy, der den verwundbaren Endpunkt simuliert, kann für Erkennungstests verwendet werden. Für die protokollbasierte Validierung der Erkennung ist kein echtes FortiWeb-Image erforderlich.
# Pull the test lab container
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# Send a simulated exploitation request
curl -k -H "Authorization: Bearer aaa' OR '1'='1" \
https://localhost:8443/api/fabric/device/status
Dadurch wird ein Zugriffsprotokolleintrag erzeugt, der den Erkennungsmustern in D-01 entspricht.
Überprüfen Sie nach dem Senden der Testanfrage die simulierte Protokollausgabe:
docker logs fortiweb-sim | grep "fabric/device/status"
Erwartetes Protokolleintragsmuster:
"GET /api/fabric/device/status HTTP/1.1" 401 - "Bearer aaa' OR '1'='1"
Führen Sie die YARA-Regel gegen das Protokoll aus:
yara rules/yara/cve_2025_25257_http.yar /var/log/nginx/access.log
Erwartete Ausgabe:
CVE_2025_25257_SQLi_AuthHeader /var/log/nginx/access.log
cve-2025-25257-detection/
├── README.md
├── LICENSE
├── .gitignore
├── rules/
│ ├── yara/
│ │ ├── cve_2025_25257_http.yar
│ │ ├── cve_2025_25257_webshell.yar
│ │ └── cve_2025_25257_payload.yar
│ ├── kql/
│ │ ├── 01_web_exploitation.kql
│ │ ├── 02_process_spawn.kql
│ │ ├── 03_command_execution.kql
│ │ ├── 04_file_creation.kql
│ │ ├── 05_persistence.kql
│ │ ├── 06_config_modification.kql
│ │ └── 07_threat_hunting.kql
│ ├── sigma/
│ │ ├── cve_2025_25257_sqli.yml
│ │ └── cve_2025_25257_process_spawn.yml
│ └── splunk/
│ ├── web_exploitation.spl
│ └── process_anomaly.spl
├── docs/
│ ├── iocs.md
│ ├── mitre_attack.md
│ └── false_positive_analysis.md
├── src/
│ ├── poc.py
│ └── lab/
│ └── nginx.conf
└── sysmon/
└── sysmon_config_snippet.xml
Dieses Repository wird ausschließlich zu defensiven und Bildungszwecken bereitgestellt. Sämtliche Erkennungsinhalte sollen Sicherheitsteams dabei helfen, Ausnutzungsversuche zu identifizieren und darauf zu reagieren. Verwenden Sie keine Inhalte aus diesem Repository gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben.
Dieses Projekt ist unter der MIT-Lizenz lizenziert. Weitere Details finden Sie unter LICENSE.
| Auditd / EDR |
| Mittel |