雷池简介
雷池是全球首款基于智能语义分析引擎的下一代Web应用防火墙,用算法的迭代改变规则防护的现状,使检测的准确率和误报率产生质的飞跃,并且对WEB攻击防护难题(未知威胁、0day)有天然的防护能力。2015年提出语义分析技术并实践落地,受邀美国Black Hat大会展示SQL Chop,2016年,雷池(SafeLine)基于语义分析引擎发布后至今,已连续6年实现100%业绩增长。
目前雷池WAF已免费开放社区版,对雷池引擎感兴趣的师傅可至github:https://github.com/chaitin/safeline 下载体验,顺便点个免费的star~
SQL注入模块简介
与传统的规则引擎不同的是,雷池使用智能语义分析判断SQL注入攻击。语义分析不受规则限制,只通过判断PAYLOAD是否符合SQL语法,从而大大降低规则引擎的漏报率和误报率,提高0day的识别率。同时语义分析维护成本低,没有繁琐的规则语句。
SQL注入检测原理
当攻击者在尝试进行SQL注入攻击时,会通过构造片段或完整SQL语句注入到正常的Request请求中,最终向受害数据库执行SQL语句,达到攻击效果。
雷池作为WAF产品,对请求参数进行特征识别,对符合SQL特征的语句进行分词,片段语法分析,从而给出判断结果。
检测流程
SQL注入检测主要由词法、语法、特征指纹、函数结构、语法结构五个部分组成,对于输入的Payload会经过以下步骤进行检测:
-
1. 对Payload进行分词,得Token序列。
-
2. 对Token序列进行片段语法分析,得到符合SQL语法的Token序列,不符合SQL语法停止检测。
-
3. 根据Token序列识别常见SQL注入的特征指纹,进行打分。
-
4. 识别Token序列中函数结构,进行打分。
-
5. 根据SQL语法,识别Token序列的语法结构,进行打分。
-
6. 综合各个阶段打分的结果,综合计算此Payload的检测得分,超过阈值则产生对应级别的告警。
举例说明
Payload: ' UNION SELECT 1 AS 'x' FROM flag#
检测引擎每个阶段执行情况:
-
1. 分词: 得到Token序列:
string union select number as string from bareword comment
-
2. 语法: 识别Token序列是符合SQL语法的片段代码
-
3. 特征分析: 识别其中有
闭合之前SQL 恶意SQL 闭合之后的SQL
特征指纹 -
4. 函数结构: 未有函数结构
-
5. 语法结构: 识别其中有
联合查询
语法结构 -
6. 综合打分: 将上述过程中每个阶段的分数综合计算,分数超过高风险,产生高风险告警
常见问题
-
1. 为什么我正常业务里传的SQL会被拦截?
-
• 雷池难以区分请求里的SQL语句是正常业务需要的还是攻击者的攻击语句。理论来说,能有接口让攻击者能直接执行SQL语句危害很大。
-
2. SQL注入模块的打分机制与预想的告警等级有偏差?
-
• 雷池SQL注入打分模块是根据词法、语法、威胁模型三个部分组成,打分机制经过多年的实战考验,已经趋于完善,但难免会有不足,我们会根据客户反应情况逐步改善。
-
3. 为什么某些PAYLOAD看起来SQL特征非常明显,但是雷池并没有告警?
-
• 因为雷池使用的语义分析引擎,与传统的规则引擎不同。雷池经过语义分析,发现它不符合SQL词法语法,在已知的数据库中是无法成功执行的,所以雷池不会产生告警。 例如
select vids from band's last show: http://bit.ly/6SHYLw http://bit.ly/8AZxfV http://bit.ly/5z4BQf
发现绕过
欢迎师傅们来 https://stack.chaitin.com/security-challenge/safeline/index 提交绕过,如若有效,可获得精美奖励!
结束语
欢迎感兴趣的师傅进群讨论~
注:如果二维码过期,可在公众号回复“加群”获取最新进群二维码
原文始发于微信公众号(Skynet 安全团队):雷池检测模块-SQL注入揭秘
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论