记一次特殊格式数据包加密后的burp与xray联动
字数 1067 2025-08-10 16:34:25

特殊格式数据包加密后的Burp与Xray联动渗透测试教学文档

0x00 案例背景与场景

本案例描述了一种特殊的数据包加密场景:请求包的body部分全部采用Base64编码。在实际渗透测试中,这种加密方式会带来以下挑战:

  1. 每次测试需要手动解密数据包
  2. 添加payload后需要重新编码
  3. 传统扫描工具无法直接处理加密数据

0x01 解决方案概述

通过Burp Suite与Xray联动,构建自动化处理流程:

  1. Burp1:负责解密原始请求
  2. Xray:负责漏洞扫描
  3. Burp2:负责重新加密并发送最终请求

0x02 详细配置步骤

1. Burp1配置(解密端)

安装必要插件

  • 使用autoDecode插件或自定义脚本处理Base64解码

自定义解密脚本配置

在Burp的Proxy > Options > Match and Replace中添加规则:

类型:Request body
匹配:.*
替换:base64解码后的内容

或使用Extensions > BApp Store安装Custom Payloads插件编写解码逻辑

代理设置

  • 将处理后的流量转发到Xray监听端口(如7777)

2. Xray配置(扫描端)

基本配置

./xray webscan --listen 127.0.0.1:7777 --html-output xray-report.html

可选参数

  • --plugins:指定启用插件(如本例只启用sql注入检测)
  • --level:设置扫描级别
  • --proxy:设置上游代理(指向Burp2)

3. Burp2配置(加密端)

代理设置

  • 监听端口与Xray配置的上游代理一致
  • Proxy > Options中添加加密规则

加密脚本

Extensions中使用Python脚本实现自动Base64编码:

from burp import IBurpExtender
from burp import IHttpListener
import base64

class BurpExtender(IBurpExtender, IHttpListener):
    def registerExtenderCallbacks(self, callbacks):
        self._callbacks = callbacks
        self._helpers = callbacks.getHelpers()
        callbacks.setExtensionName("Auto Base64 Encoder")
        callbacks.registerHttpListener(self)
    
    def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):
        if messageIsRequest:
            request = messageInfo.getRequest()
            analyzedRequest = self._helpers.analyzeRequest(request)
            body = request[analyzedRequest.getBodyOffset():].tostring()
            encodedBody = base64.b64encode(body)
            newRequest = self._helpers.buildHttpMessage(
                analyzedRequest.getHeaders(),
                encodedBody
            )
            messageInfo.setRequest(newRequest)

0x03 测试流程验证

  1. 在Burp1的Repeater中发送加密请求
  2. 通过Logger查看解密后的明文
  3. 确认Xray接收到解密后的请求
  4. 检查Burp2是否正确重新编码并发送

0x04 常见问题排查

  1. 数据包格式错误

    • 检查Base64编解码是否完整
    • 验证HTTP头是否保留
  2. 代理链路中断

    • 验证各组件监听端口是否正确
    • 检查防火墙设置
  3. 编码异常

    • 确保使用UTF-8编码
    • 验证二进制数据兼容性

0x05 扩展应用

本方案可适用于其他加密场景:

  1. AES加密数据包
  2. 自定义加密算法
  3. 多层编码数据

只需相应修改Burp插件中的编解码逻辑即可实现自动化处理。

0x06 安全注意事项

  1. 生产环境测试前应在测试环境充分验证
  2. 注意敏感数据处理,避免信息泄露
  3. 扫描强度设置应符合测试授权范围
  4. 及时清理测试产生的临时数据

通过这套自动化流程,可显著提高加密接口的渗透测试效率,避免繁琐的手工操作。

特殊格式数据包加密后的Burp与Xray联动渗透测试教学文档 0x00 案例背景与场景 本案例描述了一种特殊的数据包加密场景:请求包的body部分全部采用Base64编码。在实际渗透测试中,这种加密方式会带来以下挑战: 每次测试需要手动解密数据包 添加payload后需要重新编码 传统扫描工具无法直接处理加密数据 0x01 解决方案概述 通过Burp Suite与Xray联动,构建自动化处理流程: Burp1 :负责解密原始请求 Xray :负责漏洞扫描 Burp2 :负责重新加密并发送最终请求 0x02 详细配置步骤 1. Burp1配置(解密端) 安装必要插件 使用 autoDecode 插件或自定义脚本处理Base64解码 自定义解密脚本配置 在Burp的 Proxy > Options > Match and Replace 中添加规则: 或使用 Extensions > BApp Store 安装 Custom Payloads 插件编写解码逻辑 代理设置 将处理后的流量转发到Xray监听端口(如7777) 2. Xray配置(扫描端) 基本配置 可选参数 --plugins :指定启用插件(如本例只启用sql注入检测) --level :设置扫描级别 --proxy :设置上游代理(指向Burp2) 3. Burp2配置(加密端) 代理设置 监听端口与Xray配置的上游代理一致 在 Proxy > Options 中添加加密规则 加密脚本 在 Extensions 中使用Python脚本实现自动Base64编码: 0x03 测试流程验证 在Burp1的Repeater中发送加密请求 通过Logger查看解密后的明文 确认Xray接收到解密后的请求 检查Burp2是否正确重新编码并发送 0x04 常见问题排查 数据包格式错误 检查Base64编解码是否完整 验证HTTP头是否保留 代理链路中断 验证各组件监听端口是否正确 检查防火墙设置 编码异常 确保使用UTF-8编码 验证二进制数据兼容性 0x05 扩展应用 本方案可适用于其他加密场景: AES加密数据包 自定义加密算法 多层编码数据 只需相应修改Burp插件中的编解码逻辑即可实现自动化处理。 0x06 安全注意事项 生产环境测试前应在测试环境充分验证 注意敏感数据处理,避免信息泄露 扫描强度设置应符合测试授权范围 及时清理测试产生的临时数据 通过这套自动化流程,可显著提高加密接口的渗透测试效率,避免繁琐的手工操作。