
herramienta Go y plantilla de Nuclei para probar el 'HTTP/1.1 debe morir: el final del desync' de James Kettle (CVE-2025-32094)
Este repositorio contiene herramientas de seguridad defensiva para detectar vulnerabilidades de contrabando de solicitudes (desync) HTTP/1 basadas en la innovadora investigación de James Kettle de PortSwigger.
Este trabajo está directamente inspirado en e implementa técnicas de:
Los patrones de ataque, técnicas y métodos de detección implementados en estas herramientas se basan en el trabajo pionero de James Kettle que reveló fallas fundamentales en la implementación del protocolo HTTP/1.1 en los principales proveedores de infraestructura web.
La investigación de James Kettle demostró vulnerabilidades que afectaban a:
Las definiciones ambiguas de los límites de las solicitudes en HTTP/1.1 crean lo que James Kettle denominó "ambigüedad extrema" sobre dónde comienzan y terminan las solicitudes. Esto lleva a discrepancias en el análisis sintáctico entre servidores front-end y back-end, permitiendo ataques sofisticados de contrabando de solicitudes. Estas herramientas ayudan a identificar dichas vulnerabilidades para realizar pruebas de seguridad defensiva.
http1-desync-test.go)Un completo probador de vulnerabilidades de desync HTTP/1 que implementa múltiples patrones de ataque.
# Clonar el repositorio
git clone https://github.com/nconsolo/echteeteepee.git
cd echteeteepee
# Instalar dependencias
go mod download
# Compilar la herramienta
go build -o http1-desync-test http1-desync-test.go
# Probar todos los patrones de ataque
./http1-desync-test -target https://example.com
# Probar un patrón de ataque específico
./http1-desync-test -target https://example.com -test vh
# Habilitar salida detallada
./http1-desync-test -target https://example.com -verbose
# Establecer tiempo de espera personalizado
./http1-desync-test -target https://example.com -timeout 10s
-target: URL objetivo (requerido)-test: Tipo de prueba: all, vh, 0cl, expect, double, clte (por defecto: all)-timeout: Tiempo de espera de la solicitud (por defecto: 5s)-verbose: Habilitar salida detallada para ver solicitudes/respuestas sin procesarnuclei-templates/http1-desync.yaml)Plantilla de escaneo automatizado para Nuclei para detectar vulnerabilidades de desync HTTP/1 a gran escala.
# Instalar Nuclei (si aún no está instalado)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Copiar la plantilla al directorio de plantillas de Nuclei
cp nuclei-templates/http1-desync.yaml ~/.nuclei-templates/
# Escanear un único objetivo
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml
# Escanear múltiples objetivos
nuclei -l targets.txt -t nuclei-templates/http1-desync.yaml
# Escanear con limitación de velocidad
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml -rl 10
Todos los patrones de ataque se basan en los hallazgos de la investigación de James Kettle y técnicas de explotación probadas.
Fuente: Investigación de James Kettle "HTTP/1 Must Die" Explota discrepancias donde el proxy front-end ve un límite de solicitud mientras que el servidor back-end ve otro. El payload del ataque incrusta una solicitud oculta dentro de lo que parece ser datos de cabecera para el front-end, pero es interpretado como una solicitud separada por el back-end.
Ejemplo de la investigación: Utilizado para demostrar diferencias en el análisis sintáctico en los principales proveedores de CDN.
Fuente: Hallazgos de vulnerabilidades de James Kettle en IIS y T-Mobile
Aprovecha las diferentes interpretaciones de las cabeceras Content-Length: 0 entre servidores. Algunos servidores ignoran el cuerpo cuando CL=0, mientras que otros aún lo procesan, lo que lleva a confusión en los límites de las solicitudes.
Impacto en el mundo real: Explotado con éxito contra servidores IIS y la infraestructura de T-Mobile.
Fuente: Investigación de James Kettle sobre T-Mobile y LastPass
Explota el mecanismo Expect: 100-continue donde el front-end y el back-end manejan la continuación de manera diferente. Esto crea oportunidades para contrabandear solicitudes mientras el front-end espera una respuesta 100-continue.
Contexto de la investigación: Demostrado contra los sistemas de autenticación de T-Mobile y LastPass.
Fuente: Metodología avanzada de desync de James Kettle Encadena múltiples ataques de desync para envenenar la cola de respuestas, permitiendo a los atacantes controlar qué respuestas reciben otros usuarios. Esto representa uno de los ataques más sofisticados de la investigación.
Hallazgo crítico: Permite la toma completa del sitio al servir respuestas maliciosas a usuarios legítimos.
Fuente: Investigación central sobre ambigüedad HTTP/1.1 por James Kettle
Explota conflictos entre las cabeceras Content-Length y Transfer-Encoding: chunked. Diferentes servidores priorizan estas cabeceras de manera diferente, creando discrepancias en el análisis sintáctico que permiten el contrabando de solicitudes.
Fundamento: Estos conflictos representan la falla fundamental que James Kettle identificó en la especificación HTTP/1.1.
Basados en la metodología de investigación de James Kettle, las herramientas buscan:
Siguiendo la clasificación de impacto de James Kettle:
Estas herramientas están diseñadas para:
NO utilice estas herramientas:
Siguiendo la metodología de James Kettle, las herramientas mantienen conexiones HTTP/1.1 persistentes para probar adecuadamente las condiciones de desync. Cada prueba crea una única conexión TCP y envía múltiples solicitudes para observar diferencias en el análisis sintáctico.
Los payloads de ataque se elaboran cuidadosamente basándose en los patrones exactos que James Kettle utilizó en su investigación, asegurando la compatibilidad con los comportamientos del servidor que documentó.
La lógica de detección implementa los mismos indicadores que James Kettle utilizó para identificar ataques de desync exitosos durante su investigación de recompensas por errores de más de $350,000.
Basados en los hallazgos y recomendaciones de James Kettle:
Licencia MIT - Consulte el archivo LICENSE para obtener más detalles
Estas herramientas se proporcionan únicamente con fines educativos y de seguridad defensiva. Los usuarios son responsables de asegurarse de tener la autorización adecuada antes de probar cualquier sistema. Los autores no asumen ninguna responsabilidad por el mal uso o los daños causados por estas herramientas.