Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2019-9511_Priority-Churn-Data-Dribble — Sondas HTTP/2 leves para validação controlada dos vetores DoS CVE-2019-9511 (Data Dribble) e CVE-2019-9513 (Priority Churn) em ambientes autorizados. | Kitploit
Ferramentas/GitHubGitHub/harley-ghostie/cve-2019-9511_priority-churn-data-dribble
Análise de VulnerabilidadesExploraçãoSegurança WebSegurança de RedeTestes de Penetração
GitHubharley-ghostie/cve-2019-9511_priority-churn-data-dribble

CVE-2019-9511_Priority-Churn-Data-Dribble

Sondas HTTP/2 leves para validação controlada dos vetores DoS CVE-2019-9511 (Data Dribble) e CVE-2019-9513 (Priority Churn) em ambientes autorizados.

Ver Repositório
há 4 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

HTTP/2 CVE-2019-9511 & CVE-2019-9513 Lightweight Probes

Repositório com scripts de validação controlada para comportamentos associados às CVEs CVE-2019-9511 e CVE-2019-9513, ambas relacionadas a vetores de negação de serviço em implementações HTTP/2.

Os scripts foram criados para apoiar validações técnicas em ambientes autorizados, permitindo observar se o servidor negocia HTTP/2 e responde a padrões específicos relacionados a Data Dribble e Priority Churn, sem executar ataque de negação de serviço.

A proposta é comprovar o vetor de forma leve e segura, com baixo volume de requisições e sem objetivo de indisponibilizar o ambiente.


CVEs contempladas

CVENomeScriptDescrição
CVE-2019-9511HTTP/2 Data Dribbledata_dribble_probe.pyValida comportamento de controle de fluxo HTTP/2 liberando pequenos volumes de dados de forma controlada.
CVE-2019-9513HTTP/2 Priority Churn / Resource Looppriority_churn_probe.pyValida comportamento de processamento de frames PRIORITY em baixa intensidade.

Resumo das vulnerabilidades

CVE-2019-9511 — HTTP/2 Data Dribble

A CVE-2019-9511, conhecida como HTTP/2 Data Dribble, afeta algumas implementações de HTTP/2 que não tratam de forma eficiente a manipulação da janela de fluxo e da entrega gradual de dados.

Nesse cenário, um atacante pode solicitar dados ao servidor e manipular o controle de fluxo para fazer com que a resposta seja mantida aberta e entregue em pequenos blocos, como pacotes de 1 byte. Dependendo da implementação, esse comportamento pode gerar consumo excessivo de CPU, memória ou recursos de conexão, resultando em risco de negação de serviço.

Neste repositório, o script relacionado é:

root@kitploit:~
data_dribble_probe.py

O objetivo do script é validar o comportamento de forma leve, sem gerar carga agressiva e sem tentar causar indisponibilidade.

Referências:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9511
  • https://www.cve.org/CVERecord?id=CVE-2019-9511
  • https://ubuntu.com/security/CVE-2019-9511

CVE-2019-9513 — HTTP/2 Priority Churn / Resource Loop

A CVE-2019-9513, conhecida como HTTP/2 Priority Churn ou Resource Loop, afeta algumas implementações de HTTP/2 que processam alterações contínuas na árvore de prioridade dos streams de forma custosa.

Nesse cenário, um atacante pode criar múltiplos streams e alterar repetidamente a prioridade entre eles, causando churn na árvore de prioridades. Dependendo da implementação, esse comportamento pode gerar consumo excessivo de CPU e levar à negação de serviço.

Neste repositório, o script relacionado é:

root@kitploit:~
priority_churn_probe.py

O objetivo do script é validar se o servidor aceita e processa frames PRIORITY, usando baixa intensidade e sem executar um ataque de DoS.

Referências:

  • https://nvd.nist.gov/vuln/detail/CVE-2019-9513
  • https://www.cve.org/CVERecord?id=CVE-2019-9513
  • https://ubuntu.com/security/CVE-2019-9513

Observação sobre versões afetadas

As CVEs CVE-2019-9511 e CVE-2019-9513 não estão associadas a uma única versão específica de servidor web, como apenas nginx, Apache ou Tomcat.

