基于渗透测试的SQL注入漏洞检测论文_邓敏茜,丁瑜

基于渗透测试的SQL注入漏洞检测论文_邓敏茜,丁瑜

中国移动通信集团广西有限公司梧州分公司 543002

摘要:Internet正在进一步的普及,计算机网络技术也在不断的快速发展,Web技术已经被广泛的应用。基于数据库架构和Web技术的应用系统己慢慢成为主流,在企业外部和内部的业务系统中被广泛应用。然而,Web应用系统所面临的安全风险也在与日剧增。

关键字:Web安全;SQL注入;渗透测试

Web安全渗透测试技术是针对Web应用积极防范的一种技术。此技术在应用遭受到攻击之前,通过模拟黑客攻击Web应用的方式,探测目标系统。而在各种Web应用攻击手段当中,SQL注入攻击是最易于实施的也是最常用的方法。所以,做好针对SQL注入攻击的防范和入侵检测工作可以对整个信息基础设施的安全起到保证作用,是Web应用系统能够安全应用的关键,也作为网络安全方面所要研究的一项重要课题。

一、SQL注入检测技术的研究

检测SQL的注入攻击,可以分成两种类型:系统运行时的动态检测和攻击发生前的漏洞检测。此处主要写检测的过程,对相关漏洞检测方法进行介绍。

1、传统的漏洞检测方法

传统的漏洞检测方法主要由敏感信息测试、网络爬虫和初步测试组成的。

首先利用网络爬虫搜索目标网站的链接得到网站的URL列表,然后对它进行敏感信息测试,了解目标网站数据库类型和服务器类型,最后在初步进行测试,来确定网站是否有注入漏洞的存在。

在SQL注入攻击还没有被人们足够重视的时,传统的测试方法基本上可以对大多数网站进行SQL注入漏洞的检测。对于重视网络层防护而忽视应用层防护的Web系统来说,传统的测试方法通常都是有效果的。

敏感信息在测试的过程中,相关描述如下:

步骤1,从测试的语句库中读入,敏感信息测试的脚本。

步骤2,提交敏感信息测试脚本和包含待测URL的HTTP请求。

步骤3,对服务器返回信息进行分析,对相关敏感信息进行确认。

而初步测试的过程描述就是按照下面如下进行的:

步骤1,从测试语句库中读入用于初步测试的测试脚本。

步骤2,提交包含待测URL和初级测试脚本一(and 1=1)的HTTP请求。

步骤3,提交包含待测URL和初级测试脚本二(and 1=2)的HTTP请求。

步骤4,分析服务器返回信息,若步骤2返回结果正常,继续步骤3;若步骤3返回结果异常,则说明待测系统存在SQL注入漏洞。反之还需进行深度测试作进一步的确认。

2、传统检测方法存在的问题

分析传统SQL注入漏洞的检测方法,关键有下面几个问题的存在:第一,不规范的检测过程。检测SQL注入漏洞的工具有很多,然而只是把一些测试用例简单的进行组合,从表面上来看,测试用例非常丰富,但没什么代表性。这种检测方法有着比较大的盲目性,在漏洞没有检测出来的情况下,所有的测试用例都要尝试,其结果会导致检测效率低,工作量大。第二,测试用例比较简单。有一部分检测SQL注入漏洞的工具,检测过程虽然比较规范,但在测试的用例上却相对简单。对于Web系统加入防过滤机制的这种情况,没有全面考虑,一般是对其进行简单的变换或是直接使用经典的测试方法,其结果会有一定漏报率的产生。第三,对漏洞形成的原因不能及时分析。传统的漏洞检测方法只能简单地对目标网站扫描,扫描结束之后得到一个存在SQL注入漏洞的URL列表,但测试者对漏洞形成的原因并不能及时的分析。

3、基于等级划分的漏洞检测方法

在目前的Web应用系统中,开发人员会采取SQL注入过滤防御机制,依据漏洞检测的困难程度,可将Web应用系统中的SQL注入漏洞划分为三个级别。

(1)初级漏洞的划分

Web应用程序对于用户输入数据没有进行任何的过滤或验证,只是简单的按照用户的输入构造动态的SQL语句。一般比较常见的构造参数包括有“’”,“””和经典的测试方法:“and 1=1”和“and 1=2”。

期刊文章分类查询,尽在期刊图书馆

比如某论坛用户登录 ASP代码如下所示:

string sql = "Select * from Userlnfo where userName='+user_input.Text+' andPassword='+pass_input.Text+'";

当攻击者在用户名的文本框输入“abc' or 1=1--"时,因为在SQL语法中“--”是注释符,后面的全部语句都会被注释掉,类似"1=1”这样的恒等式使得SQL语句中的Where子句永真,所以攻击者能够顺利通过身份验证。

(2)中级漏洞的划分

Web应用程序对于SQL一些特殊字符和语法关键字进行了过滤。一般比较常见的SQL关键字有:"and",“select”, "insert", "delete", "update"等等,而特殊字符有“”,“*”等攻击者一般能够使用下面几种方式来绕过Web应用程序的过滤规则。

