资产收集:从冷门技术栈入手
在挖掘漏洞时,面对热门目标,常规路径往往已被反复测试。如何另辟蹊径?一个有效的思路是关注那些使用小众或冷门技术栈的系统,这些系统可能因为测试者较少而潜藏着未被发现的漏洞。
本次的目标是“最好看的证书站”,我的策略是寻找使用冷门编程语言开发的站点。根据2024年2月的TIOBE编程语言排行榜,Ruby语言的使用率相对较低。

因此,我直接使用网络空间测绘引擎,以 domain=*.edu.cn && app=ruby 为条件进行搜索。

选择冷门开发语言还有另一个原因:许多站点的搜索功能使用了统一的框架。例如,教育机构常用的Java框架(参数常带 wbtreeid)或 WebPlus Pro 这类统一搜索引擎,它们通常经过严格封装,存在SQL注入漏洞的可能性极低。


最终,在通过 app:ruby 筛选出的站点中,一个简单的搜索测试很快便发现了注入点。

SQL注入漏洞的发现与初步利用
本次测试使用了DetSql插件进行自动化SQL注入扫描,它可以智能识别参数并判断注入概率。我习惯性地配置了域名和参数黑名单,以过滤掉干扰项和常见的误报参数。

插件检测显示存在高概率的SQL注入,并且直接返回了数据库的错误信息,这非常有利于后续分析。

将错误信息交给AI分析,可以清晰地还原出原始的SQL语句结构。这是一个典型的基于 LIKE 的模糊查询注入。

绕过长亭AI WAF的实战过程
1. 初探与识别
首先尝试通用的测试Payload,发现请求被长亭SafeLine WAF阻断,确认了WAF的存在。

2. 尝试编码绕过
尝试对Payload进行Base64等编码,发现仍然被拦截。这表明WAF具备解码和分析能力,简单的编码混淆难以奏效。同时,观察到多次尝试后响应时间逐渐变长,这暗示WAF可能带有基于行为分析的防御机制。


AI分析也确认了该Payload的恶意性。

3. 关键突破:构造“非典型”错误
尝试闭合单引号后添加一个无效的关键字,如 invalid_keyword。这个构造触发了数据库的语法错误,但神奇的是,WAF没有拦截。

这给了我一个启发:WAF(很可能是AI驱动的)可能没有将这种“看起来是编程错误而非典型攻击”的请求识别为威胁。我们的目标就是让真正的攻击Payload“伪装”成这种无害的格式错误。
4. 构造绕过Payload
思路:利用 %‘|| 这类组合,让整个查询条件在视觉上更像一个“未闭合完整”或“逻辑混乱”的字符串拼接,而非经典的 ‘ or ‘1’=’1 式注入。
- 被拦截的Payload:
%‘ OR 1 REGEXP ‘[0-9]+‘
- 未被拦截的Payload:
%‘|| OR 1 REGEXP ‘[0-9]+%‘


应用此思路执行命令:
- 直接使用
select user() 会被拦截。

- 但使用
%‘||select user() 则成功绕过,并返回了当前数据库用户信息。

进一步利用:
- 使用
gtid_subset(user(),1) 等函数尝试时,部分会被拦截。

- 同样,结合
%‘|| 前缀成功绕过,并触发了函数错误,泄露了用户名信息。

分析与总结:AI WAF的机制与绕过原理
为了深入理解绕过原理,我们可以将成功的Payload交给AI进行分析。
1. 分析绕过格式 %‘||&‘
AI分析认为,%‘ 可能被识别为尝试闭合引号,但后续的 ||&‘’ 引入了字符串连接和按位与操作,使得整个结构看起来像一条逻辑混乱、可能产生语法错误的语句,而非标准的注入模式。

AI进一步列出了其识别的“潜在风险”,但指出这依赖于布尔盲注或时间盲注等后续利用。关键在于,我们的Payload本身只触发了“语法错误”,并未包含 sleep()、条件判断等明显的盲注特征。

2. 分析成功泄露信息的Payload %||gtid_subset(user(),1)&
AI分析指出,gtid_subset(user(),1) 会因参数格式错误而报错,|| 和 & 是操作符。它再次强调,攻击者需要依靠报错或响应时间差异来实现盲注。

核心绕过思路总结
基于以上分析,此次绕过长亭AI WAF的核心在于 “伪装”。
- 规避典型模式:避免使用
‘ OR、‘ AND、‘ UNION 等WAF规则库中高度敏感的典型注入模式。
- 制造“错误”假象:利用
%‘||、||&‘’ 等组合,构造出看似“格式错误”、“拼接混乱”的查询片段。AI可能将其判定为开发者编写的不严谨SQL语句,而非恶意攻击。
- 分离“错误”与“利用”:最终的利用函数(如
gtid_subset(user(),1))本身会触发数据库报错信息泄露。在AI看来,这条语句只是将一个错误格式的参数传给了函数,它本身不具备 if()、case when 等实现布尔/时间盲注的条件判断结构,因此威胁等级被评估为较低。
简而言之,本次绕过的本质是构造了一种在AI看来“更像程序bug而非攻击exp”的Payload,从而逃过了基于语义和模式识别的安全检测。 这也提醒我们,在安全攻防的实践中,防御系统的智能化同样需要持续对抗和升级。

