记一次特殊格式数据包加密后的burp与xray联动
字数 1484 2025-08-24 07:48:10

特殊格式数据包加密场景下Burp与Xray联动扫描技术指南

0x00 案例场景分析

问题背景

  • 目标系统请求包的body全部采用Base64编码
  • Base64解密后的请求数据包格式为JSON键值对结构
  • 手动解密、加payload测试效率低下

技术挑战

  • 传统扫描工具无法直接处理加密数据包
  • Xray无法识别特殊格式的body内容
  • 需要在加密传输和明文扫描之间建立桥梁

0x01 解决方案架构

整体流程设计

  1. Burp1:负责解密原始请求

    • 使用autoDecoder插件进行自动解密
    • 将解密后的明文转发给Xray
  2. Xray:负责漏洞扫描

    • 监听7777端口接收来自Burp1的流量
    • 只启用SQL注入检测模块(可根据需要扩展)
    • 将扫描后的流量转发给Burp2
  3. Burp2:负责重新加密

    • 接收Xray处理后的请求
    • 将body内容重新Base64编码
    • 发送给目标服务器

网络拓扑

客户端 → Burp1(解密) → Xray(扫描) → Burp2(加密) → 目标服务器

0x02 详细配置步骤

1. Burp1配置

autoDecoder插件设置

  1. 安装autoDecoder插件(感谢f神开发)

  2. 配置解密接口:

    • 在加密接口中编写解密脚本
    • 确保能正确处理Base64编码
  3. 代理设置:

    • 配置Burp1将解密后的流量转发到Xray(127.0.0.1:7777)

验证解密功能

  • 在Repeater中发送加密数据包
  • 通过Burp的Logger查看解密出的明文数据
  • 确认JSON格式解析正确

2. Xray配置

基本配置

# xray配置示例
reverse:
  db_file_path: "/tmp/xray.db"

plugins:
  - name: sqldet
    enabled: true
    # 其他插件可根据需要启用

http:
  listen: "127.0.0.1:7777"
  upstream_proxy: "http://127.0.0.1:8081" # 指向Burp2

关键点

  • 监听端口设置为7777
  • 上游代理指向Burp2的监听端口(默认8081)
  • 根据测试需求选择启用插件

3. Burp2配置

主要功能

  1. 监听Xray的流量(默认8081端口)
  2. 实现自动加密:
    • 使用脚本将body内容Base64编码
    • 保持其他请求头不变

加密脚本示例

# 伪代码示例
def process_request(request):
    if request.body:
        # 确保是JSON格式
        json_data = json.loads(request.body)
        # 重新Base64编码
        encoded_body = base64.b64encode(json.dumps(json_data).encode())
        request.body = encoded_body
    return request

0x03 数据包格式转换方案

原始数据包问题

  • Xray无法识别特殊格式的body内容
  • 直接转发会导致数据包结构损坏

解决方案

  1. Burp1改造

    • 在autoDecoder中重组数据包body
    • 将Base64解码后的JSON转换为Xray可识别的标准格式
  2. Burp2改造

    • 接收Xray处理后的标准格式
    • 重新转换为原始JSON结构
    • 执行Base64编码

数据流转换过程

原始请求(Base64) 
→ Burp1解码为JSON 
→ Xray扫描标准JSON 
→ Burp2重新编码为Base64 
→ 目标服务器

0x04 实战测试与验证

测试步骤

  1. 通过Burp1的Repeater发送加密数据包

  2. 观察各环节数据包变化:

    • Burp1解密后的明文
    • Xray接收的格式
    • Burp2重新加密的结果
  3. 验证扫描结果:

    • 检查Xray是否成功注入测试payload
    • 确认服务器响应是否符合预期

常见问题排查

  1. 数据包格式错误

    • 检查Burp1的解码脚本是否正确
    • 验证JSON格式是否符合预期
  2. 代理连接问题

    • 确认各工具监听端口设置正确
    • 检查防火墙是否阻止本地回环通信
  3. 编码/解码异常

    • 确保Base64编解码使用相同字符集(通常UTF-8)
    • 验证JSON序列化/反序列化无异常

0x05 技术总结与扩展

