Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2019-9511_Priority-Churn-Data-Dribble — 轻量级HTTP/2探测工具,用于在授权环境中对CVE-2019-9511(Data Dribble)和CVE-2019-9513(Priority Churn)DoS向量进行受控验证。 | Kitploit
工具/GitHubGitHub/harley-ghostie/cve-2019-9511_priority-churn-data-dribble
漏洞分析漏洞利用Web安全网络安全渗透测试
GitHubharley-ghostie/cve-2019-9511_priority-churn-data-dribble

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

轻量级HTTP/2探测工具,用于在授权环境中对CVE-2019-9511(Data Dribble)和CVE-2019-9513(Priority Churn)DoS向量进行受控验证。

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
55个月前尚未审核
分享

HTTP/2 CVE-2019-9511 & CVE-2019-9513 轻量探测脚本

包含与 CVE-2019-9511 和 CVE-2019-9513 相关行为的受控验证脚本的仓库,这两个漏洞均涉及 HTTP/2 实现中的拒绝服务向量。

这些脚本旨在支持在授权环境中的技术验证,允许观察服务器是否协商 HTTP/2 并响应与 Data Dribble 和 Priority Churn 相关的特定模式,而不执行拒绝服务攻击。

其目的是以轻量、安全的方式证明该向量,请求量低,且不以使环境不可用为目标。


涉及的 CVE

CVE名称脚本描述
CVE-2019-9511HTTP/2 Data Dribbledata_dribble_probe.py通过受控方式释放小块数据来验证 HTTP/2 流量控制行为的有效性。
CVE-2019-9513HTTP/2 Priority Churn / Resource Looppriority_churn_probe.py验证低强度下 PRIORITY 帧处理行为的有效性。

漏洞摘要

CVE-2019-9511 — HTTP/2 Data Dribble

CVE-2019-9511,也称为 HTTP/2 Data Dribble,影响某些未能高效处理流量窗口操作和数据逐步交付的 HTTP/2 实现。

在此场景中,攻击者可以向服务器请求数据,并操纵流量控制,使响应保持打开状态并以小块(如 1 字节数据包)方式交付。在某些实现中,此行为可能导致 CPU、内存或连接资源的过度消耗,从而产生拒绝服务风险。

在本仓库中,相关脚本为:

data_dribble_probe.py

该脚本的目标是以轻量方式验证行为,不产生激进负载,也不试图导致不可用。

参考资料:

  • 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

CVE-2019-9513,也称为 HTTP/2 Priority Churn 或 Resource Loop,影响某些以高成本处理流优先级树持续变更的 HTTP/2 实现。

在此场景中,攻击者可以创建多个流并反复更改这些流之间的优先级,导致优先级树发生搅动。在某些实现中,此行为可能导致 CPU 过度消耗,进而引发拒绝服务。

在本仓库中,相关脚本为:

priority_churn_probe.py

该脚本的目标是验证服务器是否接受并处理 PRIORITY 帧,使用低强度且不执行 DoS 攻击。

参考资料:

  • 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

关于受影响版本的说明

CVE-2019-9511 和 CVE-2019-9513 并不与某个特定的 Web 服务器版本(如仅 nginx、Apache 或 Tomcat)关联。

它们影响不同产品、库、代理、负载均衡器和服务器中的某些 HTTP/2 实现。因此,验证应考虑分析环境中哪个组件正在协商和处理 HTTP/2。

可能涉及的组件示例:

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

第一个技术标准是确认服务是否通过 ALPN 协商 HTTP/2。如果服务不协商 h2,则这些脚本不适用。

漏洞确认应基于识别到的组件的官方公告。


预验证:检查 HTTP/2 支持

在运行脚本之前,请验证目标是否通过 ALPN 协商 HTTP/2。

命令中仅使用域名,不带 https://。

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

也可使用占位符:

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

预期输出:

ALPN protocol: h2

如果输出显示 h2,则服务协商 HTTP/2,脚本可能适用。

如果没有返回值或协商的协议为其他(如 http/1.1),则该端点不适用这些脚本。

脚本概览

