一个针对 CVE-2023-44487(HTTP/2 Rapid Reset 漏洞)的全面 Python 测试工具。此仓库包含攻击测试和验证分析工具。
此工具仅用于教育和授权测试目的!
CVE-2023-44487,也称为“HTTP/2 Rapid Reset”,是 HTTP/2 协议中的一个严重漏洞,允许攻击者:
CVSS 评分: 7.5(高危)
影响: 拒绝服务、资源耗尽
h2 库:pip install h2git clone https://github.com/madhusudhan-in/CVE_2023_44487-Rapid_Reset.git
cd CVE_2023_44487-Rapid_Reset
pip install h2
chmod +x *.py
python3 --version # 应为 3.7+
cve_2023_44487_verifier_enhanced.py目的: 用于补丁后验证和合规性检查的强制执行信号检测
# 基本验证
python3 cve_2023_44487_verifier_enhanced.py target.com
# 多个并发连接
python3 cve_2023_44487_verifier_enhanced.py target.com -c 5 -s 500
# 详细输出与调试
python3 cve_2023_44487_verifier_enhanced.py target.com -v -c 3 -s 1000
# 仅基线测试(普通请求)
python3 cve_2023_44487_verifier_enhanced.py target.com --baseline-only
| 选项 | 描述 | 默认值 |
|---|---|---|
host | 目标主机名(必需) | - |
-p, --port | 目标端口 | 443 |
--no-ssl | 禁用 SSL/TLS | False(SSL 启用) |
-s, --streams | 每个连接的流数 | 1000 |
-d, --delay | 流操作之间的延迟(秒) | 0.001 |
-c, --connections | 并发连接数 | 1 |
--baseline-only | 仅执行基线测试(不攻击) | False |
-v, --verbose | 详细/调试输出 | False |
脚本基于 RFC 9113 兼容 的强制执行信号提供智能判定:
服务器发送带有 ENHANCE_YOUR_CALM (0xb) 错误码的 GOAWAY
分类:不易受攻击 —— 协议层强制执行已激活
含义:HTTP/2 实现具备适当的速率限制控制
50% 以上的连接通过 TCP 重置终止
分类:可能受保护 —— 请与边缘/基础设施团队确认
含义:边缘设备或 DDoS 防护在传输层介入
每秒重置速率随时间显著下降(后期桶 < 早期桶的 60%)
分类:部分保护 —— 请与基础设施团队确认
含义:服务器或边缘正在自适应减缓攻击
服务器发送 REFUSED_STREAM (0x7) 响应
分类:部分保护 —— 请审查速率限制
含义:存在某种流级别速率限制
未收到 ENHANCE_YOUR_CALM GOAWAY,无 TCP 重置,未检测到限流
分类:向量可执行 —— 可利用性未确认
重要说明:这并不能证明 DoS 可利用性。边缘容量/行为保护(如 Akamai、CloudFlare)可能在更大量级下介入
============================================================
强制执行信号分析
============================================================
服务器 SETTINGS(初始帧):
HEADER_TABLE_SIZE = 4096
ENABLE_PUSH = True
MAX_CONCURRENT_STREAMS = 128
INITIAL_WINDOW_SIZE = 65535
MAX_FRAME_SIZE = 16384
→ MAX_CONCURRENT_STREAMS=128 较保守(良好的 CVE 后默认值)
各连接的 GOAWAY 分解:
ENHANCE_YOUR_CALM (0xb):3/5
其他 GOAWAY 码: 1/5
未收到 GOAWAY: 1/5
传输层 TCP 重置(RST): 0/5
来自服务器的 RST_STREAM 帧总数:2
来自服务器的 REFUSED_STREAM 帧: 0
显示自适应限流的连接数: 1/5
============================================================
判定
============================================================
✅ 强制执行已确认
3/5 个连接收到了带有 ENHANCE_YOUR_CALM (0xb) 的 GOAWAY。
这是 CVE-2023-44487 缓解措施已激活的标准信号。
分类:不易受攻击 —— 协议层强制执行已启用。
# 使用 10 个连接,每个 500 个流验证补丁部署
python3 cve_2023_44487_verifier_enhanced.py prod-api.example.com \
-c 10 \
-s 500 \
-d 0.0001 \
-v
# 测试非标准 HTTPS 端口
python3 cve_2023_44487_verifier_enhanced.py example.com \
-p 8443 \
-c 5 \
-s 1000
# 最小负载合规性测试
python3 cve_2023_44487_verifier_enhanced.py example.com \
-c 3 \
-s 200 \
--baseline-only
ENHANCE_YOUR_CALM(错误码 0xb):
REFUSED_STREAM(错误码 0x7):
每秒重置率分析:
传输层 TCP RST:
| 关闭原因 | 含义 |
|---|---|
goaway_enhance_your_calm | 收到 GOAWAY 0xb(CVE 修复的最佳指标) |
goaway_* | 带有其他错误码的 GOAWAY |
tcp_reset | 收到 TCP RST(边缘层干预) |
broken_pipe / recv_error | 通信期间连接错误 |
eof_no_goaway | 未收到 GOAWAY 即发生意外 EOF |
no_close_no_enforcement | 连接保持打开(未检测到强制执行) |
import asyncio
import subprocess
def run_verification(target: str, num_connections: int = 3):
cmd = [
'python3', 'cve_2023_44487_verifier_enhanced.py',
target,
'-c', str(num_connections),
'-s', '500',
'-v'
]
result = subprocess.run(cmd, capture_output=True, text=True)
# 从输出中解析判定
if "ENFORCEMENT CONFIRMED" in result.stdout:
print(f"✅ {target} is protected")
return "protected"
elif "LIKELY PROTECTED" in result.stdout:
print(f"⚠️ {target} has edge-level protection")
return "edge_protected"
else:
print(f"❌ {target} shows no enforcement")
return "vulnerable"
# 运行测试
status = run_verification("example.com", 5)
#!/bin/bash
# 每周监控关键服务
TARGETS="api.example.com web.example.com cdn.example.com"
LOG_DIR="/var/log/cve-2023-44487"
mkdir -p "$LOG_DIR"
for target in $TARGETS; do
python3 cve_2023_44487_verifier_enhanced.py "$target" \
-c 3 \
-s 500 \
-v > "$LOG_DIR/$target-$(date +%Y%m%d).log" 2>&1
done
rapid_reset_test.py目的: 支持多种模式的全面 HTTP/2 Rapid Reset 攻击测试
python3 rapid_reset_test.py https://target-server.com
python3 rapid_reset_test.py https://target.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
python3 rapid_reset_test.py https://target.com \
--pattern burst_reset \
--burst-size 5 \
--burst-delay 2.0 \
--custom-headers "User-Agent: Mozilla/5.0" \
--jitter 0.3
python3 rapid_reset_test.py https://target.com \
--window-size 32768 \
--frame-size 32768 \
--header-table-size 8192 \
--enable-push \
--priority-frames \
--randomize-streams
| 选项 | 描述 | 默认值 |
|---|---|---|
-c, --connections N | 并发连接数 | 1 |
--connection-timeout SEC | 连接超时(秒) | 10 |
--read-timeout SEC | 响应读取超时 | 5 |
--connection-delay SEC | 连接间延迟 | 0.0 |
| 选项 | 描述 | 默认值 |
|---|---|---|
-r, --requests N | 每个连接的请求数 | 100 |
--delay SEC | HEADERS 与 RST_STREAM 之间的延迟 | 0.001 |
--request-delay SEC | 请求间延迟 | 0.0 |
--jitter FACTOR | 时序随机化因子 | 0.0 |
| 选项 | 描述 | 默认值 |
|---|---|---|
--pattern TYPE | 使用的攻击模式 | rapid_reset |
--burst-size N | 每次爆发的请求数 | 10 |
--burst-delay SEC | 爆发间延迟 | 0.1 |
可用模式:
rapid_reset - 标准快速重置攻击burst_reset - 基于爆发的攻击gradual_reset - 逐步增加速率random_reset - 随机时序continuation_flood - CONTINUATION 帧洪泛mixed_pattern - 模式混合| 选项 | 描述 | 默认值 |
|---|---|---|
--window-size BYTES | HTTP/2 初始窗口大小 | 65535 |
--frame-size BYTES | 最大帧大小 | 16384 |
--header-table-size BYTES | HPACK 头表大小 | 4096 |
--enable-push | 启用 HTTP/2 服务器推送 | False |
--rst-error-code CODE | RST_STREAM 错误码 | 8 |
| 选项 | 描述 | 默认值 |
|---|---|---|
--output FORMAT | 输出格式 | console |
--output-file FILE | 输出文件名 | 自动生成 |
--verbose, -v | 详细输出 | False |
--debug | 调试日志 | False |
--log-file FILE | 日志文件 | None |
可用输出格式:
console - 人类可读的控制台输出json - 机器可读的 JSONcsv - 电子表格兼容的 CSVxml - 结构化 XML 格式工具自动评估漏洞风险:
“No module named 'h2'”
pip install h2
连接被拒绝 / 超时
curl -I --http2 https://target.comh2 模块的 ImportError
pip install --upgrade h2
python3 --version # 必须为 3.7+
权限被拒绝
chmod +x *.py
python3 cve_2023_44487_verifier_enhanced.py target.com
启用详细日志:
python3 cve_2023_44487_verifier_enhanced.py target.com -v
使用最小参数测试:
python3 cve_2023_44487_verifier_enhanced.py target.com -s 10 -c 1
验证 HTTP/2 支持:
python3 -c "import h2; print('h2 library OK')"
本仓库旨在供网络安全专业人员、研究人员和系统管理员用于测试其自有系统或已获得明确许可测试的系统。
关键法律要点:
请记住:能力越大,责任越大。请合法、道德地使用这些工具。
本工具依据 MIT 许可证提供。详情见 LICENSE 文件。
| 使用场景 | 工具 | 原因 |
|---|---|---|
| 补丁后验证 | cve_2023_44487_verifier_enhanced.py | 检测强制执行信号 |
| 合规性检查 | cve_2023_44487_verifier_enhanced.py | 验证 CVE 缓解措施 |
| 基础设施评估 | cve_2023_44487_verifier_enhanced.py | 清晰、可操作的判定 |
| 攻击研究 | rapid_reset_test.py | 多种攻击模式 |
| 性能测试 | rapid_reset_test.py | 全面的指标 |
| 自定义模式 | rapid_reset_test.py | 精细配置 |