Web/VPN Server Spawning Shell (Fortinet CVE-2025)
Detects web server or VPN processes spawning shells or command interpreters, indicative of active RCE exploitation such as CVE-2025-59718/CVE-2025-59719 on internet-facing Fortinet devices
Vulnerabilityrcefortinetwebshellcve-2025process-spawnT1190T1059.004
FDR Beginnerby CQL Hub 1 min read
Query
#repo="base_sensor" #event_simpleName=ProcessRollup2
| ParentBaseFileName=/(?i)(httpd|nginx|apache2|httpsd|sslvpnd|fortid)/
| FileName=/(?i)(bash|sh|cmd\.exe|powershell\.exe|python[23]?|perl|wget|curl)/
| groupBy([ComputerName, ParentBaseFileName, FileName, CommandLine])
| sort(@timestamp, limit=50)Explanation
| Pipe | Descripción | |||||||
|---|---|---|---|---|---|---|---|---|
#repo="base_sensor" #event_simpleName=ProcessRollup2 | Filtra eventos de creacion de procesos desde el repositorio FDR (sensor base) | |||||||
| `ParentBaseFileName=/(?i)(httpd\ | nginx\ | apache2\ | httpsd\ | sslvpnd\ | fortid)/` | Proceso padre debe ser un servidor web o demonio VPN Fortinet — contexto de explotacion web | ||
| `FileName=/(?i)(bash\ | sh\ | cmd\.exe\ | powershell\.exe\ | python[23]?\ | perl\ | wget\ | curl)/` | Proceso hijo es un interprete de comandos o herramienta de descarga — siempre anomalo para un servicio web |
groupBy([ComputerName, ParentBaseFileName, FileName, CommandLine]) | Agrupa resultados eliminando duplicados y mostrando combinaciones unicas de proceso padre-hijo | |||||||
sort(@timestamp, limit=50) | Ordena por tiempo mostrando los 50 eventos mas recientes para respuesta rapida |
Adjustable Variables
ParentBaseFileName: ampliar con nombres especificos del entorno (ej: tomcat, jboss, wsgi). FileName: agregar interpretes adicionales como ruby, php si procede. Ajustar limit a 200+ para caza historica amplia.