在真实环境中进行授权测试时,绕过WAF需要清晰的思路。下面这个表格汇总了核心的绕过路径和思路,帮你快速建立整体框架。
绕过层面 | 核心思路 | 关键方法举例 |
|---|---|---|
网络架构层 | 避开WAF的检测范围,直连后端应用 | 寻找真实IP、利用未防护的入口点(如特定端口、子域名) |
HTTP协议层 | 利用WAF与后端服务器对协议解析的差异 | 分块传输、参数污染、修改Content-Type、使用特殊字符集 |
应用程序层 | 利用特定应用、中间件或编程语言的特性 | 基于IIS、Apache、PHP等环境的特定解析规则 |
数据库层 | 利用数据库特性和SQL语法的灵活性 | 使用注释、特殊空白符、函数分隔、非常规语法 |
💡 各层面绕过策略详解
1. 网络架构层绕过
此层面的目标是绕过WAF的检测范围,直接与受保护的Web服务器建立连接。
寻找真实IP绕过云WAF:云WAF通过DNS引流进行防护。如果能找到网站服务器的真实IP,便可直接访问,完全绕过云WAF。常用方法包括:
查询历史DNS记录:网站接入云WAF前的DNS记录可能暴露真实IP,可通过SecurityTrails等服务查询。
检查其他域名记录:查找同一主域下的其他子域名(如
test.example.com),它们可能未接入WAF并解析到真实IP。查询邮件服务器的MX记录也可能有发现。利用网络配置漏洞:例如,部分WAF会对来自搜索引擎爬虫或特定IP段(如内网地址
127.0.0.1)的请求放行。可通过修改HTTP头部的X-Forwarded-For或User-Agent等字段伪装成这些白名单身份。
2. HTTP协议层绕过
此层面利用WAF与后端Web服务器对HTTP协议处理和解析的差异。
分块传输编码:使用
Transfer-Encoding: chunked将请求体分块发送。部分WAF可能不会正确重组和检测分块内容,而后端服务器会正常处理,从而绕过检测。参数污染:提交多个同名的参数(如
?id=1&id=union select 1,2,3)。WAF可能只检测第一个看似无害的参数(id=1),而后端程序(如PHP)实际会取最后一个参数(id=union select 1,2,3)执行。协议合规性与编码混淆:
修改Content-Type:将
application/x-www-form-urlencoded改为multipart/form-data,部分WAF对后者的检测可能较弱。使用特殊字符集:在Content-Type中指定非常见字符集(如
charset=ibm500),WAF可能无法正确解码,而后端可以。双重URL编码:对特殊字符进行两次URL编码(如单引号
'编码为%27,再编码为%2527)。如果WAF只解码一次,就可能被绕过。
3. 应用程序层绕过
此方法利用特定Web服务器、开发框架或编程语言的解析特性。
利用特定环境解析差异:
IIS + ASP 环境:IIS处理URL时,会忽略掉某些情况下百分号
%后邻接字符拼起来不在URL编码表内的%符号。例如,un%ion可能被IIS解析为union。PHP 环境:在文件上传的多部分表单数据中,如果出现多个
filename属性,PHP可能取最后一个,而WAF可能检查第一个。
命令/代码执行混淆:在系统命令执行中,绕过对空格的检测(如使用
cat</etc/passwd或cat${IFS}/etc/passwd),或对关键词进行分割(如c'a't /etc/passwd)。
4. 数据库层绕过
主要针对SQL注入防护,利用数据库自身的语法特性。
注释与空白符:使用注释(
/**/)或特殊空白符(如TAB%09、换行%0A)分割SQL关键词,如union/**/select。函数与语法技巧:使用数据库特定函数或语法,如MySQL的内联注释
/*!50000union*/select,或利用浮点数词法解析特性(8E0union select)。
🧭 实战思路与注意事项
信息收集是第一步:首先要识别目标使用的WAF类型、后端技术栈(Web服务器、编程语言、数据库)。这有助于选择最可能生效的绕过技术。
采用渐进式测试策略:不要一开始就使用复杂的组合技。应从最简单的方法开始(如修改HTTP头、添加普通注释),逐步提高混淆复杂度。
善用工具,但不依赖工具:Burp Suite、SQLMap等是强大助手,但高级WAF能检测工具指纹。需要手动修改请求,并利用工具的Repeater和Intruder模块进行精细测试。
组合多种技术:通常最有效的方法是将不同层面的技术结合使用。例如,在找到潜在绕过语法后,再结合分块传输或参数污染来传输最终Payload。
合法性是绝对前提:所有技术必须严格在获得明确授权的渗透测试或安全评估活动中使用。未经授权测试是违法行为。
🛡️ 防御视角
了解攻击是为了更好的防御。从防御者角度看,应对WAF绕过需要:
部署多层次防御:不应只依赖WAF。结合安全编码、定期漏洞扫描、入侵检测系统等构建纵深防御体系。
精细化WAF规则:定期更新规则库,配置WAF对多种编码格式进行完整解码链处理,并采用语义分析而不仅是简单特征匹配。
定期进行渗透测试:通过模拟攻击检验WAF防护有效性,发现并修复潜在绕过风险