Un laboratorio práctico que investiga CVE-2025-39507 desde la perspectiva de un analista SOC de Nivel 1. Incluye revisión de registros en Microsoft Sentinel, análisis de IP, capturas de pantalla reales y un desglose simple de una vulnerabilidad de inclusión de archivos locales en un plugin de WordPress.
Es un lunes cualquiera. Estoy conectado al panel del SOC, revisando alertas como de costumbre. Una capta mi atención:
ALERTA: Posible Intento de Inclusión Local de Archivos (LFI)
Dirección IP: 203.0.113.44
URL:/index.php?file=../../../../etc/passwd
User Agent: curl/7.81.0
Parece que alguien está intentando acceder a archivos del sistema manipulando una URL. Mi trabajo es investigarlo y decidir si esto necesita escalarse.
Después de una investigación rápida, descubrí que esto coincide con una vulnerabilidad conocida: CVE-2025-39507. Afecta a un plugin de WordPress llamado Nasa Core (versión 6.3.2 y anteriores). Permite a atacantes ver archivos sensibles en el servidor modificando un parámetro de entrada de archivo.
Ejemplo:
/index.php?file=../../../../etc/passwd
Si el plugin no valida correctamente la entrada del archivo, simplemente seguirá la ruta que el atacante le proporcione.
No escribí la regla de detección, pero la revisé para entender qué disparó la alerta. Busca cosas como:
/etc/passwd o /wp-config.phpAquí hay una versión simplificada de la regla:
CommonSecurityLog
| where RequestURL has "../"
or RequestURL has "etc/passwd"
or RequestURL has "wp-config"
| where DeviceCustomString1 contains "curl" or DeviceCustomString1 contains "python"
| project TimeGenerated, SourceIP, RequestURL, DeviceCustomString1
Ejecuté una consulta para ver si la IP 203.0.113.44 estaba intentando algo más:
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize count() by RequestURL
Resulta que también accedió a otras rutas como /admin/, /login.php y /wp-config.php. Eso me indicó que no era solo una solicitud única... probablemente era un escáner o alguien haciendo reconocimiento.
Verifiqué cuánto tiempo había estado activa la IP en nuestros registros:
CommonSecurityLog
| where SourceIP == "203.0.113.44"
| summarize FirstSeen=min(TimeGenerated), LastSeen=max(TimeGenerated)
Comenzó hace unas horas y aún estaba activa recientemente. Así que no era ruido histórico — esto estaba en curso.
Así lo documenté para la escalación:
“Posible escaneo LFI desde la IP 203.0.113.44. El patrón de solicitudes coincide con CVE-2025-39507. La IP accedió a 9 rutas únicas, incluyendo /etc/passwd y wp-config.php usando curl. El comportamiento sugiere reconocimiento automatizado. Se recomienda revisión por Nivel 2 y posible bloqueo de IP.”
| # | Descripción | Archivo |
|---|---|---|
| 1 | Listado del CVE (Patchstack) | 1_cve_selection_listing.png |
| 2 | Resumen de Patchstack | 2_patchstack_cve_overview.png |
| 3 | Ejemplo de Vector VulDB | 3_vuldb_exploit_vector.png |
| 4 | Máquina Virtual Kali en Azure Creada | 4_kali_vm_deployed.png |
| 5 | Captura de VM en Ejecución | 5_kali_vm_running_status.png |
| 6 | Acceso SSH a Kali | 6_kali_vm_logged_in.png |
| 7 | Revisión de Regla KQL en Sentinel | 7_lfi_detection_kql_query.png |
Todas las capturas están ubicadas en la carpeta /screenshots.
Algunas preguntas que me hice mientras trabajaba en esto:
A continuación, ejecutaré una simulación segura de este ataque en un entorno de laboratorio controlado usando una plataforma como TryHackMe. El objetivo es comprender mejor cómo se ve este tipo de actividad desde el lado del atacante — y qué tipo de registros genera.
P.D. Este laboratorio se realizó en un entorno ético y seguro con fines de capacitación únicamente. No se atacaron ni dañaron sistemas reales. Siempre siga las reglas de su organización y nunca pruebe exploits en sistemas que no posea o tenga permiso para probar.