智能化扫描场景分析—精细化扫描SQL注入漏洞
作者: 日期:2019年06月03日 阅:9,265

SQL注入漏洞,是攻击者对数据库进行攻击的常用手段之一,其本质是攻击者输入的数据可以被当做代码来执行,进而获取到数据库的控制权限。由于危险等级和出现频次常常较高,SQL注入漏洞正无时无刻不受到企业安全人员的重视。

先来看以下几组数据。

OWASP在2013年和2017年先后发布了两个版本的《Top 10 Web应用程序安全风险报告》,随着Web应用架构和技术的不断发展,应用程序的基础技术和结构发生了重大变化,安全风险也不断更迭,新的安全风险涌现,逐渐取代旧的。值得注意的是,注入漏洞始终蝉联TOP 1的安全风险事件

 

2019年第一季度,长亭科技监测并发布了季度漏洞观察报告,报告显示,全球范围内约发生12.43亿次Web攻击,日均1.38千万次。在进行Web攻击时,SQL注入依然是最常被采用的手段,且该攻击手法的使用频率是排名第二的跨站脚本攻击的数十倍 。

图 高频攻击方法分布

依据行业通用评级标准,细分高危、中危与低危漏洞, SQL注入漏洞占比也显著多于大部分漏洞类型。

图 高危Web漏洞类型分布

由于SQL注入的本质一样,所以它的攻击流程也是大同小异,一般的攻击流程是这样的:

  • 寻找Web系统参数
  • 判断参数是否会对数据库查询造成影响,从而定位注入点
  • 判断注入点在SQL语法中的位置
  • 补全SQL语句,构造Payload
  • 尝试读取数据库中的数据、尝试执行系统命令、尝试读写文件
  • 根据现有漏洞提权,进行下一步攻击

对于攻击者而言,使用SQLMAP之类的工具就可以快速定位SQL注入漏洞,并进行利用,或者使用SQLMAP API进行自动化发现和利用。

而企业安全建设者或白帽子在进行SQL注入漏洞检测时,却不能简单粗暴的参照攻击流程进行检测。企业在实际漏洞检测过程中不得不考虑以下几个因素

  • 企业资产安全性问题。由于SQL注入漏洞检测是直接操作数据库和服务器,操作不当无疑会对企业资产产生不安全风险。比如当某个更新或者删除接口存在SQL注入漏洞时,全站数据很可能会因为传入一个1 or 1=1的Payload而丢失;
  • 绕 WAF检测问题。企业通常会配备WAF来防御SQL注入攻击,对于漏洞扫描器来说,如果不能做到模拟攻击者行为绕过WAF防御,在扫描过程中就会被拦截,也就不能检测到企业资产中可能存在的SQL注入漏洞;
  • 企业场景下SQL注入检测速度慢、准确率低的问题。判定SQL注入漏洞的规则很多,若想保证检测准确率,必须进行足够精细化规则的判断,与此同时,规则精细化必然会影响整体的扫描速度,延长一个SQL注入漏洞的检测时间。如何快速发现从资产中精准发现SQL注入漏洞成了一个难题。

针对以上问题,洞鉴(X-Ray)安全评估系统在对企业资产进行SQL注入漏洞的检测时,从Payload验证、WAF绕过、SQL注入智能识别等方面,结合多年攻防的经验,针对性的做了以下处理:

使用无害Payload  验证保证企业资产安全性

上文提到过,SQL注入漏洞检测过程中,如果使用不当的Payload很有可能会造成内存爆炸、删库等风险操作。

比如针对Payload“where id=1 or 1=1”,1)执行select操作时,可能会引起内存爆炸;2)执行update/delete操作时,则会导致整个数据库被更改或者被删除。