脚本相关 CVE目的何时使用
data_dribble_probe.pyCVE-2019-9511验证与 Data Dribble 相关的行为,通过窗口控制释放小块数据当服务器支持 HTTP/2 且需要检查在窗口缩小情况下的 DATA 帧交付行为时使用。
priority_churn_probe.pyCVE-2019-9513验证与 Priority Churn 相关的行为,使用低强度 PRIORITY 帧当服务器支持 HTTP/2 且需要检查它是否处理流优先级变更时使用。

推荐使用流程

脚本使用的逻辑顺序为:

1. 使用 openssl 进行 HTTP/2 预验证
   ↓
2. priority_churn_probe.py
   ↓
3. data_dribble_probe.py

流程简要说明

首先,使用 openssl 命令确认目标是否协商 HTTP/2。然后使用 priority_churn_probe.py 验证服务器是否接受并处理优先级帧。接着使用 data_dribble_probe.py 观察服务器在流量窗口缩小情况下受控释放小块数据的行为。

两个脚本均为轻量探测。他们的目标不是造成不可用,而是产生所观察行为的技术证据。


脚本

priority_churn_probe.py

描述

priority_churn_probe.py 是一个轻量 PoC,用于验证与 CVE-2019-9513(HTTP/2 Priority Churn)相关行为。

脚本通过 TLS 建立 HTTP/2 连接,打开少量 HTTP 流,并通过 PRIORITY 帧发送优先级变更。然后测量发送这些帧之前和之后的延迟,以观察处理是否有变化。

脚本做什么

  • 通过 ALPN 协商 HTTP/2;
  • 与指定主机建立 TLS 连接;
  • 向最多三个路径发送简单 GET 请求;
  • 使用 PING 测量初始延迟;
  • 如果 PING 不足以测量,则使用 GET 作为回退;
  • 以低强度发送 PRIORITY 帧;
  • 测量优先级搅动后的延迟;
  • 显示测试前后的时间比较。

使用场景

当需要验证 HTTP/2 服务器是否接受并处理与 Priority Churn 向量相关的优先级帧,而不执行激进的 DoS 测试时,使用此脚本。

它适用于渗透测试中的受控验证、HTTP/2 暴露分析以及脆弱或有潜在风险行为的技术证明。

必须更改的字段/参数

脚本通过命令行参数接收值:

--host
--port
--paths
--shuffles

参数说明

参数描述
--host授权目标的 FQDN。请勿包含 https://。
--portHTTP/2 服务可用的 TLS 端口。默认:443。
--paths用于打开 HTTP/2 流的简单路径列表。
--shuffles优先级变更的循环次数。保持较低以确保安全测试。

推荐测试路径

使用轻量、公开且低影响的路径,例如:

/
/robots.txt
/favicon.ico
/health
/login

避免执行繁重操作、复杂查询、报告生成、上传、高级搜索或任何会给后端带来负载的路径。

安全使用示例

python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

预期输出

输出示例:

[OK] PING before: 45.20 ms; after churn: 52.80 ms; shuffles=10
Signal 9513: PRIORITY frames accepted and processed; subtle increase post-churn evidences the vector (no DoS).

结果解释

如果脚本成功协商 HTTP/2、打开流并发送 PRIORITY 帧,则表明服务器处理此类行为。

搅动后延迟的轻微增加可用作该向量存在的技术证据,但不应单独解释为严重影响的证明。最终分类取决于上下文、服务器版本、架构、缓解措施、WAF/CDN 和 HTTP/2 配置。


data_dribble_probe.py

描述

data_dribble_probe.py 是一个轻量 PoC,用于验证与 CVE-2019-9511(HTTP/2 Data Dribble)相关行为。

脚本通过 TLS 建立 HTTP/2 连接,打开单个流,并操纵流量控制窗口以释放小块数据,模拟 DATA 帧的逐步交付行为。

脚本做什么

  • 通过 ALPN 协商 HTTP/2;
  • 与指定主机建立 TLS 连接;
  • 向指定路径发送 GET 请求;
  • 调整初始流量窗口;
  • 以受控方式释放小块数据;
  • 计算接收到的 DATA 帧数量;
  • 显示释放的字节数、接收到的帧数和总时间。

使用场景

当需要验证 HTTP/2 服务器是否响应与 Data Dribble 向量相关的缩小流量控制模式,而不执行激进负载时,使用此脚本。

它适用于受控技术证明,特别是当自动化工具指示可能暴露且需要手动验证以降低操作风险时。

必须更改的字段/参数

脚本通过命令行参数接收值:

