上一篇
http请求方法绕过waf
- 行业动态
- 2025-04-28
- 5
通过修改HTTP请求方法(如使用PUT/DELETE替代GET/POST)、大小写混淆(如%47eT绕过GET检测)或编码转换(如%0a换行分割),可尝试绕过WAF规则库限制,但需注意,此类行为可能触发安全设备联动防御,且属于灰帽测试范畴,实际渗透需结合
HTTP请求方法绕过WAF的常见思路与实践
WAF对HTTP方法的常规检测逻辑
- 白名单机制:多数WAF仅允许
GET
/POST
方法,过滤其他HTTP方法(如PUT
/DELETE
/HEAD
等)。 - 规则匹配:部分WAF通过正则表达式检测
method=
参数或请求头中的:method
字段。 - 请求体解析:少数WAF会深度解析请求体内容,识别伪装的HTTP方法。
主流绕过技术与实现方式
绕过类型 | 技术原理 | 示例代码(Python requests库) |
---|---|---|
方法替换 | 利用WAF未过滤的HTTP方法(如PUT /DELETE /OPTIONS )执行相同功能 | python<br>method="PUT"<br>data={"action":"login"} |
方法混淆 | 通过双冒号变形(GET:: )、大小写混合(GeT )绕过基于签名的检测规则 | python<br>headers={"X-Original-Method":"POST"}<br>method="GET" |
方法嵌套 | 在URL参数或Cookie中注入方法名,配合服务器端解析逻辑触发目标功能 | http://target?method=POST¶m=value |
自动化工具 | 使用Burp Suite等工具批量尝试非常规HTTP方法,突破WAF规则库覆盖范围 | Intruder->Positions->Method |
协议滥用 | 发送OPTIONS 方法触发服务器自动返回可执行方法列表,结合CSRF实现攻击 | python<br>method="OPTIONS"<br>verify=False |
WAF绕防对抗分析
graph TD A[攻击者] --> B{WAF检测逻辑} B -->|仅过滤GET/POST| C[允许PUT/DELETE等] B -->|规则匹配失败| D[拦截请求] C --> E[服务器解析异常方法] E --> F[执行未预期功能] D --> G[返回403/500错误]
实战案例与防御建议
案例:某云WAF绕过
- 原始请求:
POST /login HTTP/1.1
(被拦截) - 绕过请求:
PUT /login HTTP/1.1
(成功执行) - 根本原因:WAF规则库未更新HTTP/2新增方法(如
PATCH
)
防御建议:
- 启用严格的HTTP方法白名单(如仅允许业务必需的方法)
- 对
OPTIONS
/TRACE
等方法实施速率限制 - 在应用层二次验证请求方法合法性
- 定期更新WAF规则库,覆盖OWASP Top 10攻击向量
相关问题与解答
Q1:如何判断目标WAF是否过滤特定HTTP方法?
A1:可通过以下步骤验证:
- 使用
Nmap
扫描开放端口:nmap -p80 --script http-methods <target>
- 发送合法请求观察响应码(如
PUT
返回405表示正常过滤) - 尝试发送畸形方法名(如
GETXYZ
)测试异常处理逻辑
Q2:除了HTTP方法,还有哪些HTTP协议特性可用于绕过WAF?
A2:常见突破点包括:
- 多行Header注入:
Header1: value Header2: value
- Transfer-Encoding分块:通过chunked编码绕过请求体检测
- 协议版本降级:使用HTTP/1.0绕过HTTP/2专用防护规则
- Host头域名混淆:注册相似域名绕过证书绑定