欢迎光临
我们一直在努力

sqlmap 魔改研究 —— 从流量特征到 WAF 对抗

🔧 sqlmap 魔改研究 —— 从流量特征到 WAF 对抗

本文记录了对 sqlmap 进行源码级魔改的完整过程,目标是通过修改流量特征、请求头、payload 混淆等手段,降低被 OWASP ModSecurity CRS 规则集检测到的概率。所有测试均在本地靶场(DVWA)环境下进行,仅用于学习和安全研究。


🧠 思路

很多人用 sqlmap 跑 SQL 注入,结果一跑就被 WAF 拦得死死的,403 一片。

其实 WAF 拦截 sqlmap 不是魔法,靠的是规则匹配——它认识 sqlmap 的\”味道\”:固定的 UA、特定的请求头、可预测的 payload 结构。

所以思路也很简单:把 sqlmap 改得不像 sqlmap。

改哪里?大概分三层:

第一层:身份特征   → UA、版本字符串、Banner
第二层:流量特征   → 请求头、请求间隔、Host
第三层:Payload   → 关键字大小写、空格混淆、随机 padding

下面一层一层来。


🏗️ 环境搭建

  • 靶场:DVWA(phpstudy 本地部署,端口 8564)

  • WAF:OWASP ModSecurity CRS(Docker 部署,端口 8080)

  • 工具:sqlmap 1.10,Python,Wireshark/小蓝鲨

WAF 启动命令(检测模式,只记录不拦截):

docker run -d \\
 –name modsec-waf \\
 -p 8080:8080 \\
 -e BACKEND=http://172.30.240.1:8564 \\
 -e PROXY_SSL=off \\
 -e PROXY_TIMEOUT=60 \\
 -e MODSEC_RULE_ENGINE=DetectionOnly \\
owasp/modsecurity-crs:nginx

流量走向:

sqlmap → localhost:8080 → ModSecurity → phpstudy:8564 → DVWA

保存日志:

docker logs modsec-waf > waf_log.txt 2>&1


🔍 先看原版的\”指纹\”

用小蓝鲨抓一下原版 sqlmap 的包,过滤条件:

http.request && ip.dst == 127.0.0.1

一眼就能看到问题:

  • User-Agent: sqlmap/1.9.10#pip (https://sqlmap.org) —— 这不就是自报家门吗 🤦

  • Accept: */* —— 正常浏览器不会这么发

  • 没有 Accept-Language、Accept-Encoding、Referer 等正常请求头

WAF 看到这个请求,直接触发 913100(扫描器 UA 检测)规则,得分 +5,超过阈值直接拦截。


📊 原版 WAF 检测基准数据

先跑一遍原版 sqlmap,记录 WAF 触发了哪些规则,作为对比基准:

sqlmap -u \”http://127.0.0.1:8080/vulnerabilities/sqli/?id=1&Submit=Submit\” \\
 –cookie=\”…\” –batch –level=3

结果:

规则ID
触发次数
描述
913100 100次 UA 含 sqlmap 字样
920350 100次 Host 头是纯数字 IP
9
赞(0)
未经允许不得转载:171主机测评 » sqlmap 魔改研究 —— 从流量特征到 WAF 对抗
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址