唯快不破的分块传输绕WAF
字数 1007 2025-08-15 21:33:12

分块传输编码绕过WAF进行SQL注入攻击技术详解

1. 技术背景

分块传输编码(Chunked transfer encoding)是HTTP/1.1协议中的一种数据传输机制,允许服务器将数据分成多个部分发送给客户端。这种机制原本用于处理服务器无法预先确定响应内容总大小的情况,如大文件下载或动态生成内容。

2. 分块传输原理

2.1 标准HTTP传输

  • 通常HTTP请求包含Content-Length头部,指明报文体长度
  • WAF通常依赖Content-Length来检测恶意负载

2.2 分块传输特点

  • 使用Transfer-Encoding: chunked头部替代Content-Length
  • 数据被分解为一系列数据块发送
  • 每个块包含长度前缀和实际数据
  • 最后以零长度块表示传输结束

3. 分块传输绕过WAF的原理

  • WAF通常设计为检查完整的HTTP请求
  • 分块传输将恶意负载拆分为多个小块
  • 每个单独的小块可能不触发WAF规则
  • WAF可能无法正确重组分块数据进行检查

4. 实施步骤

4.1 准备工作

  1. 获取渗透测试授权书
  2. 准备测试环境:
    • Burp Suite
    • sqlmap
    • Chunked-coding-converter插件

4.2 工具安装与配置

  1. 安装Burp Suite插件:
    git clone https://github.com/c0ny1/chunked-coding-converter
    
  2. 在Burp中加载插件并启用代理

4.3 攻击流程

  1. 使用Burp拦截正常请求
  2. 将请求保存为post.txt文件
  3. 使用sqlmap通过Burp代理发送分块请求:
    sqlmap.py -r post.txt --proxy=http://127.0.0.1:8080 --os-shell
    

5. 高级技巧

5.1 自动化模式

sqlmap.py -r post.txt --proxy=http://127.0.0.1:8080 --batch

5.2 多线程优化

sqlmap.py -r post.txt --proxy=http://127.0.0.1:8080 --batch --threads 10

5.3 修改sqlmap配置

编辑settings.py文件:

MAX_NUMBER_OF_THREADS = 9999  # 根据实际情况调整

6. 防御措施

6.1 对于防御方

  1. 部署能够正确解析分块传输的WAF
  2. 在应用层实现输入验证
  3. 监控异常的分块传输请求

6.2 对于渗透测试人员

  1. 确保获得合法授权
  2. 测试后及时清理痕迹
  3. 遵守约定的测试时间窗口

7. 注意事项

  1. 该方法仅适用于HTTP/1.1协议
  2. 并非所有WAF都容易受到此技术影响
  3. 实际效果取决于目标系统的具体配置
  4. 在授权测试中需严格遵守测试范围

8. 总结

分块传输编码绕过WAF是一种有效的SQL注入技术,特别适用于传统签名检测型WAF。通过将恶意负载拆分为多个小块,可以规避基于完整请求检测的安全机制。防御方需要部署能够正确解析HTTP协议的下一代WAF解决方案,而渗透测试人员应确保在合法授权范围内使用此技术。

分块传输编码绕过WAF进行SQL注入攻击技术详解 1. 技术背景 分块传输编码(Chunked transfer encoding)是HTTP/1.1协议中的一种数据传输机制,允许服务器将数据分成多个部分发送给客户端。这种机制原本用于处理服务器无法预先确定响应内容总大小的情况,如大文件下载或动态生成内容。 2. 分块传输原理 2.1 标准HTTP传输 通常HTTP请求包含 Content-Length 头部,指明报文体长度 WAF通常依赖 Content-Length 来检测恶意负载 2.2 分块传输特点 使用 Transfer-Encoding: chunked 头部替代 Content-Length 数据被分解为一系列数据块发送 每个块包含长度前缀和实际数据 最后以零长度块表示传输结束 3. 分块传输绕过WAF的原理 WAF通常设计为检查完整的HTTP请求 分块传输将恶意负载拆分为多个小块 每个单独的小块可能不触发WAF规则 WAF可能无法正确重组分块数据进行检查 4. 实施步骤 4.1 准备工作 获取渗透测试授权书 准备测试环境: Burp Suite sqlmap Chunked-coding-converter插件 4.2 工具安装与配置 安装Burp Suite插件: 在Burp中加载插件并启用代理 4.3 攻击流程 使用Burp拦截正常请求 将请求保存为 post.txt 文件 使用sqlmap通过Burp代理发送分块请求: 5. 高级技巧 5.1 自动化模式 5.2 多线程优化 5.3 修改sqlmap配置 编辑 settings.py 文件: 6. 防御措施 6.1 对于防御方 部署能够正确解析分块传输的WAF 在应用层实现输入验证 监控异常的分块传输请求 6.2 对于渗透测试人员 确保获得合法授权 测试后及时清理痕迹 遵守约定的测试时间窗口 7. 注意事项 该方法仅适用于HTTP/1.1协议 并非所有WAF都容易受到此技术影响 实际效果取决于目标系统的具体配置 在授权测试中需严格遵守测试范围 8. 总结 分块传输编码绕过WAF是一种有效的SQL注入技术,特别适用于传统签名检测型WAF。通过将恶意负载拆分为多个小块,可以规避基于完整请求检测的安全机制。防御方需要部署能够正确解析HTTP协议的下一代WAF解决方案,而渗透测试人员应确保在合法授权范围内使用此技术。