核心要点

  1. 利用autoDecoder插件实现自动化编解码
  2. 通过多级代理建立扫描流水线
  3. 数据包格式转换是关键突破点

扩展应用

  1. 支持其他加密方式

    • 可修改脚本支持AES、DES等加密算法
    • 适用于更多安全场景
  2. 多插件协同

    • 在Xray中启用更多检测模块
    • 实现全面漏洞扫描
  3. 自动化集成

    • 结合Burp API实现全自动化测试流程
    • 集成到CI/CD流水线中

致谢

  • 特别感谢f神开发的autoDecoder插件
  • 感谢先知社区提供的技术分享平台

附录:工具与资源

  1. autoDecoder插件下载
  2. Xray官方文档
  3. Burp Suite官方资源
特殊格式数据包加密场景下Burp与Xray联动扫描技术指南 0x00 案例场景分析 问题背景 目标系统请求包的body全部采用Base64编码 Base64解密后的请求数据包格式为JSON键值对结构 手动解密、加payload测试效率低下 技术挑战 传统扫描工具无法直接处理加密数据包 Xray无法识别特殊格式的body内容 需要在加密传输和明文扫描之间建立桥梁 0x01 解决方案架构 整体流程设计 Burp1 :负责解密原始请求 使用autoDecoder插件进行自动解密 将解密后的明文转发给Xray Xray :负责漏洞扫描 监听7777端口接收来自Burp1的流量 只启用SQL注入检测模块(可根据需要扩展) 将扫描后的流量转发给Burp2 Burp2 :负责重新加密 接收Xray处理后的请求 将body内容重新Base64编码 发送给目标服务器 网络拓扑 0x02 详细配置步骤 1. Burp1配置 autoDecoder插件设置 安装autoDecoder插件(感谢f神开发) 配置解密接口: 在加密接口中编写解密脚本 确保能正确处理Base64编码 代理设置: 配置Burp1将解密后的流量转发到Xray(127.0.0.1:7777) 验证解密功能 在Repeater中发送加密数据包 通过Burp的Logger查看解密出的明文数据 确认JSON格式解析正确 2. Xray配置 基本配置 关键点 监听端口设置为7777 上游代理指向Burp2的监听端口(默认8081) 根据测试需求选择启用插件 3. Burp2配置 主要功能 监听Xray的流量(默认8081端口) 实现自动加密: 使用脚本将body内容Base64编码 保持其他请求头不变 加密脚本示例 0x03 数据包格式转换方案 原始数据包问题 Xray无法识别特殊格式的body内容 直接转发会导致数据包结构损坏 解决方案 Burp1改造 : 在autoDecoder中重组数据包body 将Base64解码后的JSON转换为Xray可识别的标准格式 Burp2改造 : 接收Xray处理后的标准格式 重新转换为原始JSON结构 执行Base64编码 数据流转换过程 0x04 实战测试与验证 测试步骤 通过Burp1的Repeater发送加密数据包 观察各环节数据包变化: Burp1解密后的明文 Xray接收的格式 Burp2重新加密的结果 验证扫描结果: 检查Xray是否成功注入测试payload 确认服务器响应是否符合预期 常见问题排查 数据包格式错误 : 检查Burp1的解码脚本是否正确 验证JSON格式是否符合预期 代理连接问题 : 确认各工具监听端口设置正确 检查防火墙是否阻止本地回环通信 编码/解码异常 : 确保Base64编解码使用相同字符集(通常UTF-8) 验证JSON序列化/反序列化无异常 0x05 技术总结与扩展 核心要点 利用autoDecoder插件实现自动化编解码 通过多级代理建立扫描流水线 数据包格式转换是关键突破点 扩展应用 支持其他加密方式 : 可修改脚本支持AES、DES等加密算法 适用于更多安全场景 多插件协同 : 在Xray中启用更多检测模块 实现全面漏洞扫描 自动化集成 : 结合Burp API实现全自动化测试流程 集成到CI/CD流水线中 致谢 特别感谢f神开发的autoDecoder插件 感谢先知社区提供的技术分享平台 附录:工具与资源 autoDecoder插件下载 Xray官方文档 Burp Suite官方资源