Probador de Vulnerabilidad CVE-2025-25257 de Fortinet FortiWeb
Descripción
Este script de PowerShell está diseñado únicamente para pruebas de penetración autorizadas. Prueba los dispositivos Fortinet FortiWeb para CVE-2025-25257, una vulnerabilidad de inyección SQL no autenticada en el endpoint /api/fabric/device/status.
El script:
Ignora los errores de certificado TLS para entornos de prueba.
Acepta un único objetivo (IP/DNS con puerto opcional) o una lista de objetivos desde un archivo.
Si no se especifica un puerto, escanea los puertos comunes: 541, 443, 10443, 8443, 4433.
Envía una solicitud HTTP HEAD para comprobar la accesibilidad del endpoint.
Si es accesible, envía una solicitud GET con un payload de inyección SQL en la cabecera Authorization para probar la vulnerabilidad.
Aviso importante:
Esta herramienta está destinada únicamente a un uso ético y autorizado en escenarios de pruebas de penetración o evaluación de vulnerabilidades. El uso no autorizado puede violar leyes como la Computer Fraud and Abuse Act (CFAA) o regulaciones equivalentes en su jurisdicción. Asegúrese de tener permiso explícito del propietario del objetivo antes de ejecutar este script. El autor no asume ninguna responsabilidad por el uso indebido.
Requisitos
PowerShell 5.1 o posterior (compatible con Windows PowerShell o PowerShell Core).
Pueden requerirse privilegios administrativos dependiendo de su entorno.
No se necesitan módulos adicionales; utiliza el Invoke-WebRequest integrado.
Ejecute el script desde PowerShell con una de las siguientes opciones:
Objetivo único
Especifique una única IP o nombre DNS, opcionalmente con un puerto (por ejemplo, 192.168.1.1:443).
root@kitploit:~
.\script.ps1 -Target "192.168.1.1:443"
O sin puerto (escanea los puertos predeterminados):
root@kitploit:~
.\script.ps1 -Target "example.com"
Archivo de entrada
Proporcione un archivo de texto con un objetivo por línea (por ejemplo, targets.txt).
root@kitploit:~
.\script.ps1 -InputFile "targets.txt"
Ejemplo de contenido de targets.txt:
root@kitploit:~
192.168.1.1:443
example.com
10.0.0.1
Salida
El script mostrará los resultados para cada objetivo y puerto, incluyendo:
Comprobación de accesibilidad (solicitud HEAD).
Resultados de la prueba de vulnerabilidad (solicitud GET con payload).
Estado y contenido de la respuesta si corresponde.
Ejemplo de salida:
root@kitploit:~
Testing https://192.168.1.1:443/api/fabric/device/status for CVE-2025-25257
Endpoint accessible (HEAD 200 OK). Proceeding with GET request for vulnerability test.
GET Response Status: 200
Potential vulnerability detected (200 OK with payload). Check content for confirmation.
GET Response Content: {"devices": [...]}
Cómo funciona
Ignorar TLS: Configura PowerShell para omitir la validación de certificados durante las pruebas.
Análisis de objetivos: Gestiona objetivos únicos o entradas de archivos, analizando los puertos opcionales.
Escaneo de puertos: Prueba los puertos predefinidos si no se especifica ninguno.
Solicitud HEAD: Comprueba si el endpoint es accesible.
Solicitud GET con payload: Utiliza una prueba de inyección SQL en la cabecera Authorization (Bearer AAAAAA'or'1'='1).
Indicación de vulnerabilidad: Una respuesta 200 OK con el payload puede indicar vulnerabilidad; se recomienda la verificación manual.
Limitaciones
Es un probador básico de prueba de concepto y no explota la vulnerabilidad; solo prueba la posible exposición.
Puede haber falsos positivos/negativos; confirme siempre con los avisos oficiales de Fortinet.
No admite HTTP (solo HTTPS).
Tiempo de espera establecido en 10 segundos por solicitud.
Contribuciones
¡Las contribuciones son bienvenidas! Haga un fork del repositorio y envíe una pull request con mejoras, correcciones de errores o funciones adicionales.
Licencia
Este proyecto está bajo la Licencia MIT; consulte el archivo LICENSE para más detalles.
Referencias
Detalles de CVE-2025-25257: NIST NVD (marcador de posición; reemplácelo con el enlace real si está disponible).