
Laboratorio práctico que reproduce CVE-2019-11043 PHP-FPM RCE detrás de nginx, demostrando persistencia mediante túnel inverso, análisis forense de memoria y análisis de tráfico de red.
En octubre de 2019, los investigadores del aviso de seguridad de Debian Emil Lerner y Andrew Danau publicaron un aviso advirtiendo a la comunidad de Debian sobre una vulnerabilidad crítica en PHP-FPM. Debido a la validación insuficiente en el código de manejo de rutas de PHP-FPM, los atacantes podían manipular solicitudes especialmente diseñadas para lograr ejecución remota de código arbitrario bajo ciertas configuraciones de NGINX + PHP-FPM.
Este laboratorio demuestra la explotación de:
Una vulnerabilidad que afecta a PHP-FPM ejecutándose detrás de NGINX que, cuando se activa, puede permitir a los atacantes ejecutar código arbitrario y establecer persistencia mediante túneles inversos.
El proyecto recrea un entorno vulnerable, ejecuta la cadena de explotación y evalúa cómo los adversarios logran persistencia mediante técnicas de tunelización en escenarios del mundo real.
Esta cadena de ataque se alinea directamente con varias técnicas de alto impacto de MITRE ATT&CK:
| MITRE ID | Nombre de la Técnica |
|---|---|
| T1071 | Tunelización de la capa de aplicación |
| T1572 | Tunelización de protocolo |
| T1090 | Proxy / Proxy inverso |
| T1505 | Componentes del lado del servidor (PHP-FPM) |
| T1574 | Secuestro del flujo de ejecución |
La tunelización inversa para persistencia es una TTP (Táctica, Técnica, Procedimiento) de alta frecuencia utilizada por grupos APT, botnets y operadores de ransomware. PHP-FPM sigue estando ampliamente desplegado en entornos de producción, y las malas configuraciones explotadas por CVE-2019-11043 todavía se observan en la naturaleza.
Estas no son abstracciones teóricas: reflejan exactamente los comportamientos documentados en campañas de explotación activa que involucran actores estatales y grupos de ransomware.
Aunque CVE-2019-11043 tiene varios años, la vulnerabilidad sigue siendo relevante debido a las siguientes realidades modernas de seguridad:
Las aplicaciones PHP heredadas siguen estando en todas partes. Muchas organizaciones continúan ejecutando stacks obsoletos de PHP 5.x/7.x debido a dependencias de aplicaciones web a largo plazo, deuda técnica o miedo a romper sistemas en producción. Estos entornos a menudo permanecen sin parchear y vulnerables.
NGINX + PHP-FPM es una de las arquitecturas de alojamiento más comunes a nivel global. Esto hace que las vulnerabilidades en PHP-FPM sean extremadamente atractivas para los atacantes que buscan superficies de explotación grandes y duraderas.
La tunelización inversa es una técnica de persistencia central en las amenazas modernas. Grupos como Lazarus, APT29, FIN11 y numerosos operadores de ransomware utilizan túneles SSH inversos, túneles WebSocket e incluso reverse shells basadas en PHP para mantener acceso a largo plazo sin depender de puertos de entrada expuestos.
Las malas configuraciones siguen siendo la causa #1 de las brechas. Incluso cuando existen parches, los bloques "location" mal configurados de NGINX y las variables PATH_INFO deficientemente validadas continúan exponiendo entornos a la explotación.
Los kits de automatización de exploits todavía apuntan a este CVE. Herramientas como escáneres automatizados, botnets y malware IoT sondean de forma rutinaria configuraciones vulnerables de PHP-FPM porque el exploit resulta en una ejecución de código fiable.
Los entornos cloud están ampliando la superficie de ataque. Contenedores mal asegurados, configuraciones de hosting compartido e imágenes Docker base desactualizadas a menudo contienen versiones de PHP-FPM sin parchear, lo que lleva a un movimiento lateral rápido dentro de las redes cloud.
A los atacantes les encanta la "fruta madura". Una vulnerabilidad que permite ejecución remota de código + persistencia mediante túneles con un mínimo de habilidad requerida siempre seguirá siendo un objetivo de alto valor.
En el panorama actual de amenazas, donde el acceso persistente, la tunelización sigilosa y las debilidades en la cadena de suministro dominan los titulares de ciberseguridad, comprender y demostrar cómo se explota CVE-2019-11043 proporciona una visión crítica sobre los patrones de ataque modernos y las brechas defensivas.
El objetivo de este laboratorio fue simular una explotación del mundo real de CVE‑2019‑11043, una vulnerabilidad crítica de ejecución remota de código que afecta a PHP‑FPM detrás de nginx bajo ciertas configuraciones. La meta fue analizar la vulnerabilidad, reproducir el exploit en un entorno virtual controlado y demostrar los riesgos asociados con infraestructuras web mal configuradas.
Se utilizaron dos máquinas virtuales: ambas con nombre de usuario username y contraseña password.
| Rol | Máquina | Dirección IP | Propósito |
|---|---|---|---|
| Objetivo / Víctima | Ubuntu Server | 192.168.56.102 | Servidor PHP-FPM vulnerable ejecutando CVE-2019-11043 |
| Atacante | Ubuntu Server | 192.168.56.103 | Ejecuta el exploit, la reverse shell y la persistencia |
Actualizar apt
sudo apt update && sudo apt -y upgrade
Creando el contenedor para la explotación de la vulnerabilidad.
sudo apt install -y docker.io docker-compose git
git clone https://github.com/vulhub/vulhub.git
cd vulhub/php/CVE-2019-11043
sudo docker-compose up -d