渗透测试 | 利用HTTP分块编码机制进行WAF绕过
字数 1850 2025-09-01 11:25:54

HTTP分块编码机制在WAF绕过中的应用

1. 实验概述

本实验旨在通过Burp Suite工具利用HTTP分块编码机制绕过Web应用防火墙(WAF)的保护,实现对目标系统的渗透测试。

实验目标

  • 掌握Burp Suite数据包分块插件的配置和使用
  • 理解并应用HTTP分块编码机制绕过WAF
  • 通过分块传输技术获取目标系统敏感信息

2. 核心知识点:HTTP分块编码

2.1 HTTP分块编码原理

HTTP分块编码(HTTP Chunked Encoding)是一种传输编码方式,允许数据以块的形式传输,无需等待整个消息完全生成。主要特点:

  • 使用Transfer-Encoding: chunked标头替代Content-Length
  • 数据被分割为一系列块(chunks),每个块包含:
    • 块大小(十六进制表示)
    • 回车换行符(\r\n)
    • 实际数据
    • 另一个回车换行符(\r\n)
  • 传输结束时发送一个大小为0的块

2.2 分块编码示例

POST /target HTTP/1.1
Host: example.com
Transfer-Encoding: chunked

7\r\n
payload\r\n
0\r\n
\r\n

3. 实验环境准备

3.1 硬件环境

  • 服务器:Windows Server 2008
  • 防火墙设备:1台
  • 攻击机:Windows 10
  • 网络设备:交换机2台,路由器1台

3.2 软件工具

  • 火狐浏览器
  • Burp Suite Community版
  • 数据包分块插件(需提前准备)

4. 实验步骤详解

4.1 初始配置

  1. 配置浏览器代理

    • 打开火狐浏览器,访问目标URL:http://202.1.10.34:8080
    • 进入浏览器设置 → 网络设置 → 手动配置代理
    • 设置代理为Burp Suite监听地址(通常为127.0.0.1:8080)
  2. 启动Burp Suite

    • 运行Burp Suite Community版
    • 确认Proxy → Options中的代理设置与浏览器一致
    • 开启拦截功能(Intercept is on)

4.2 数据包分块插件安装与配置

  1. 导入分块插件

    • 在Burp Suite中进入Extender → Add
    • 选择已下载的分块插件(如Chunked-Encoding Converter)
    • 完成安装并确保插件已激活
  2. 插件配置要点

    • 设置分块大小(通常为7-10字节)
    • 配置编码方式(通常保持默认)
    • 测试插件功能是否正常

4.3 WAF绕过实战

4.3.1 基础绕过技术

  1. 捕获正常请求

    • 在浏览器中执行正常操作
    • 在Burp Suite中拦截请求
  2. 应用分块编码

    • 在拦截的请求中添加Transfer-Encoding: chunked
    • 移除Content-Length头(如果存在)
    • 使用插件将请求体转换为分块格式
  3. 发送修改后的请求

    • 观察WAF是否放行
    • 检查服务器响应