洞鉴(X-Ray)在进行检测时会大量使用报错注入的Payload,确保 Payload 能进入SQL查询,但是又不会直接影响数据库内容;在报错注入无效的情况下使用基于时间的盲注,通过侧信道的方式判断 Payload对于请求的影响,坚决不使用会导致全局条件恒真的布尔条件,可以从根本上解决Payload对业务造成的副作用问题。

智能识别绕过一般的WAF  拦截规则提高资产检测的全面性

1、洞鉴(X-Ray)的SQL注入以检测为主,而非进行拖库操作,所以针对一些防御边界的场景,可以弱化攻击特征,从而降低被 WAF拦截的几率;

2、如果在扫描过程中检测到被WAF拦截了,会自动对 Payload 进行变换,尝试去绕过WAF。比如将1 and 1=1替换为 1/**/and/**/1=1等等。

采用多种智能识别算法  提高SQL注入识别的速度和精准度

1、优先使用自启发式扫描,在存在SQL漏洞的情况下可以确保使用最少的请求完成检测,准确率达到 99% 以上;

2、对于时间盲注,加入了魔力超时算法,并进行交叉验证,解决了服务器响应时间抖动产生的误报;

3、对于布尔盲注,加入了高精度字符串、DOM 、JSON相似度对比算法,可自动识别拟态,解决了服务器响应页面随机抖动产生的误报;

4、采用通用Payload,在不需要对数据库进行识别的场景下,自动忽略数据库差异化,直接进行SQL注入漏洞的检测验证。避免了对不同数据库反复进行Payload验证的环节,从而节省扫描时间;

5、根据页面返回的动态数据特征,智能排除干扰因素,然后再进行页面对比。根据HTML、JSON等页面返回的内容,查询全部动态数据,智能排除一些动态的干扰数据,再对不同类型数据进行对比,来判断是否存在SQL注入;

6、基于参数的智能语义分析算法,实现模拟攻击者进行精细化SQL注入探测的目的。从参数位置、参数类型和response报错信息等多个维度,对语义进行智能化分析、对识别规则进行自动化替换。

  • 从参数存在的位置和参数类型上,进行智能化分析和替换
比如:针对Query:/a?id=1 和json: {“id”: 1} 这个Payload,1)自动识别参数位置:将“1’ or ‘1’=’1”插入参数的位置;2)分析参数类型:对于Query类型的参数,“/a?id=1’ or‘1’=’1 ”是合法的;

对于json类型的参数,{“id”: 1’ or‘1’=’1} 错误的;

再比如: “?page=1&sort=date ”,其中sort参数虽然看起来是字符串,但是可能不适用于布尔注入,因为sql可能是order by$sort;

  • 针对response报错信息,智能识别替换注入Payload。在检测到数据的validation存在时,将会对报错信息进行智能的语义识别,然后根据识别的信息变换注入的Payload,尝试去绕过validation。
比如:1)填写一个参数(“a’ or ‘a’=’1”),进行提交2)返回报错信息:“data : this field must be an integer”3)自动替换输入的参数(“1+2-1”),再次进行验证,因为后端的验证可能是有bug的,比如写了个正则表达式\d+等。

SQL注入的漏洞详情部分截图如下所示:

随着 B/S(浏览器/服务器) 模式的发展和普及,企业应用结构不断优化,逐渐呈现出方便、易扩展、易开发维护和共享性强的特点。然而,与此同时,由于研发人员的水平参差不齐,在Web应用编写时,有很大几率无法全面考虑对用户输入的数据进行合法判断的情况,从而无可避免的为企业资产管理埋下安全隐患。

长亭洞鉴(X-Ray)在对SQL注入漏洞进行检测时,加入了无害的Payload验证、绕 WAF识别机制以及智能的语义分析算法,结合企业业务场景,对企业资产进行全面、精细化的安全性检查,为客户解除企业资产是否存在SQL注入漏洞的后顾之忧,帮助企业全面提高资产管理的效果和效率,从而为提升企业市场竞争能力、提升企业经济效益提供了有力支撑。

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章