--host
--path
--port
--bytes

参数说明

参数描述
--host授权目标的 FQDN。请勿包含 https://。
--path测试中请求的路径。
--portHTTP/2 服务可用的 TLS 端口。默认:443。
--bytes测试期间释放的总字节数。保持较低以确保安全验证。

推荐测试路径

使用一个简单、静态或服务器成本较低的路径,例如:

/
/robots.txt
/favicon.ico
/health
/login

避免执行数据库查询、繁重认证、异步处理、文档生成或对内部系统调用的端点。

安全使用示例

python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

预期输出

输出示例:

[OK] HTTP/2 negotiated; DATA frames received: 12; bytes released: 12; time(ms): 1450
Signal 9511: multiple tiny DATA delivered under window=1 (evidence of dribble path without stress).

结果解释

如果脚本协商 HTTP/2 并在窗口释放时接收到小的 DATA 帧,则表明服务器处理这种流量控制模式。

此行为可用作该向量的技术证据,但严重程度应考虑实际环境上下文,例如使用的服务器、版本、连接限制、负载均衡器、CDN、WAF、超时和防滥用保护。


依赖项

脚本需要 Python 3 和 h2 库。

python3
pip
h2
ssl
socket
argparse

ssl、socket、time、argparse 和 select 库是 Python 标准库的一部分。

主要外部依赖项是:

h2

安装依赖项

直接安装:

python3 -m pip install h2

使用虚拟环境安装:

python3 -m venv venv
source venv/bin/activate
pip install h2

验证安装:

python3 -c "import h2; print('h2 installed successfully')"

执行前需要进行的调整

1. 确认 HTTP/2 支持

脚本依赖于通过 ALPN 协商 HTTP/2。

在执行之前,确认服务器是否支持 HTTP/2:

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

预期输出:

ALPN protocol: h2

如果服务器不协商 h2,则脚本不适用。


2. 在 --host 参数中仅使用 FQDN

不要在 --host 参数中包含 https://。

正确:

--host exemplo.com.br

错误:

--host https://exemplo.com.br

3. 选择轻量路径

优先使用简单路径:

/
/robots.txt
/favicon.ico
/health

避免敏感或繁重的端点:

/relatorios
/export
/search
/upload
/api/processamento

目的是验证 HTTP/2 行为,而非给后端增压。


4. 保持较低值

使用保守值:

对于 priority_churn_probe.py:

--shuffles 10

对于 data_dribble_probe.py:

--bytes 12

未经明确授权,请勿在生产环境中增加这些值。


使用示例

HTTP/2 预验证

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

Priority Churn — CVE-2019-9513

python3 priority_churn_probe.py --host exemplo.com.br --port 443 --paths / /robots.txt /favicon.ico --shuffles 10

Data Dribble — CVE-2019-9511

python3 data_dribble_probe.py --host exemplo.com.br --path / --port 443 --bytes 12

缓解建议

为降低与 HTTP/2 DoS 攻击相关的风险,建议保持 Web 服务器、代理、负载均衡器和 HTTP/2 库的更新,应用连接限制,配置适当的超时,限制并发流数量,限制 HTTP/2 帧的滥用,监控延迟异常,并评估在不需要该协议的服务上禁用 HTTP/2。

还建议验证 CDN、WAF、反向代理、Ingress Controller 和负载均衡器等层的保护,因为实际暴露通常更多地取决于边缘而非最终应用。

修复确认应基于环境中实际终止并处理 HTTP/2 的组件,例如 Web 服务器、代理、负载均衡器、CDN 或 Ingress Controller。


安全注意事项

这些脚本仅应用于授权环境。

尽管它们是为轻量执行而编写,但它们直接与 HTTP/2 机制交互,这些机制与 DoS 向量相关。因此,使用必须符合正式的测试范围、参与规则以及与环境负责人协商的操作限制。

在生产环境中执行之前,请确认:

  • 授权域名;
  • 允许的测试窗口;
  • 强度限制;
  • 允许的路径;
  • 应急联系人;
  • 预期的证据;
  • 测试终止标准。

法律声明

未经授权针对系统使用这些脚本是禁止的。

本仓库的目的完全是为了支持合法的安全活动,例如授权的渗透测试、受控漏洞验证、实验室环境、技术研究和安全风险演示。

下载工具