Elas afetam determinadas implementações HTTP/2 em diferentes produtos, bibliotecas, proxies, balanceadores e servidores. Por isso, a validação deve considerar qual componente está negociando e processando HTTP/2 no ambiente analisado.

Exemplos de componentes que podem estar envolvidos:

root@kitploit:~
nginx
Apache HTTP Server
Envoy
HAProxy
Tomcat
Jetty
Node.js
Go net/http2
nghttp2
CDN
WAF
Load Balancer
Ingress Controller Kubernetes

O primeiro critério técnico é confirmar se o serviço negocia HTTP/2 via ALPN. Caso o serviço não negocie h2, estes scripts não são aplicáveis.

A confirmação de vulnerabilidade por versão deve ser feita com base no advisory oficial do fabricante do componente identificado.


Pré-validação: verificar suporte a HTTP/2

Antes de executar os scripts, valide se o alvo negocia HTTP/2 via ALPN.

Use somente o domínio no comando, sem https://.

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

Também é possível usar com placeholder:

root@kitploit:~
openssl s_client -alpn h2 -connect <HOST>:443 </dev/null 2>/dev/null | grep -i "ALPN"

Saída esperada:

root@kitploit:~
ALPN protocol: h2

Se a saída indicar h2, o serviço negocia HTTP/2 e os scripts podem ser aplicáveis.

Se não houver retorno ou o protocolo negociado for outro, como http/1.1, os scripts não são aplicáveis para aquele endpoint.

Visão geral dos scripts

ScriptCVE relacionadaObjetivoQuando usar
data_dribble_probe.pyCVE-2019-9511Validar comportamento associado ao Data Dribble usando controle de janela para liberar pequenos blocos de dadosUsar quando o servidor suporta HTTP/2 e há necessidade de verificar comportamento de entrega de DATA frames com janela reduzida.
priority_churn_probe.pyCVE-2019-9513Validar comportamento associado ao Priority Churn usando frames PRIORITY em baixa intensidadeUsar quando o servidor suporta HTTP/2 e há necessidade de verificar se ele processa alterações de prioridade de streams.

Fluxo recomendado de uso

A ordem mais lógica para utilização dos scripts é:

root@kitploit:~
1. Pré-validação HTTP/2 com openssl
   ↓
2. priority_churn_probe.py
   ↓
3. data_dribble_probe.py

Explicação rápida do fluxo

Primeiro, use o comando com openssl para confirmar se o alvo negocia HTTP/2. Depois, use o priority_churn_probe.py para validar se o servidor aceita e processa frames de prioridade. Em seguida, use o data_dribble_probe.py para observar o comportamento do servidor diante de uma janela de fluxo reduzida, liberando pequenos volumes de dados de forma controlada.

Ambos os scripts são probes leves. Eles não têm como objetivo causar indisponibilidade, mas sim gerar uma evidência técnica do comportamento observado.


Scripts

priority_churn_probe.py

Descrição

O priority_churn_probe.py é uma PoC leve para validação de comportamento relacionado à CVE-2019-9513, conhecida como HTTP/2 Priority Churn.

O script estabelece uma conexão HTTP/2 via TLS, abre pequenos streams HTTP e envia alterações de prioridade por meio de frames PRIORITY. Em seguida, mede a latência antes e depois do envio desses frames para observar se há variação no processamento.

O que o script faz

  • Negocia HTTP/2 via ALPN;
  • Abre conexão TLS com o host informado;
  • Envia requisições GET simples para até três paths;
  • Mede latência inicial usando PING;
  • Usa fallback com GET caso o PING não seja suficiente;
  • Envia frames PRIORITY em baixa intensidade;
  • Mede a latência após o churn de prioridade;
  • Exibe uma comparação entre o tempo antes e depois do teste.

Cenário de uso

Use este script quando for necessário validar se um servidor HTTP/2 aceita e processa frames de prioridade relacionados ao vetor Priority Churn, sem executar um teste agressivo de DoS.

Ele é indicado para validação controlada em pentests, análise de exposição HTTP/2 e comprovação técnica de comportamento vulnerável ou potencialmente sensível.

