WAF攻防研究之四个层次Bypass WAF
字数 1186 2025-08-29 08:31:41

WAF攻防研究之四个层次Bypass WAF 教学文档

1. WAF绕过技术概述

WAF(Web应用防火墙)绕过技术研究是提升WAF防御能力的重要途径。本文从四个层次系统性地讲解WAF绕过技术:

  1. 架构层绕过
  2. 资源限制角度绕过
  3. 协议层面绕过
  4. 规则缺陷绕过

2. 架构层绕过技术

2.1 寻找源站IP

原理:当流量不经过WAF时,WAF无法检测攻击请求。

方法

  • 信息泄露:检查网站注销页面、GitHub源码、历史DNS记录
  • 搜索引擎缓存:查找未接入WAF前的IP记录
  • IP穷举扫描:扫描国内IP段,匹配网站特征

2.2 利用同网段

原理:同一云服务商内网流量可能不经过WAF检测。

方法

  1. 在目标站点同一云服务商购买VPS
  2. 通过内网直接攻击目标服务器

2.3 利用边界漏洞

原理:通过子站的SSRF漏洞访问主站可能绕过WAF。

方法

  1. 寻找子站SSRF漏洞
  2. 通过SSRF访问主站内部接口

3. 资源限制角度绕过

原理:WAF为避免资源消耗过大,可能只检测请求前部分内容。

方法

  • 在POST BODY前添加大量无用数据
  • 将攻击payload放在请求末尾
  • 典型大小:超过2MB可能绕过检测

4. 协议层面绕过

4.1 协议未覆盖绕过

案例

  • WAF未覆盖multipart/form-data类型请求
  • 或仅检测文件上传部分而忽略表单参数

4.2 协议解析不一致

PHP文件名解析漏洞

  • WAF解析文件名:test3.jpg
  • PHP解析文件名:shell.php

4.3 文件上传协议绕过技术

4.3.1 文件名覆盖(一)

Content-Disposition: form-data; name="file"; filename="sp.pho"
Content-Disposition: form-data; name="file"; filename="sp.php"

WAF取第一个,后端取最后一个

4.3.2 文件名覆盖(二)

Content-Disposition: form-data; name="myfile"; filename="p3.txt";filename="t3.jsp"

WAF解析到第一个filename,后端解析到最后一个

4.3.3 遗漏文件名

Content-Disposition: form-data;name="myfile";; filename="t3.jsp"

WAF遇到;;认为无filename,后端继续解析

4.3.4 未解析所有文件

  • WAF只检查第一个上传文件
  • 后端解析所有上传文件
  • 将payload放在后面的文件PART

4.3.5 文件名解析兼容性

filename="abc.php  // 缺少右引号
filename=abc.php   // 无引号
filename='abc.php' // 单引号

WAF按标准解析失败,后端容器兼容解析成功

4.4 参数污染

/forum.php?typeid=644&typeid=if(now()%3dsysdate()%2csleep(19.844)%2c0)

WAF检查第一个参数值,后端使用第二个参数值

5. 规则层面绕过

5.1 SQL注入绕过技术

5.1.1 注释符绕过

union/**/select
union/*aaaa%01bbs*/select
union/*aaaaaaaaaaaaaaaaaaaa*/select

5.1.2 空白符绕过

union%250Cselect
union%25A0select

利用MySQL与正则表达式空白符差异

5.1.3 函数分隔符

concat%2520(
concat/**/(
concat%250c(
concat%25a0(

5.1.4 浮点数词法解析

8E0union select
8.0union select
\Nunion select

5.1.5 Error-based函数

extractvalue(1, concat(0x5c,md5(3)))
updatexml(1, concat(0x5d,md5(3)),1)
GeometryCollection((select from(select from(select@@version)f)x))

5.1.6 MySQL特殊语法

select{x table_name}from{x information_schema.tables}

5.2 文件包含绕过

5.2.1 相对路径绕过

etc//passwd  // 等价于etc/passwd

5.2.2 绝对路径绕过

/etc/./passwd
/wtt/../etc/passwd

5.2.3 协议绕过

PHP支持的协议:

file://, http://, ftp://, php://
zlib://, data://, glob://, phar://
ssh2://, rar://, ogg://, expect://

6. 总结

WAF绕过技术研究需要深入理解:

  1. HTTP协议及其实现差异
  2. 后端容器协议解析特性
  3. 数据库词法分析机制
  4. 系统文件路径解析规则

通过多层次的测试和验证,才能全面评估WAF的防御能力并持续改进。

WAF攻防研究之四个层次Bypass WAF 教学文档 1. WAF绕过技术概述 WAF(Web应用防火墙)绕过技术研究是提升WAF防御能力的重要途径。本文从四个层次系统性地讲解WAF绕过技术: 架构层绕过 资源限制角度绕过 协议层面绕过 规则缺陷绕过 2. 架构层绕过技术 2.1 寻找源站IP 原理 :当流量不经过WAF时,WAF无法检测攻击请求。 方法 : 信息泄露:检查网站注销页面、GitHub源码、历史DNS记录 搜索引擎缓存:查找未接入WAF前的IP记录 IP穷举扫描:扫描国内IP段,匹配网站特征 2.2 利用同网段 原理 :同一云服务商内网流量可能不经过WAF检测。 方法 : 在目标站点同一云服务商购买VPS 通过内网直接攻击目标服务器 2.3 利用边界漏洞 原理 :通过子站的SSRF漏洞访问主站可能绕过WAF。 方法 : 寻找子站SSRF漏洞 通过SSRF访问主站内部接口 3. 资源限制角度绕过 原理 :WAF为避免资源消耗过大,可能只检测请求前部分内容。 方法 : 在POST BODY前添加大量无用数据 将攻击payload放在请求末尾 典型大小:超过2MB可能绕过检测 4. 协议层面绕过 4.1 协议未覆盖绕过 案例 : WAF未覆盖 multipart/form-data 类型请求 或仅检测文件上传部分而忽略表单参数 4.2 协议解析不一致 PHP文件名解析漏洞 : WAF解析文件名:test3.jpg PHP解析文件名:shell.php 4.3 文件上传协议绕过技术 4.3.1 文件名覆盖(一) WAF取第一个,后端取最后一个 4.3.2 文件名覆盖(二) WAF解析到第一个filename,后端解析到最后一个 4.3.3 遗漏文件名 WAF遇到 ;; 认为无filename,后端继续解析 4.3.4 未解析所有文件 WAF只检查第一个上传文件 后端解析所有上传文件 将payload放在后面的文件PART 4.3.5 文件名解析兼容性 WAF按标准解析失败,后端容器兼容解析成功 4.4 参数污染 WAF检查第一个参数值,后端使用第二个参数值 5. 规则层面绕过 5.1 SQL注入绕过技术 5.1.1 注释符绕过 5.1.2 空白符绕过 利用MySQL与正则表达式空白符差异 5.1.3 函数分隔符 5.1.4 浮点数词法解析 5.1.5 Error-based函数 5.1.6 MySQL特殊语法 5.2 文件包含绕过 5.2.1 相对路径绕过 5.2.2 绝对路径绕过 5.2.3 协议绕过 PHP支持的协议: 6. 总结 WAF绕过技术研究需要深入理解: HTTP协议及其实现差异 后端容器协议解析特性 数据库词法分析机制 系统文件路径解析规则 通过多层次的测试和验证,才能全面评估WAF的防御能力并持续改进。