
Este repositorio proporciona contenido de ingeniería de detección listo para producción para **CVE-2025-25257**, una vulnerabilidad de inyección SQL sin autenticación previa en Fortinet FortiWeb Fabric Connector versiones 7.0 a 7.6.x. La explotación exitosa puede conducir a la ejecución remota de código sin necesidad de autenticación previa.
Este repositorio proporciona contenido de ingeniería de detección listo para producción para CVE-2025-25257, una vulnerabilidad de inyección SQL sin autenticación previa en Fortinet FortiWeb Fabric Connector versiones 7.0 a 7.6.x. La explotación exitosa puede llevar a ejecución remota de código sin ninguna autenticación previa.
Este contenido está destinado solo para uso defensivo. Está dirigido a equipos de Centros de Operaciones de Seguridad (SOC), ingenieros de detección y cazadores de amenazas. No se incluye código de exploit armado.
CVE-2025-25257 afecta al endpoint API /api/fabric/device/status del Fabric Connector en FortiWeb. La cabecera Authorization se pasa directamente a una consulta SQL sin desinfección. Un atacante no autenticado puede inyectar sintaxis SQL en el valor del token Bearer para manipular la consulta subyacente, eludir la autenticación y, en ciertas configuraciones, lograr Ejecución Remota de Código mediante apilamiento de comandos basado en SQL o primitivas de escritura de archivos.
La vulnerabilidad es explotable a través de la red sin credenciales. Es trivialmente detectable en los registros de acceso HTTP si la recopilación de registros está implementada.
El atacante envía una solicitud HTTP GET manipulada al API del Fabric Connector. El token Bearer en la cabecera Authorization contiene SQL inyectado. Ejemplo de patrón:
Authorization: Bearer aaa' OR '1'='1
Esto provoca que la consulta SQL del backend se evalúe como verdadera, eludiendo la validación del token. La explotación adicional puede implicar inyección basada en UNION para leer datos o consultas apiladas para escribir archivos o ejecutar comandos del sistema operativo, dependiendo de la configuración y privilegios de la base de datos.
Lo siguiente está documentado únicamente con fines de validación de reglas de detección.
GET /api/fabric/device/status HTTP/1.1
Host: <fortiweb-ip>
Authorization: Bearer aaa' OR '1'='1
Las reglas de detección en este repositorio están ajustadas para identificar este y otros patrones de inyección similares en registros HTTP y tráfico de red.
Las reglas YARA se encuentran en rules/yara/.
cve_2025_25257_http.yar - Detecta patrones de explotación en archivos de registro HTTP y tráfico capturadocve_2025_25257_webshell.yar - Detecta web shells que podrían haberse colocado después de la explotacióncve_2025_25257_payload.yar - Detecta artefactos de payload en discoEscanear registros de acceso HTTP:
yara -r rules/yara/cve_2025_25257_http.yar /var/log/fortiweb/
Escanear la raíz web en busca de archivos colocados:
yara -r rules/yara/cve_2025_25257_webshell.yar /var/www/html/
Escanear PCAP capturado:
yara rules/yara/cve_2025_25257_http.yar capture.pcap
Ejecutar todas las reglas de forma recursiva en un directorio:
yara -r rules/yara/ /path/to/scan/
Las consultas KQL se encuentran en rules/kql/. Cada archivo está dirigido a una categoría de detección específica.
Las reglas Sigma están en rules/sigma/. Se pueden convertir a cualquier formato SIEM usando sigma-cli o pySigma.
Convertir a Splunk SPL:
sigma convert -t splunk rules/sigma/cve_2025_25257_sqli.yml
Convertir a Elastic EQL:
sigma convert -t elasticsearch rules/sigma/cve_2025_25257_sqli.yml
En la CLI del appliance FortiWeb:
get system status | grep Version
Afectadas: 7.0.x hasta 7.6.0
Parcheada: 7.6.1 y posteriores
Se puede utilizar un proxy inverso Nginx básico que simule el endpoint vulnerable para realizar pruebas de detección. No se requiere una imagen real de FortiWeb para la validación de detección basada en registros.
# Descargar el contenedor del laboratorio de prueba
docker run -d \
--name fortiweb-sim \
-p 8443:443 \
-v $(pwd)/src/lab/nginx.conf:/etc/nginx/nginx.conf:ro \
nginx:alpine
# Enviar una solicitud de explotación simulada
curl -k -H "Authorization: Bearer aaa' OR '1'='1" \
https://localhost:8443/api/fabric/device/status
Esto generará una entrada en el registro de acceso que coincide con los patrones de detección en D-01.
Después de enviar la solicitud de prueba, verifique la salida del registro simulado:
docker logs fortiweb-sim | grep "fabric/device/status"
Patrón de entrada de registro esperado:
"GET /api/fabric/device/status HTTP/1.1" 401 - "Bearer aaa' OR '1'='1"
Ejecute la regla YARA contra el registro:
yara rules/yara/cve_2025_25257_http.yar /var/log/nginx/access.log
Salida 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 repositorio se proporciona únicamente con fines defensivos y educativos. Todo el contenido de detección está destinado a ayudar a los equipos de seguridad a identificar y responder a intentos de explotación. No utilice ningún contenido de este repositorio contra sistemas que no sean de su propiedad o para los cuales no tenga permiso explícito por escrito para realizar pruebas.
Este proyecto está licenciado bajo la Licencia MIT. Consulte LICENSE para más detalles.
| Campo | Detalle |
|---|
| CVE | CVE-2025-25257 |
| EDB-ID | 52473 |
| Producto | Fortinet FortiWeb |
| Versiones Afectadas | 7.0.x a 7.6.x |
| Tipo de Vulnerabilidad | Inyección SQL sin autenticación previa que lleva a RCE |
| Vector de Ataque | Endpoint API HTTP (sin autenticación) |
| Autenticación Requerida | Ninguna |
| Puntuación CVSS | 9.8 (Crítico) |
| Parche Disponible | Sí, actualizar a 7.6.1 o posterior |
| Publicado | 2026-02-04 |
| Investigador | Milad Karimi (Ex3ptionaL) |
| ID | Categoría | Método de Detección | Fuente | Nivel de Cobertura |
|---|
| D-01 | Explotación de Solicitud Web | Patrón de SQLi en cabecera Authorization | Registros Web/Proxy, WAF | Alto |
| D-02 | Explotación de Solicitud Web | Solicitudes a /api/fabric/device/status sin token válido | Registros Web | Alto |
| D-03 | Anomalía de Ejecución de Procesos | Proceso shell generado por el proceso del servidor web | EDR / Sysmon | Alto |
| D-04 | Anomalía de Ejecución de Procesos | sh, bash, python como hijo de nginx o httpd | EDR | Alto |
| D-05 | Creación Sospechosa de Archivos | Web shell escrita en la raíz web de FortiWeb | EDR / Integridad de Archivos | Medio |
| D-06 | Creación Sospechosa de Archivos | .php, .jsp, .py inesperados en directorios web | Monitorización de Archivos | Medio |
| D-07 | Mecanismo de Persistencia | Modificación de tareas cron posterior a la explotación | EDR / Auditd | Medio |
| D-08 | Mecanismo de Persistencia | Nueva cuenta de administrador creada vía API post-SQLi | Registros API / Autenticación | Alto |
| D-09 | Actividad en Contenedor | Proceso anómalo en el namespace del contenedor FortiWeb | Tiempo de Ejecución de Contenedores | Medio |
| D-10 | Caza de Amenazas | Desviación de la línea base en la tasa de llamadas al API del Fabric Connector | SIEM / Analítica | Medio |
| D-11 | Caza de Amenazas | IPs de origen que realizan patrones repetidos de 200/403 a /api/fabric/ | Registros Web | Alto |
| D-12 | Manipulación de Configuración | Cambios en archivos de configuración de FortiWeb después de una solicitud web | Integridad de Archivos / EDR | Alto |
| D-13 | Manipulación de Configuración | Escrituras inesperadas en /data/ o /etc/ en el appliance | Auditd / EDR | Medio |
| Archivo | Descripción |
|---|
01_web_exploitation.kql | Patrones de inyección SQL en cabecera Authorization |
02_process_spawn.kql | Procesos hijos anómalos del servidor web |
03_command_execution.kql | Cadenas de ejecución de comandos sospechosas |
04_file_creation.kql | Escrituras inesperadas de archivos en directorios web |
05_persistence.kql | Indicadores de mecanismos de persistencia |
06_config_modification.kql | Manipulación de archivos de configuración |
07_threat_hunting.kql | Consulta avanzada de caza de amenazas |