Campos/parâmetros que devem ser alterados

O script recebe os valores por argumento de linha de comando:

root@kitploit:~
--host
--port
--paths
--shuffles

Explicação dos parâmetros

ParâmetroDescrição
--hostFQDN do alvo autorizado. Não incluir https://.
--portPorta TLS onde o serviço HTTP/2 está disponível. Padrão: 443.
--pathsLista de paths simples para abrir streams HTTP/2.
--shufflesQuantidade de ciclos de alteração de prioridade. Manter baixo para teste seguro.

Path ideal para teste

Use paths leves, públicos e de baixo impacto, como:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health
/login

Evite paths que executem operações pesadas, consultas complexas, geração de relatório, upload, busca avançada ou qualquer funcionalidade que gere carga no backend.

Exemplo de uso seguro

root@kitploit:~
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

Saída esperada

Exemplo de saída:

root@kitploit:~
[OK] PING antes: 45.20 ms; após churn: 52.80 ms; shuffles=10
Sinal 9513: PRIORITY frames aceitos e processados; aumento sutil pós-churn evidencia o vetor (sem DoS).

Interpretação do resultado

Se o script conseguir negociar HTTP/2, abrir streams e enviar frames PRIORITY, isso indica que o servidor processa esse tipo de comportamento.

Um aumento sutil de latência após o churn pode ser usado como evidência técnica de que o vetor existe, mas não deve ser interpretado sozinho como prova de impacto severo. A classificação final depende do contexto, versão do servidor, arquitetura, mitigadores, WAF/CDN e configuração HTTP/2.


data_dribble_probe.py

Descrição

O data_dribble_probe.py é uma PoC leve para validação de comportamento relacionado à CVE-2019-9511, conhecida como HTTP/2 Data Dribble.

O script estabelece uma conexão HTTP/2 via TLS, abre um único stream e manipula a janela de controle de fluxo para liberar pequenos volumes de dados, simulando o comportamento de entrega gradual de DATA frames.

O que o script faz

  • Negocia HTTP/2 via ALPN;
  • Abre conexão TLS com o host informado;
  • Envia uma requisição GET para o path definido;
  • Ajusta a janela inicial de fluxo;
  • Libera pequenos volumes de dados de forma controlada;
  • Conta DATA frames recebidos;
  • Exibe a quantidade de bytes liberados, frames recebidos e tempo total.

Cenário de uso

Use este script quando for necessário validar se o servidor HTTP/2 responde a um padrão de controle de fluxo reduzido, associado ao vetor Data Dribble, sem executar carga agressiva.

Ele é indicado para comprovação técnica controlada, especialmente quando ferramentas automatizadas apontam possível exposição e é necessário validar manualmente com menor risco operacional.

Campos/parâmetros que devem ser alterados

O script recebe os valores por argumento de linha de comando:

root@kitploit:~
--host
--path
--port
--bytes

Explicação dos parâmetros

ParâmetroDescrição
--hostFQDN do alvo autorizado. Não incluir https://.
--pathPath que será requisitado no teste.
--portPorta TLS onde o serviço HTTP/2 está disponível. Padrão: 443.
--bytesTotal de bytes liberados durante o teste. Manter baixo para validação segura.

Path ideal para teste

Use um path simples, estático ou de baixo custo para o servidor, como:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health
/login

Evite endpoints que façam consulta em banco, autenticação pesada, processamento assíncrono, geração de documentos ou chamadas para sistemas internos.

Exemplo de uso seguro

root@kitploit:~
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

Saída esperada

Exemplo de saída:

root@kitploit:~
[OK] HTTP/2 negociado; DATA frames recebidos: 12; bytes liberados: 12; tempo(ms): 1450
Sinal 9511: múltiplos DATA minúsculos entregues sob janela=1 (prova do caminho 'dribble' sem stress).

Interpretação do resultado

Se o script negociar HTTP/2 e receber DATA frames pequenos conforme a janela de fluxo é liberada, isso indica que o servidor processa esse padrão de controle de fluxo.