主要方式有下面几种:第一,变体关键字的使用。假如说应用程序只是对SQL语法关键字的原型(即全部大写和全部小写的两种情况)简单限制,使用关键字不同变体组合来替代它的原型,例如我们可以用SeLect来代替Select。第二,ASCII码的转换。把用户全部字符或者输入的部分用ASCII码来表示,也可以避开Web应

用程序中的特殊字符或关键字的过滤机制,比如A=char(65),c=char(99)等。第三,重新组合法。应用程序如果对用户的输入过滤了关键字“and”,可以使用“aandnandd”来替代用户输入中的“and”,当Web应用系统过滤掉两个“and”时,所剩下的字符刚好就可以组成一个新的“and”,从而起到能够避开关键字过滤机制。第四,UNICODE编码。当使用Unicode编码URL中的特殊字符时,Web服务器将会自动对它解码。比如空格对应的Unicode码为%20,`='为%30,那么输入

"and%201%3Dr与输入"and 1=1”是等效的,显然前者绕开应用程序过滤规则的可能性要大于后者。

(3)高级漏洞的划分

Web应用程序一般会使用存储过程来完成对于数据库的访问。自定义的存储过程能够非常好地限制与程序无关的一些操作,虽然可以使数据库的安全性提高,但这对SQL注入漏洞并不能避免,因为存储过程的本身就是由许多SQL语句来实现的,和普通程序一样,也有一定风险的存在。很多Web应用程序放弃了动态SQL技术,从而使用参数化查询的方法来对SQL语句构造。参数化查询为用户输入的每个数据预留占位符,再对每个占位符的内容制定,这样做能够对SQL注入有效的阻止。但相比于构造简单的SQL动态查询,使用参数化查询语句相对来说就需要花费更多的精力和时间,很多开发人员一般只会注意由用户直接提交的输入,结果对二阶SQL注入攻击就很容易忽略。基于等级划分的漏洞检测方法,就是根据检测SQL注入漏洞的难易程度,分成很多等级。对处于不同等级的SQL注入漏洞,分别制定对应的测试用例。测试用例有许多种。

此种检测方法的优点如下:第一,较强的针对性。假如测试者根据某些途径对目标网站的安全防护情况事先了解,比如说网站没有任何针对Web应用层上所做的防护措施,那么这个时候就能够选择低级漏洞的测试方法对它进行漏洞检测;假如知道网站有加强Web应用层防护措施,就能够直接使用中级漏洞的测试方法对其

漏洞进行检测。第二,可以对漏洞形成的原因及时分析。在明白漏洞所处的级别之后,就可以大致的分析出网站存在漏洞的原因,从而能够找到修复的对策。然而这个方法存在的不足,就是在不清楚网站的安全防护措施的情况下面,只能从检测低级漏洞入手,各种用例的尝试,直到检测出漏洞为止,具有一定盲目性。

二、SQL注入漏洞检测思路

HTTP协议是Web通信协议的基础协议,协议的请求报文通常分成请求体和请求头这两个部分,从HTTP协议中的请求报文中能够看到,通过工具,攻击者能够修改GET请求的内容,还能够把GET请求修改成为POST请求,修改Cookie的内容,修改数据内容等。所以在客户端验证用户的身份信息,没有一点,因为一切HTTP请求内容都能够伪造。所以对攻击者而言,主要把HTTP协议的内容改变,通过观察服务器端的响应,从而发现漏洞。

结语:SQL注入漏洞是针对Web应用开发过程中的一个比较常见漏洞,对于很多防火墙而言,基于应用层的SQL注入攻击是能够绕过的。数据库服务器的版本即使一直在不断更新,各种脚本语言本身的漏洞也变得越来越少,可是随着SQL注入攻击技术正不断的提升,只要Web应用程序中依然有此类漏洞的存在,就会潜伏着被攻击和利用的隐患,对用户安全甚至是整个系统都将威胁巨大。所以,做好针对SQL注入攻击的防范工作和入侵检测,从而使整个信息系统的安全能够得到保证,是网络安全方面所要研宄的一项重要课题,同时也是Web应用程序得以安全应用的关键,对于Web应用程序的安全开发有着非常重要的意义。

参考文献:

[1]高鹏,严望佳.构建安全的Web站点[M],清华大学出版社,1999.

[2]杨波,朱秋萍.Web安全技术综述[J].计算机应用研宄,2002,19(10):1-4.

[3]练坤梅,许静,田伟,等.SQL注入漏洞多等级检测方法研究[J].计算机科学与探索,2011,5(5): 474-480.

[4]张卓.SQL注入攻击技术及防范措施研宄[D].上海:上海交通大学,2007.

论文作者:邓敏茜,丁瑜

论文发表刊物:《基层建设》2016年14期

论文发表时间:2016/10/28

标签:;  ;  ;  ;  ;  ;  ;  ;  

基于渗透测试的SQL注入漏洞检测论文_邓敏茜,丁瑜
下载Doc文档

猜你喜欢