4.3.2 分块SQL注入攻击

  1. 构造恶意负载

    admin' AND 1=CONVERT(int,(SELECT table_name FROM information_schema.tables))--
    
  2. 分块处理技巧

    • 将注入语句分割为多个小块
    • 关键部分(如SQL函数)保持在一个块内
    • 使用注释(--)分隔敏感部分
  3. 发送分块请求

    5\r\n
    admin\r\n
    10\r\n
    ' AND 1=\r\n
    8\r\n
    CONVERT(\r\n
    10\r\n
    int,(SELECT\r\n
    ...
    0\r\n
    \r\n
    

4.3.3 信息收集阶段

  1. 查询数据表名称

    • 使用分块技术绕过WAF执行information_schema.tables查询
    • 分析返回结果识别关键表名
  2. 查询表字段信息

    • 针对识别出的表执行information_schema.columns查询
    • 分块处理查询语句避免触发WAF规则
  3. 提取数据内容

    • 构造最终的数据查询语句
    • 使用分块技术获取管理员账户等敏感信息

5. 实验注意事项

  1. 法律合规

    • 仅对授权目标进行测试
    • 遵守《中华人民共和国网络安全法》
  2. 技术要点

    • 分块大小选择:过小影响效率,过大可能被WAF检测
    • 关键函数/关键词保持完整不被分割
    • 注意服务器对分块编码的支持情况
  3. 调试技巧

    • 使用Burp Repeater模块反复测试
    • 观察WAF的响应模式调整分块策略
    • 结合其他编码技术(如URL编码)增强绕过效果

6. 扩展思考

  1. 分块编码的防御

    • WAF应规范化处理分块请求
    • 服务器端应限制分块请求的使用场景
    • 实施深度包检测(DPI)识别恶意分块
  2. 组合利用技术

    • 分块编码+HTTP参数污染
    • 分块编码+HTTP头注入
    • 分块编码+HTTP请求走私
  3. 现代WAF的对抗

    • 新一代WAF已具备分块编码分析能力
    • 需要结合更多混淆技术
    • 关注0day漏洞的利用可能性

7. 总结

HTTP分块编码机制作为一种合法的传输方式,可以被攻击者利用来绕过传统WAF的检测。本实验详细展示了如何通过Burp Suite工具配合分块插件,实现对WAF的有效绕过。安全人员应充分理解这种技术原理,既能在渗透测试中合理使用,也能在防御体系中有效防范此类攻击。

HTTP分块编码机制在WAF绕过中的应用 1. 实验概述 本实验旨在通过Burp Suite工具利用HTTP分块编码机制绕过Web应用防火墙(WAF)的保护,实现对目标系统的渗透测试。 实验目标 掌握Burp Suite数据包分块插件的配置和使用 理解并应用HTTP分块编码机制绕过WAF 通过分块传输技术获取目标系统敏感信息 2. 核心知识点:HTTP分块编码 2.1 HTTP分块编码原理 HTTP分块编码(HTTP Chunked Encoding)是一种传输编码方式,允许数据以块的形式传输,无需等待整个消息完全生成。主要特点: 使用 Transfer-Encoding: chunked 标头替代 Content-Length 数据被分割为一系列块(chunks),每个块包含: 块大小(十六进制表示) 回车换行符(\r\n) 实际数据 另一个回车换行符(\r\n) 传输结束时发送一个大小为0的块 2.2 分块编码示例 3. 实验环境准备 3.1 硬件环境 服务器:Windows Server 2008 防火墙设备:1台 攻击机:Windows 10 网络设备:交换机2台,路由器1台 3.2 软件工具 火狐浏览器 Burp Suite Community版 数据包分块插件(需提前准备) 4. 实验步骤详解 4.1 初始配置 配置浏览器代理 打开火狐浏览器,访问目标URL:http://202.1.10.34:8080 进入浏览器设置 → 网络设置 → 手动配置代理 设置代理为Burp Suite监听地址(通常为127.0.0.1:8080) 启动Burp Suite 运行Burp Suite Community版 确认Proxy → Options中的代理设置与浏览器一致 开启拦截功能(Intercept is on) 4.2 数据包分块插件安装与配置 导入分块插件 在Burp Suite中进入Extender → Add 选择已下载的分块插件(如Chunked-Encoding Converter) 完成安装并确保插件已激活 插件配置要点 设置分块大小(通常为7-10字节) 配置编码方式(通常保持默认) 测试插件功能是否正常 4.3 WAF绕过实战 4.3.1 基础绕过技术 捕获正常请求 在浏览器中执行正常操作 在Burp Suite中拦截请求 应用分块编码 在拦截的请求中添加 Transfer-Encoding: chunked 头 移除 Content-Length 头(如果存在) 使用插件将请求体转换为分块格式 发送修改后的请求 观察WAF是否放行 检查服务器响应 4.3.2 分块SQL注入攻击 构造恶意负载 分块处理技巧 将注入语句分割为多个小块 关键部分(如SQL函数)保持在一个块内 使用注释(--)分隔敏感部分 发送分块请求 4.3.3 信息收集阶段 查询数据表名称 使用分块技术绕过WAF执行 information_schema.tables 查询 分析返回结果识别关键表名 查询表字段信息 针对识别出的表执行 information_schema.columns 查询 分块处理查询语句避免触发WAF规则 提取数据内容 构造最终的数据查询语句 使用分块技术获取管理员账户等敏感信息 5. 实验注意事项 法律合规 仅对授权目标进行测试 遵守《中华人民共和国网络安全法》 技术要点 分块大小选择:过小影响效率,过大可能被WAF检测 关键函数/关键词保持完整不被分割 注意服务器对分块编码的支持情况 调试技巧 使用Burp Repeater模块反复测试 观察WAF的响应模式调整分块策略 结合其他编码技术(如URL编码)增强绕过效果 6. 扩展思考 分块编码的防御 WAF应规范化处理分块请求 服务器端应限制分块请求的使用场景 实施深度包检测(DPI)识别恶意分块 组合利用技术 分块编码+HTTP参数污染 分块编码+HTTP头注入 分块编码+HTTP请求走私 现代WAF的对抗 新一代WAF已具备分块编码分析能力 需要结合更多混淆技术 关注0day漏洞的利用可能性 7. 总结 HTTP分块编码机制作为一种合法的传输方式,可以被攻击者利用来绕过传统WAF的检测。本实验详细展示了如何通过Burp Suite工具配合分块插件,实现对WAF的有效绕过。安全人员应充分理解这种技术原理,既能在渗透测试中合理使用,也能在防御体系中有效防范此类攻击。