SQL注入绕WAF技巧的核心在于识别WAF规则中的盲点,通过混淆、编码、逻辑变形等手段让恶意SQL语句逃过检测。常见的绕过方式包括:使用大小写变体、内联注释、特殊字符分割、十六进制或Unicode编码、时间盲注替代布尔盲注,以及利用数据库特性如MySQL的/*!50000*/语法。防御绕过检测则需要部署动态行为分析、机器学习模型和语义层过滤,而不仅仅是依赖正则表达式规则。

一、WAF规则匹配的常见盲点与大小写/注释绕过

大多数WAF依赖正则表达式匹配关键词如SELECT、UNION、WHERE等,但简单变体就能绕过。例如,将SELECT写成SeLeCt或SeLeCT,可以避开大小写敏感的正则规则。内联注释是另一种有效手段,尤其在MySQL中,/*!SELECT*/会被数据库执行但WAF可能忽略。示例:

UNION /*!SELECT*/ 1,2,3 FROM users

还可以混合使用注释分割关键词,如SEL/**/ECT,WAF的正则可能无法识别被注释分隔的单词。此外,某些WAF会过滤空格,但用Tab、换行符或/*注释*/替代空格也能绕过,例如:

SELECT/*comment*/id/*comment*/FROM/*comment*/table

二、特殊字符与编码混淆技术

WAF通常过滤单引号、等号等字符,但可用编码替代。例如,将单引号'转为十六进制0x27或URL编码%27,在SQL中配合CHAR()函数使用:

SELECT * FROM users WHERE name=CHAR(97,100,109,105,110)  // 相当于'admin'

Unicode标准化也是一种高级技巧,如使用双写字符或非常规编码:在某些场景下,'可写为%u0027,WAF解码层可能处理不当。另外,利用数据库的隐式类型转换能绕过等号过滤,比如用LIKE或IN替代=,或用数学运算如OR 1=1改为OR 2>1。

三、时间盲注与分块传输绕过

当WAF拦截显式错误或布尔响应时,时间盲注往往有效,因为它不依赖直接输出。通过SLEEP()或BENCHMARK()函数,注入延迟判断条件:

' OR IF(SUBSTR(database(),1,1)='a', SLEEP(5), 0)--

分块传输编码则针对HTTP协议层:将请求体分块发送,WAF可能无法重组完整内容进行检测。例如,将恶意SQL拆分为多个chunk,中间插入无害数据,WAF规则可能只扫描单个chunk而遗漏威胁。

四、数据库特性与多重语句绕过

不同数据库的特性可被利用。MySQL的/*!50000 ... */语法会视版本执行,而WAF可能不解析内部内容。SQL Server的EXEC()函数可动态执行字符串,混淆后如:

EXEC('SEL' + 'ECT * FROM users')

多重语句注入(堆叠查询)在支持如PHP的PDO_mysql中可能生效,通过分号分隔多个语句:

'; DROP TABLE users; --

WAF往往只检测第一个查询,忽略后续部分。此外,使用非常用分隔符或注释语法,如PostgreSQL的--;或MySQL的#,也能规避规则。

五、防御绕过检测:从规则到行为分析

传统WAF依赖静态规则,但现代防御需多层结合。首先,启用动态分析:监控SQL语句的执行模式,如异常延迟、高频请求或语法结构变化。其次,部署机器学习模型,训练正常查询基线,识别偏离行为,例如突然出现大量注释或编码字符。语义层过滤也至关重要:解析SQL抽象语法树(AST),比较用户输入与预期结构,即使混淆也能发现逻辑异常。

六、实战中的综合绕过策略

实际攻击常组合多种技巧。例如,先通过大小写变体绕过关键词检测,再用十六进制编码绕过引号过滤,最后添加时间延迟规避输出检测:

' UNION /*!SeLeCt*/ 1,2,IF(ASCII(SUBSTR(database(),1,1))>100, SLEEP(3), 0) FROM users--

同时,利用HTTP参数污染或头部注入(如X-Forwarded-For)传递恶意负载,WAF可能只检查标准参数。此外,缓慢发送请求或使用长字符串填充,可触发WAF的缓冲区限制导致检测失效。

七、防御建议与检测优化

要有效防御,需采取主动措施:一是实施预编译参数化查询,从根源杜绝注入,如使用Java的PreparedStatement。二是强化WAF配置,启用基于令牌的检测而非纯字符串匹配,并定期更新规则库。三是部署运行时应用自保护(RASP),在代码层监控SQL执行。检测方面,建议结合日志分析与AI工具,识别低频异常模式,并设置阈值告警,如单会话内多次语法错误或延迟请求。

总之,SQL注入绕WAF是一个持续对抗过程,攻击者不断寻找规则弱点,而防御方需升级到智能动态系统。保持代码安全实践、多层检测和实时响应,才能最大限度降低绕过风险。