如何用SQLMap绕过WAF防护?

7 人参与

在实际渗透测试中,WAF(Web Application Firewall)往往是第一道防线,而SQLMap作为自动化注入工具,若能悄然穿透这层防护,将大幅提升信息获取效率。下面从技术细节出发,拆解几种常见的绕过思路,并配合对应的SQLMap参数示例。

认识WAF的拦截机制

大多数WAF会基于特征匹配、正则过滤和行为分析三类规则:

  • 关键字过滤:如 unionselectsleep 等。
  • 异常请求体:异常的 Content-Type、过长的 URL 或者非法的 HTTP 方法。
  • 行为阈值:短时间内大量相似请求触发速率限制或验证码。

SQLMap 绕过技巧概览

  • 伪装 User‑Agent 与 Referer:使用 --user-agent--referer 让请求看似来自普通浏览器。
  • Payload 变形:借助 --tamper 脚本(如 space2commentbetween)把关键字拆解成等价但不被过滤的形式。
  • 请求分块:--chunked(若目标服务器支持)让 WAF 难以完整解析 HTTP 报文。
  • 延迟与速率控制:--delay--timeout 配合,规避速率检测。
  • 自定义 Header:--headers 注入 X‑Forwarded‑For、X‑Real‑IP 等伪装字段,混淆来源。

实战示例

sqlmap -u "http://example.com/search.php?q=1" 
    --batch 
    --level=5 --risk=3 
    --tamper=space2comment,between 
    --user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)" 
    --referer="https://www.google.com/" 
    --delay=2 
    --threads=4 
    --random-agent

上述指令通过两层 tamper 脚本将 SELECT 关键字拆散为 S E L E C T,并用移动端 UA 迷惑部分基于 UA 的规则;--delay--threads 的组合让请求速率保持在 WAF 的阈值以下。

进阶:利用代理链路混淆来源

当目标部署了高级行为分析(如机器学习模型)时,单一 IP 的请求仍然可能被标记。此时可以引入 --proxy--proxy-file,让 SQLMap 轮流使用多个出口 IP;配合 --tor 更进一步隐藏真实网络路径。

综上所述,绕过 WAF 并非“一招就灵”,而是需要根据防护规则、业务特性和网络环境,灵活组合伪装、变形、速率控制等手段。熟练掌握这些技巧,才能在面对不断进化的防御体系时,仍保持渗透的主动权。

参与讨论

7 条评论
  • 熵增无序

    这方法试过,tamper脚本有时候会被新版WAF识破啊🤔

    回复
  • FeatherDancer

    伪装成手机UA真的有用?我上次用安卓的还是被拦了

    回复
  • 我的话筒

    前几天刚搞完这个,确实折腾了好久,delay设太小直接IP被封

    回复
  • 印月痕

    又是讲绕过的,能不能说说怎么判断目标用的是哪种WAF?

    回复
  • 夜行者小鹿

    感觉还行,不过现在云WAF都带AI行为分析了,光改UA不够吧

    回复
  • 数字陶艺师

    hhh老手都懂,关键还是得配合手动fuzz,别全靠sqlmap

    回复
  • MirageDancer

    这个配置在Nginx+ModSecurity环境下能跑通吗?

    回复