Esse comportamento pode ser usado como evidência técnica do vetor, mas a criticidade deve considerar o contexto real do ambiente, como servidor utilizado, versão, limites de conexão, balanceador, CDN, WAF, timeout e proteções contra abuso.


Dependências

Os scripts requerem Python 3 e a biblioteca h2.

root@kitploit:~
python3
pip
h2
ssl
socket
argparse

As bibliotecas ssl, socket, time, argparse e select fazem parte da biblioteca padrão do Python.

A dependência externa principal é:

root@kitploit:~
h2

Instalação das dependências

Instalação direta:

root@kitploit:~
python3 -m pip install h2

Instalação usando ambiente virtual:

root@kitploit:~
python3 -m venv venv
source venv/bin/activate
pip install h2

Valide a instalação:

root@kitploit:~
python3 -c "import h2; print('h2 instalado com sucesso')"

Ajustes necessários antes de executar

1. Confirmar suporte a HTTP/2

Os scripts dependem de negociação HTTP/2 via ALPN.

Antes de executar, confirme se o servidor suporta HTTP/2:

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

Saída esperada:

root@kitploit:~
ALPN protocol: h2

Se o servidor não negociar h2, os scripts não serão aplicáveis.


2. Usar apenas FQDN no parâmetro --host

Não informe https:// no parâmetro --host.

Correto:

root@kitploit:~
--host exemplo.com.br

Incorreto:

root@kitploit:~
--host https://exemplo.com.br

3. Escolher paths leves

Prefira paths simples:

root@kitploit:~
/
/robots.txt
/favicon.ico
/health

Evite endpoints sensíveis ou pesados:

root@kitploit:~
/relatorios
/export
/search
/upload
/api/processamento

A ideia é validar o comportamento HTTP/2, não estressar o backend.


4. Manter valores baixos

Use valores conservadores:

Para priority_churn_probe.py:

root@kitploit:~
--shuffles 10

Para data_dribble_probe.py:

root@kitploit:~
--bytes 12

Não aumente esses valores em ambiente produtivo sem autorização explícita.


Exemplos de uso

Pré-validação HTTP/2

root@kitploit:~
openssl s_client -alpn h2 -connect exemplo.com.br:443 </dev/null 2>/dev/null | grep -i "ALPN"

Priority Churn — CVE-2019-9513

root@kitploit:~
python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

Data Dribble — CVE-2019-9511

root@kitploit:~
python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

Recomendações de mitigação

Para reduzir riscos associados a ataques HTTP/2 DoS, recomenda-se manter servidores web, proxies, balanceadores e bibliotecas HTTP/2 atualizados, aplicar limites de conexão, configurar timeouts adequados, limitar quantidade de streams simultâneos, restringir abuso de frames HTTP/2, monitorar anomalias de latência e avaliar a desativação de HTTP/2 em serviços que não precisam desse protocolo.

Também é recomendado validar a proteção em camadas como CDN, WAF, reverse proxy, ingress controller e load balancer, pois muitas vezes a exposição real depende mais da borda do que da aplicação final.

A confirmação de correção deve ser feita com base no componente que realmente termina e processa HTTP/2 no ambiente, como servidor web, proxy, balanceador, CDN ou ingress controller.


Observação de segurança

Estes scripts devem ser utilizados apenas em ambientes autorizados.

Embora tenham sido escritos para execução leve, eles interagem diretamente com mecanismos HTTP/2 relacionados a vetores de DoS. Portanto, o uso deve estar alinhado ao escopo formal do teste, às regras de engajamento e aos limites operacionais definidos com o responsável pelo ambiente.

Antes de executar em produção, confirme:

  • domínio autorizado;
  • janela de teste permitida;
  • limite de intensidade;
  • paths permitidos;
  • contatos de contingência;
  • evidências esperadas;
  • critérios para interrupção do teste.

Aviso legal

O uso destes scripts contra sistemas sem autorização é proibido.

A finalidade deste repositório é exclusivamente apoiar atividades legítimas de segurança, como pentest autorizado, validação controlada de vulnerabilidades, laboratório, estudo técnico e demonstração segura de risco.

Baixar ferramenta