Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
http2-rst-stream-attacker — Herramienta altamente configurable para verificar la vulnerabilidad de un servidor contra CVE-2023-44487 mediante el envío rápido de tramas HEADERS y RST_STREAM y documentando las respuestas del servidor. | Kitploit
Herramientas/GitHubGitHub/ndrscodes/http2-rst-stream-attacker
Análisis de VulnerabilidadesExplotaciónSeguridad WebPruebas de Penetración
GitHubndrscodes/http2-rst-stream-attacker

http2-rst-stream-attacker

Herramienta altamente configurable para verificar la vulnerabilidad de un servidor contra CVE-2023-44487 mediante el envío rápido de tramas HEADERS y RST_STREAM y documentando las respuestas del servidor.

Ver Repositorio
621hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2023-44487 y http2-rst-stream-attacker

CVE-2023-44487

CVE-2023-44487 es un exploit contra el propio protocolo HTTP2. En HTTP2, las solicitudes de datos se inician enviando un frame HEADERS. Tras recibir este frame, un servidor comenzará a procesar tu solicitud, enviando posteriormente frames DATA hasta que todos los datos sean transmitidos. HTTP2 también especifica un frame RST_STREAM, que puede utilizarse para cerrar un stream en cualquier punto. Para prevenir ataques, los servidores suelen limitar la cantidad máxima de streams abiertos concurrentemente (a 100 por defecto). Si los clientes esperan realmente a que todos los recursos se consuman, este límite rara vez se alcanza. El ataque funciona por una razón simple: un cliente puede enviar un frame RST_STREAM en cualquier punto. Un frame RST_STREAM cierra un stream, y los streams cerrados no se cuentan como stream concurrente. Esto significa que un cliente puede enviar solicitudes rápidamente, sin alcanzar nunca este límite, simplemente cerrando una conexión inmediatamente después de enviar una solicitud. El servidor atacado, en algunos casos, aún comenzará a cargar los datos, generando una carga excesiva.

Esta herramienta tiene como objetivo comprobar la vulnerabilidad de un servidor a este ataque. Establece una o más conexiones HTTP2 concurrentes y posteriormente envía los números especificados de frames HEADER, seguidos de frames RST_STREAM.

También proporciona numerosas opciones de configuración adicionales, como el retardo entre frames HEADERS y RST_STREAM, el número de streams a abrir, la cantidad de frames a enviar por stream, etc.

Una vez completado el ataque, imprime un resumen que contiene información sobre el número de frames recibidos, así como el número de errores y frames GOAWAY recibidos. Esto puede ayudarte a identificar si tus servicios son vulnerables a CVE-2023-44487.

Ejecución

Por ahora, esta herramienta se distribuye únicamente como código fuente, lo que significa que se requiere una instalación de Go. La herramienta se puede ejecutar ejecutando . También hay un script de Python que se puede usar para graficar la información de latencia escrita en el archivo .

go run main.go <options>
monitor.log

Herramientas

Además, creé una nueva herramienta en Python para mediciones más precisas y extensas. El archivo runner.py ubicado en la carpeta tooling leerá los valores definidos en tu config.py (consulta config-sample.py para más detalles) y ejecutará todas las pruebas para todos los contenedores Docker definidos. Luego ejecutará la prueba más exitosa (mediana + media de latencia más altas) para todas las rutas definidas en el array paths. Generará gráficos y archivos de registro para cada prueba ejecutada. Esta herramienta aún está en desarrollo. Solo la creé porque me daba pereza ejecutar todas estas pruebas manualmente para nuestro artículo de investigación. No dudes en enviar un PR para limpiarlo o hacerlo realmente utilizable para algo más que nuestro caso de uso.

Banderas de CLI

Actualmente, están implementadas las siguientes opciones de CLI:

BanderasPor defectoSignificado
frames1el número de frames HEADERS y RST_STREAM a enviar en cualquier stream
connections1el número de conexiones TLS en las que ejecutar el ataque (concurrentemente)
consecutiveSends1número de frames HEADERS a enviar antes de enviar frames RST_STREAM (por flujo)
connectAttempts1número de conexiones consecutivas para ejecutar la prueba (por rutina de conexión)
delay0el tiempo (en ms) a esperar entre enviar frames HEADERS y RST_STREAM
ignoreGoAwayfalsesi es true, los streams GOAWAY no provocarán que la rutina receptora termine. En su lugar, esperará hasta que no se haya recibido ningún frame durante más de 10 segundos.
monitorfalsehabilitar monitoreo de rendimiento
monitorDelay100el tiempo (en ms) a esperar entre pruebas de latencia de respuesta
monitorLog./monitor.logel archivo para escribir los registros de retardo del monitor
routines1el número de streams a atacar
skipValidationtruesi es true, el certificado del servidor no se validará (este es el valor predeterminado; no nos importa la seguridad ya que somos los atacantes de todos modos)
timeout1000tiempo de espera para nuevos frames antes de considerar el intento de conexión como inválido y detenerlo
urlhttps://localhost:433/la URL contra la que ejecutar el ataque

Ejemplo de salida

La herramienta imprimirá mucha información de depuración, así como un resumen. La información de depuración contiene información sobre la forma en que se estableció la conexión y sobre el progreso actual y el tipo de frames que se están enviando actualmente.

El resumen se verá algo así (dependiendo de tu configuración)

root@kitploit:~
####################SUMMARY####################
Packet types received:
	PING: 2
	HEADERS: 12
	SETTINGS: 0
	DATA: 11
	GOAWAY: 3
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
Attack ending reasons (per receiving thread):
	GoAway events: 3
	Timeout events: 0
	Error events: 0
Summary for connection 2
	PING: 1
	HEADERS: 9
	SETTINGS: 0
	DATA: 6
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 1
	PING: 1
	HEADERS: 3
	SETTINGS: 0
	DATA: 5
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.
Summary for connection 0
	PING: 0
	HEADERS: 0
	SETTINGS: 0
	DATA: 0
	GOAWAY: 1
	RSTSTREAM: 0
	WINDOWUPDATE: 0
	UNKNOWN: 0
	Reason for stopping to listen for more packets: GoAway - the server responded as expected.

Si crees que hay otras estadísticas que deben recopilarse, no dudes en contactarme o crear un issue.

POR HACER

  • calcular el retardo promedio entre enviar HEADERS y recibir el primer frame para esta solicitud
  • calcular el retardo promedio entre enviar HEADERS y recibir frames GOAWAY, si los hay
  • calcular el porcentaje de conexiones a las que el servidor respondió correctamente
  • calcular el porcentaje de streams a los que el servidor respondió correctamente (por conexión y en total)
  • incluir la cantidad de paquetes enviados en el resumen

DESCARGO DE RESPONSABILIDAD

Esta herramienta está diseñada SOLO para fines de investigación. No está destinada a ejecutar ataques contra servidores que no sean de tu propiedad o que no administres. No me responsabilizo por la precisión de las estadísticas proporcionadas, ni por los ataques y sus consecuencias para servidores y servicios.

Descargar herramienta