找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2481

积分

0

好友

344

主题
发表于 4 天前 | 查看: 18| 回复: 0

资产收集:从冷门技术栈入手

在挖掘漏洞时,面对热门目标,常规路径往往已被反复测试。如何另辟蹊径?一个有效的思路是关注那些使用小众或冷门技术栈的系统,这些系统可能因为测试者较少而潜藏着未被发现的漏洞。

本次的目标是“最好看的证书站”,我的策略是寻找使用冷门编程语言开发的站点。根据2024年2月的TIOBE编程语言排行榜,Ruby语言的使用率相对较低。

2024年2月编程语言排行榜

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

Quake空间测绘搜索结果

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

统一Java搜索框架界面
WebPlus Pro搜索界面

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

发现SQL注入点

SQL注入漏洞的发现与初步利用

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

Burp Suite DetSql插件配置

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

Burp Suite返回SQL错误信息

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

AI还原SQL语句

绕过长亭AI WAF的实战过程

1. 初探与识别

首先尝试通用的测试Payload,发现请求被长亭SafeLine WAF阻断,确认了WAF的存在。

长亭WAF拦截页面

2. 尝试编码绕过

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

不同响应时间对比
响应时间变长

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

AI分析恶意Payload

3. 关键突破:构造“非典型”错误

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

触发数据库语法错误但未被WAF拦截

这给了我一个启发:WAF(很可能是AI驱动的)可能没有将这种“看起来是编程错误而非典型攻击”的请求识别为威胁。我们的目标就是让真正的攻击Payload“伪装”成这种无害的格式错误。

4. 构造绕过Payload

思路:利用 %‘|| 这类组合,让整个查询条件在视觉上更像一个“未闭合完整”或“逻辑混乱”的字符串拼接,而非经典的 ‘ or ‘1’=’1 式注入。

  • 被拦截的Payload%‘ OR 1 REGEXP ‘[0-9]+‘
  • 未被拦截的Payload%‘|| OR 1 REGEXP ‘[0-9]+%‘
    WAF拦截REGEXP测试
    REGEXP测试绕过WAF

应用此思路执行命令

  • 直接使用 select user() 会被拦截。
    select user()被拦截
  • 但使用 %‘||select user() 则成功绕过,并返回了当前数据库用户信息。
    使用%‘||select user()成功绕过

进一步利用

  • 使用 gtid_subset(user(),1) 等函数尝试时,部分会被拦截。
    gtid_subset被拦截
  • 同样,结合 %‘|| 前缀成功绕过,并触发了函数错误,泄露了用户名信息。
    使用%‘||gtid_subset绕过成功

分析与总结:AI WAF的机制与绕过原理

为了深入理解绕过原理,我们可以将成功的Payload交给AI进行分析。

1. 分析绕过格式 %‘||&‘

AI分析认为,%‘ 可能被识别为尝试闭合引号,但后续的 ||&‘’ 引入了字符串连接和按位与操作,使得整个结构看起来像一条逻辑混乱、可能产生语法错误的语句,而非标准的注入模式。

AI分析%‘||&‘’ Payload

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

AI列出的潜在风险

2. 分析成功泄露信息的Payload %||gtid_subset(user(),1)&

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

AI分析gtid_subset Payload

核心绕过思路总结

基于以上分析,此次绕过长亭AI WAF的核心在于 “伪装”

  1. 规避典型模式:避免使用 ‘ OR‘ AND‘ UNION 等WAF规则库中高度敏感的典型注入模式。
  2. 制造“错误”假象:利用 %‘||||&‘’ 等组合,构造出看似“格式错误”、“拼接混乱”的查询片段。AI可能将其判定为开发者编写的不严谨SQL语句,而非恶意攻击。
  3. 分离“错误”与“利用”:最终的利用函数(如 gtid_subset(user(),1))本身会触发数据库报错信息泄露。在AI看来,这条语句只是将一个错误格式的参数传给了函数,它本身不具备 if()case when 等实现布尔/时间盲注的条件判断结构,因此威胁等级被评估为较低。

简而言之,本次绕过的本质是构造了一种在AI看来“更像程序bug而非攻击exp”的Payload,从而逃过了基于语义和模式识别的安全检测。 这也提醒我们,在安全攻防的实践中,防御系统的智能化同样需要持续对抗和升级。

人民英雄永垂不朽雕像

粉红定位图标动图




上一篇:2G退网困境:破解物联网迁移难题,释放网络演进空间
下一篇:从硬件产业分工看软件“自研”困境:为何我们总在重复造轮子?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 02:54 , Processed in 0.276515 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表