
This repository provides production-ready detection engineering content for **CVE-2025-25257**, a pre-authentication SQL Injection vulnerability in Fortinet FortiWeb Fabric Connector versions 7.0 through 7.6.x. Successful exploitation can lead to Remote Code Execution without any prior authentication.
Este repositório fornece conteúdo de engenharia de detecção pronto para produção para a CVE-2025-25257, uma vulnerabilidade de injeção SQL sem autenticação no Fortinet FortiWeb Fabric Connector versões 7.0 a 7.6.x. A exploração bem-sucedida pode levar à execução remota de código sem qualquer autenticação prévia.
Este conteúdo destina-se apenas para uso defensivo. É voltado para equipes de Centro de Operações de Segurança (SOC), engenheiros de detecção e caçadores de ameaças. Nenhum código de exploração armado está incluído.
A CVE-2025-25257 afeta o endpoint da API Fabric Connector /api/fabric/device/status no FortiWeb. O cabeçalho Authorization é passado diretamente para uma consulta SQL sem sanitização. Um atacante não autenticado pode injetar sintaxe SQL no valor do token Bearer para manipular a consulta subjacente, contornar a autenticação e, em certas configurações, obter execução remota de código através de empilhamento de comandos baseados em SQL ou primitivas de escrita de arquivos.
A vulnerabilidade é explorável pela rede sem credenciais. É trivialmente detectável em logs de acesso HTTP se a coleta de logs estiver em vigor.
O atacante envia uma requisição HTTP GET manipulada para a API Fabric Connector. O token Bearer no cabeçalho Authorization contém SQL injetado. Exemplo de padrão:
Authorization: Bearer aaa' OR '1'='1
Isso faz com que a consulta SQL do backend seja avaliada como verdadeira, contornando a validação do token. Explorações adicionais podem envolver injeção baseada em UNION para ler dados ou consultas empilhadas para escrever arquivos ou executar comandos do SO, dependendo da configuração e dos privilégios do banco de dados.
O seguinte é documentado apenas para fins de validação de regras de detecção.
GET /api/fabric/device/status HTTP/1.1
Host: <fortiweb-ip>
Authorization: Bearer aaa' OR '1'='1
As regras de detecção neste repositório são ajustadas para identificar este e padrões de injeção semelhantes em logs HTTP e tráfego de rede.
As regras YARA estão localizadas em rules/yara/.
cve_2025_25257_http.yar – Detecta padrões de exploração em arquivos de log HTTP e tráfego capturadocve_2025_25257_webshell.yar – Detecta web shells potencialmente deixados após exploraçãocve_2025_25257_payload.yar – Detecta artefatos brutos de payload em discoEscaneie logs de acesso HTTP:
yara -r rules/yara/cve_2025_25257_http.yar /var/log/fortiweb/
Escaneie a raiz web em busca de arquivos deixados:
yara -r rules/yara/cve_2025_25257_webshell.yar /var/www/html/
Escaneie PCAP capturado:
yara rules/yara/cve_2025_25257_http.yar capture.pcap
Execute todas as regras recursivamente em um diretório:
yara -r rules/yara/ /path/to/scan/
As consultas KQL estão localizadas em rules/kql/. Cada arquivo visa uma categoria de detecção específica.
As regras Sigma estão em rules/sigma/. Elas podem ser convertidas para qualquer formato de SIEM usando sigma-cli ou pySigma.
Converter para Splunk SPL:
sigma convert -t splunk rules/sigma/cve_2025_25257_sqli.yml
Converter para Elastic EQL:
sigma convert -t elasticsearch rules/sigma/cve_2025_25257_sqli.yml
Na CLI do appliance FortiWeb:
get system status | grep Version
Afetado: 7.0.x a 7.6.0
Corrigido: 7.6.1 e posteriores
Um proxy reverso Nginx básico simulando o endpoint vulnerável pode ser usado para testes de detecção. Nenhuma imagem real do FortiWeb é necessária para validação de detecção baseada em logs.
# Puxe o contêiner do laboratório de teste
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# Envie uma requisição de exploração simulada
curl -k -H "Authorization: Bearer aaa' OR '1'='1" \
https://localhost:8443/api/fabric/device/status
Isso gerará uma entrada de log de acesso correspondente aos padrões de detecção em D-01.
Após enviar a requisição de teste, verifique a saída do log simulado:
docker logs fortiweb-sim | grep "fabric/device/status"
Padrão de entrada de log esperado:
"GET /api/fabric/device/status HTTP/1.1" 401 - "Bearer aaa' OR '1'='1"
Execute a regra YARA contra o log:
yara rules/yara/cve_2025_25257_http.yar /var/log/nginx/access.log
Saída esperada:
CVE_2025_25257_SQLi_AuthHeader /var/log/nginx/access.log
cve-2025-25257-detection/
├── README.md
├── LICENSE
├── .gitignore
├── rules/
│ ├── yara/
│ │ ├── cve_2025_25257_http.yar
│ │ ├── cve_2025_25257_webshell.yar
│ │ └── cve_2025_25257_payload.yar
│ ├── kql/
│ │ ├── 01_web_exploitation.kql
│ │ ├── 02_process_spawn.kql
│ │ ├── 03_command_execution.kql
│ │ ├── 04_file_creation.kql
│ │ ├── 05_persistence.kql
│ │ ├── 06_config_modification.kql
│ │ └── 07_threat_hunting.kql
│ ├── sigma/
│ │ ├── cve_2025_25257_sqli.yml
│ │ └── cve_2025_25257_process_spawn.yml
│ └── splunk/
│ ├── web_exploitation.spl
│ └── process_anomaly.spl
├── docs/
│ ├── iocs.md
│ ├── mitre_attack.md
│ └── false_positive_analysis.md
├── src/
│ ├── poc.py
│ └── lab/
│ └── nginx.conf
└── sysmon/
└── sysmon_config_snippet.xml
Este repositório é fornecido apenas para fins defensivos e educacionais. Todo o conteúdo de detecção tem a intenção de ajudar equipes de segurança a identificar e responder a tentativas de exploração. Não use nenhum conteúdo deste repositório contra sistemas que você não possui ou para os quais não tenha permissão explícita por escrito para testar.
Este projeto está licenciado sob a Licença MIT. Consulte LICENSE para obter detalhes.
| Campo | Detalhe |
|---|
| CVE | CVE-2025-25257 |
| EDB-ID | 52473 |
| Produto | Fortinet FortiWeb |
| Versões Afetadas | 7.0.x a 7.6.x |
| Tipo de Vulnerabilidade | Injeção SQL sem autenticação levando a RCE |
| Vetor de Ataque | Endpoint da API HTTP (não autenticado) |
| Autenticação Necessária | Nenhuma |
| Pontuação CVSS | 9.8 (Crítica) |
| Patch Disponível | Sim, atualize para 7.6.1 ou posterior |
| Publicado | 2026-02-04 |
| Pesquisador | Milad Karimi (Ex3ptionaL) |
| ID | Categoria | Método de Detecção | Fonte | Nível de Cobertura |
|---|
| D-01 | Exploração de Requisição Web | Padrão SQLi no cabeçalho Authorization | Logs Web/Proxy, WAF | Alto |
| D-02 | Exploração de Requisição Web | Requisições para /api/fabric/device/status sem token válido | Logs Web | Alto |
| D-03 | Anomalia de Execução de Processo | Processo shell gerado pelo processo do servidor web | EDR / Sysmon | Alto |
| D-04 | Anomalia de Execução de Processo | sh, bash, python filho de nginx ou httpd | EDR | Alto |
| D-05 | Criação Suspeita de Arquivo | Web shell escrito na raiz web do FortiWeb | EDR / Integridade de Arquivos | Médio |
| D-06 | Criação Suspeita de Arquivo | .php, .jsp, .py inesperados em diretórios web | Monitoramento de Arquivos | Médio |
| D-07 | Mecanismo de Persistência | Modificação de cron job pós-exploração | EDR / Auditd | Médio |
| D-08 | Mecanismo de Persistência | Nova conta de administrador criada via API pós-SQLi | API / Logs de Autenticação | Alto |
| D-09 | Atividade em Contêiner | Processo anormal no namespace do contêiner FortiWeb | Runtime de Contêiner | Médio |
| D-10 | Caça a Ameaças | Desvio de linha de base na taxa de chamadas da API Fabric Connector | SIEM / Analytics | Médio |
| D-11 | Caça a Ameaças | IPs de origem fazendo padrões repetidos de 200/403 para /api/fabric/ | Logs Web | Alto |
| D-12 | Alteração de Configuração | Mudanças nos arquivos de configuração do FortiWeb após requisição web | Integridade de Arquivos / EDR | Alto |
| D-13 | Alteração de Configuração | Escritas inesperadas em /data/ ou /etc/ no appliance | Auditd / EDR | Médio |
| Arquivo | Descrição |
|---|
01_web_exploitation.kql | Padrões de injeção SQL no cabeçalho Authorization |
02_process_spawn.kql | Processos filhos anômalos do servidor web |
03_command_execution.kql | Cadeias suspeitas de execução de comandos |
04_file_creation.kql | Escritas inesperadas de arquivos em diretórios web |
05_persistence.kql | Indicadores de mecanismo de persistência |
06_config_modification.kql | Alteração de arquivos de configuração |
07_threat_hunting.kql | Consulta avançada de caça a ameaças |