CVE-2023-44487 HTTP/2 快速重置测试工具 - 增强版
一个全面的 Python 测试工具,用于检测 CVE-2023-44487(HTTP/2 快速重置漏洞)。此增强版提供对测试参数的精细控制、多种攻击模式以及高级监控功能。
⚠️ 重要免责声明
此工具仅用于教育和授权测试目的!
- 仅可对您拥有或已获得明确书面许可的系统使用
- 未经授权的使用可能违法,并可能导致服务中断
- 该工具执行拒绝服务攻击,可能影响服务器可用性
- 测试前务必确保您已获得适当授权
🔍 关于 CVE-2023-44487
CVE-2023-44487,又称“HTTP/2 快速重置”,是 HTTP/2 协议中的一个严重漏洞,允许攻击者:
- 通过快速发送和取消 HTTP/2 流来造成拒绝服务
- 以极少的客户端资源消耗大量服务器资源
- 绕过许多传统的速率限制机制
- 影响主流 Web 服务器和负载均衡器
CVSS 评分: 7.5(高危)
影响: 拒绝服务、资源耗尽
🚀 增强功能
多种攻击模式
- ⚡ 快速重置:标准 HEADERS + 立即 RST_STREAM
- 💥 突发重置:按可配置延迟进行突发请求
- 📈 渐进重置:逐渐增加攻击速率
- 🎲 随机重置:随机时序以绕过预测性过滤
- 🌊 CONTINUATION 洪泛:CONTINUATION 帧洪泛攻击
- 🔀 混合模式:多种模式的组合
精细配置
- 📡 连接控制:超时、延迟、并发限制
- ⏱️ 时序控制:支持抖动的精确时序
- 🌐 HTTP/2 协议:窗口大小、帧大小、HPACK 设置
- 📋 标头自定义:自定义标头、随机生成
- 🔬 高级选项:流 ID 随机化、优先级帧
- 📊 监控:延迟跟踪、流量分析、错误监控
输出格式
- 🖥️ 控制台:带进度更新的可读格式
- 📋 JSON:机器可读的结构化数据
- 📊 CSV:兼容电子表格,便于分析
- 🗃️ XML:企业工具集成
安全功能
- 🛡️ 授权控制:强制确认提示
- 🔒 速率限制:内置连接和请求限制
- 🎛️ 错误处理:优雅的故障处理
- 📝 审计追踪:全面的日志记录功能
📋 系统要求
- Python 3.7 或更高版本
- 无外部依赖(仅使用 Python 标准库)
📖 安装
- 克隆或下载脚本:
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
- 验证 Python 版本:
python3 --version # 应为 3.7+
🔧 使用方法
基本用法
python3 rapid_reset_test.py https://target-server.com
高级用法示例
1. 高吞吐量负载测试
python3 rapid_reset_test.py https://target.com \
--connections 50 \
--requests 1000 \
--delay 0 \
--pattern rapid_reset \
--track-latency \
--output json
2. 使用自定义标头的隐蔽测试
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 (legitbot)" "Authorization: Bearer token123" \
--jitter 0.3
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
4. 全面监控测试
python3 rapid_reset_test.py https://target.com \
--connections 10 \
--requests 200 \
--pattern mixed_pattern \
--track-latency \
--track-responses \
--monitor-memory \
--verbose \
--debug \
--log-file attack.log
5. CONTINUATION 洪泛攻击
python3 rapid_reset_test.py https://target.com \
--pattern continuation_flood \
--requests 50 \
--random-headers \
--header-count 20
完整命令行选项
连接设置
请求设置
攻击模式
| 选项 | 描述 | 默认值 |
|---|
--pattern TYPE | 使用的攻击模式 | rapid_reset |
--burst-size N |
可用模式:
rapid_reset - 标准快速重置攻击
burst_reset - 基于突发的攻击
gradual_reset - 逐渐增加的速率
random_reset - 随机时序
continuation_flood - CONTINUATION 帧洪泛
mixed_pattern - 模式混合
HTTP/2 协议设置
标头自定义
| 选项 | 描述 | 默认值 |
|---|
--custom-headers HEADER | 自定义标头(名称:值) | None |
--random-headers |
高级选项
监控选项
| 选项 | 描述 | 默认值 |
|---|
--track-latency | 跟踪请求延迟 | False |
--track-responses |
输出选项
可用输出格式:
console - 人类可读的控制台输出
json - 机器可读的 JSON
csv - 兼容电子表格的 CSV
xml - 结构化 XML 格式
📊 理解结果
增强结果格式
该工具提供全面的结果,包括:
- 攻击配置:完整的测试参数
- 连接统计:每个连接的成功/失败率
- 流量分析:发送/接收字节数、请求速率
- 延迟指标:请求时序分析(如启用)
- 错误分析:详细的错误跟踪和分类
- 风险评估:自动化漏洞评分
示例 JSON 输出结构
{
"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
}
风险评估
该工具自动评估漏洞风险:
- 🔴 高风险(成功率 >80%):服务器可能易受攻击
- 🟡 中风险(成功率 50-80%):部分易受攻击
- 🟢 低风险(成功率 <50%):缓解措施似乎有效
🔬 技术细节
攻击方法
- 快速重置:发送 HEADERS 后立即发送 RST_STREAM
- 突发重置:将请求分组为可配置延迟的突发
- 渐进重置:逐步增加攻击强度
- 随机重置:使用不可预测的时序模式
- CONTINUATION 洪泛:利用 CONTINUATION 帧处理漏洞
- 混合模式:组合多种技术
HTTP/2 实现
- 正确的 HTTP/2 连接前言处理
- 使用自定义参数的 SETTINGS 帧协商
- 高级 HPACK 标头压缩选项
- 支持可配置流 ID 的流多路复用
- 符合 RFC 7540 的帧结构
- 支持 HTTP/2 扩展和优先级帧
监控能力
- 延迟跟踪:微秒级精度时序
- 流量分析:全面的字节级监控
- 错误分类:详细的错误分类
- 性能指标:请求速率和吞吐量分析
- 协议调试:帧级检查能力
🛡️ 缓解策略
如果您的服务器被发现易受攻击,请实施以下缓解措施:
立即行动
- 将 HTTP/2 实现更新到最新版本
- 为 HTTP/2 流和连接启用速率限制
- 配置连接限制和请求超时
- 实施流重置监控和阻止
高级防护
- 部署支持 HTTP/2 的负载均衡器并具备攻击防护功能
- 配置自适应速率限制,基于连接模式
- 实施请求优先级和资源分配限制
- 监控服务器资源并实施告警
- 使用连接合并和多路复用控制
监控与检测
- 监控 RST_STREAM 速率和模式
- 跟踪连接建立速率
- 为 HTTP/2 流量实施异常检测
- 记录和分析攻击模式以供未来防护
🔗 集成示例
Python 自动化
import subprocess
import json
# 运行自动化测试
result = subprocess.run([
'python3', 'rapid_reset_test.py',
'https://target.com',
'--pattern', 'mixed_pattern',
'--output', 'json',
'--output-file', 'results.json'
])
# 分析结果
with open('results.json') as f:
data = json.load(f)
vulnerability_score = data['test_summary']['success_rate']
if vulnerability_score > 80:
print(f"HIGH RISK: {vulnerability_score}% success rate")
持续监控
#!/bin/bash
# Cron 任务:0 2 * * * /path/to/monitor.sh
python3 rapid_reset_test.py https://myserver.com \
--pattern rapid_reset \
--connections 5 \
--requests 50 \
--output json \
--output-file /var/log/rapid-reset-$(date +%Y%m%d).json
# 检测到漏洞时发出告警
if [ $(jq '.test_summary.success_rate' /var/log/rapid-reset-$(date +%Y%m%d).json) -gt 80 ]; then
echo "ALERT: Server vulnerable to rapid reset attack" | mail -s "Security Alert" [email protected]
fi
数据分析
import pandas as pd
import matplotlib.pyplot as plt
# 加载并分析 CSV 结果
df = pd.read_csv('results.csv')
# 可视化各连接的攻击成功率
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
df.plot(x='connection_id', y='successful_attacks', kind='bar')
plt.title('Attack Success by Connection')
plt.subplot(1, 2, 2)
df['success_rate'] = (df['successful_attacks'] / df['total_attacks']) * 100
plt.hist(df['success_rate'], bins=20)
plt.title('Success Rate Distribution')
plt.show()
🐛 故障排除
常见问题
-
连接被拒绝:
- 验证目标支持 HTTP/2
- 检查防火墙和网络连接
- 确保 HTTPS 配置正确
-
SSL/TLS 错误:
- 证书验证问题
- 使用
--debug 获取详细的 SSL 信息
- 检查 ALPN 协商
-
成功率低:
- 服务器可能启用了速率限制
- 尝试不同的攻击模式
- 调整时序参数
-
性能问题:
- 减少测试连接数
- 使用
--debug 和 --log-file 进行分析
- 监控系统资源
调试步骤
- 启用详细日志:
--verbose --debug --log-file debug.log
- 使用最小负载测试:
--connections 1 --requests 10
- 验证 HTTP/2 支持:使用浏览器开发者工具
- 检查服务器响应:
--track-responses
- 监控延迟:
--track-latency
📄 许可证
此工具根据 MIT 许可证提供。详情请参阅 LICENSE 文件。
🔗 参考链接
⚖️ 法律声明
此工具面向网络安全专业人员、研究人员和系统管理员,用于测试其自有系统或已获明确许可测试的系统。作者不对任何滥用此工具的行为负责。
关键法律要点:
- 仅测试您拥有或已获书面许可的系统
- 未经授权的测试可能违反计算机犯罪法律
- 此工具可能导致真实的服务中断
- 测试前务必通知相关利益方
- 尽可能在维护窗口期间使用
- 记录所有测试活动以供审计
请记住:能力越大,责任越大。请以合乎道德和合法的方式使用此工具。
🆕 增强版新增内容
版本 2.0 功能
- ✅ 6 种攻击模式:多种复杂攻击向量
- ✅ 40+ 配置选项:对所有参数的精细控制
- ✅ 4 种输出格式:支持控制台、JSON、CSV、XML
- ✅ 高级监控:延迟跟踪、流量分析、错误监控
- ✅ 协议自定义:HTTP/2 窗口大小、帧大小、HPACK 设置
- ✅ 标头操作:自定义标头、随机生成、CONTINUATION 洪泛
- ✅ 时序控制:抖动支持、突发模式、渐进升级
- ✅ 安全增强:更好的速率限制、错误处理、审计追踪
- ✅ 集成就绪:JSON/CSV 输出,便于自动化和分析
从基础版迁移
增强版保持与基础版的向后兼容性。所有现有的命令行选项继续有效,新选项提供额外功能。
对于从基础版升级的用户:
# 旧的基础用法仍然有效
python3 rapid_reset_test.py https://example.com --connections 5 --requests 100
# 新的增强用法,包含额外选项
python3 rapid_reset_test.py https://example.com \
--connections 5 --requests 100 \
--pattern burst_reset --track-latency --output json