当前位置:文档之家› Web应用SQL注入漏洞检测工具的设计与实现

Web应用SQL注入漏洞检测工具的设计与实现

Web应用SQL注入漏洞检测工具的设计与实现张鑫;张婷;段新东;林玉香【摘要】Web application development cycle is very short, and programmers lack the awareness of security programming, loopholes in Web applications are inevitable. So how to detect and assess security of Web applications is a serious problem of Web security. SQL Injection Detection System simulates the way that hacker at acks to send specific vulnerability characteristics. This tool can create URL library using the web crawler technology, and construct URL careful y based on SQL injection template. According to the response of browser, determine the existenceof SQL injection. Users can aware of Web application vulnerabilities early, and repair them timely. As a result the risk of at ack system is reduced and it is the ef ective method to protect Web security.%由于Web应用系统的开发周期较短,同时开发人员安全编程意识不足,Web应用程序会存在漏洞。

因此,检测Web应用系统的安全性是安全领域的亟待解决的问题。

SQL注入漏洞检测工具模拟黑客攻击的方式,采用网络爬虫技术建立需检测的URL库,依据SQL注入模板精心构造URL,并从根据浏览器返回信息,判定是否存在SQL注入点。

可以提前意识到Web应用存在的漏洞,并及时修补,降低系统受攻击的风险,是有效的Web安全防护手段。

【期刊名称】《信息安全与技术》【年(卷),期】2014(000)008【总页数】4页(P45-47,57)【关键词】SQL注入;漏洞检测;Web安全【作者】张鑫;张婷;段新东;林玉香【作者单位】南阳理工学院软件学院河南南阳 473000;南阳师范学院计算机与信息技术学院河南南阳 473000;南阳理工学院软件学院河南南阳 473000;南阳理工学院软件学院河南南阳 473000【正文语种】中文【中图分类】TP311采用B/S架构,并通过HTTP或HTTPS协议提供访问的应用服务统称为Web应用。

目前,几乎所有政府、通信、证券、银行以及电子商务都支持在线交易和查询服务,包括个人账户、用户信息、交易记录等在内的用户的敏感信息,都通过Web 应用系统存储在数据库中,一旦数据被盗取或篡改,都会造成巨大损失。

为降低系统受攻击的风险,可利用Web应用安全漏洞扫描技术,可以实现在线的Web应用健康检查,提醒网站管理员进行修补,是效果好的Web安全防护手段。

Web应用大多涉及服务器端的动态处理,同时,开发人员可能在开发过程中疏忽参数的输入检查,因此会出现各种Web应用安全问题,会产生相关漏洞,例如文件包含漏洞,目录遍历漏洞,信息泄露漏洞和SQL注入漏洞给攻击者留下可乘之机。

由于SQL注入漏洞利用Web应用开放的端口,通常防火墙等设备无法检测到,所以其隐蔽性高,如果攻击者不留下痕迹,或者管理员没有查看数据库日志的习惯,基本不会发现。

根据美国国家漏洞数据库(NVD)的统计,SQL注入在针对Web应用攻击手段中名列榜首,是互联网危害最大的安全漏洞。

SQL注入攻击的几个过程。

(1)判断Web应用是否可以进行SQL注入。

如果URL仅是对静态网页的访问,不存在SQL注入问题。

只有存在数据库动态查询请求的URL,才可能存在SQL注入,如:http://www.***.cn/web.jsp?id=36,其中id=36表示数据库查询变量。

(2)寻找SQL注入点。

完成带参URL的查找后,通过构造一些特殊SQL语句,替换原有的URL参数值,再根据浏览器返回信息,判断该URL是否为SQL注入点。

(3)猜解用户名和密码。

软件开发人员设计的数据库表名、字段名通常是有规律可循的。

通过构建SQL语句在数据库中查找表名、字段名、用户名和密码的长度等内容。

(4)寻找Web系统管理后台入口。

通常Web系统后台管理的界面不向普通用户开放,要寻找到后台的登录路径,可以利用扫描工具,测试可能的后台入口地址进行。

(5)实施入侵和破坏。

成功登录管理系统后,接下来就可以任意进行读写,篡改网页、木马上传、修改、泄漏用户信息等,并进一步入侵数据库服务器。

由于大多数Web应用检测软件成本较高,不适合中小型网站,所以需要一种简单方便的网站检测服务。

该漏洞检测工具针对MySQL数据库服务器,对用户提交的URL进行安全检测,对漏洞划分不同的危险等级,发现问题后显示危险URL,不显示其他敏感信息。

3.1 SQL注入漏洞检测方法可以采用模仿黑客攻击的方法来检测是否存在SQL注入漏洞,与SQL注入攻击的步骤类似,如图1所示。

(1)在检测过程中,采用网络爬虫技术,先将整个网站的所有网页抓取完成。

将重复的URL以及链接到被检测网站外的URL剔除后,存入网页URL数据库。

(2)访问网页URL的数据库,获得一条URL。

(3)对网页URL数据库中存储的URL进行检测,检测的步骤同攻击过程。

为了提高检测的效率,采用模板参数填充的方法。

可需要根据实际情况对表1所示的SQL注入模板的参数进行填充,以构成可执行的SQL攻击语句。

其中u表示URL;%s表示SQL语句的条件部分;~u表示将URL中SQL语句的条件取反。

如果构建的SQL语句未通过URL检测,那么该URL不存在SQL注入漏洞,转步骤2。

如果构建的SQL语句通过URL检测,那么存在SQL注入漏洞,转步骤4。

(4)以MySQL4及以上版本为例,列出检测信息。

构建SQL语句,进一步获取基本信息,猜解数据和列名,并读取和写入文件。

(5)如果网页URL的数据库的每一条URL都检测过后,算法终止。

3.2 整体架构图注入漏洞检测工具的基础构架如图2所示。

分为三个功能模块:(1)网络爬虫:创建网页URL数据库;(2)SQL注入检测引擎:采用图2所示的流程进行SQL 注入漏洞检测;(3)公共组件:支持前两个模块相应功能的实现。

4.1 SQL注入漏洞扫描1)构造不同类型的payload:参照表2所示的SQL注入模板的参数对URL进行填充。

2)根据http response来判断是否存在注入点:根据参数m_HttpUrl从指定的URL得到相应的返回内容;获取或设置用于向Internet Http资源的请求进行身份验证的网络凭据,并使用正则表达式("<meta([^<]*) charset=([^<]*)/"")获取网页字符编码描述信息。

分析返回的HTTP报文,如果满足一定的条件,那么该网页存在SQL注入点。

3)分析具体的注入类型:根据不同的注入类型构造不同的URL。

4.2 猜解数据与列名表名1)获取数据库的基本信息MySQL4及以上版本支持union查询,可以通过折半查找,逐步猜解信息。

用到的内置函数如下:(1)VERSION():获得当前的数据库版本信息;(2)USER():获得当前的数据库用户名;(3)DATABASE():获得当前数据库名;(4)PASSWORD():获得相关用户的密码。

获取数据库的基本信息如图4所示。

2)猜解表名在MySQL4及以上版本中,可在注入点URL后添加如下代码:and(selectcount(*)from table_name)>0。

如果返回正常,那么说明数据表的名字是存在的,否则不存在。

3)猜解列名在MySQL4及以上版本中,可在SQL注入点URL后添加如下代码:and(select count(column_name)from table_name)>0。

如果返回正常,那么列名是正确的,否则反之。

把常见列名保存在一个文本文档中,猜解时打开,构造URL进行猜解,遍历所有字段名。

猜解数据与列名表名如图5所示。

4.3 读取和写入文件1)利用函数load_file()读取文件,为避开单引号,使用16进制表示文件路径。

2)利用函数into outfile()实现写文件的功能。

【】【】SQL注入漏洞检测工具通过构造HTTP协议请求,获取服务器响应信息,分析网络页面信息,来分析检测。

可以帮助管理员更好的管理网站,可立刻查询URL的各项记录,并显示上次扫描时间,同时标明漏洞类型,能更直观的了解网站的安全状况。

管理员可以根据这些信息对网站进行整修,填补漏洞,使网站更加安全。

但是在SQL注入检测引擎的运行时会存在一定延时,并只针对SQL注入漏洞进行检查,因此,会进一步丰富扫描知识库,并开展更多类型漏洞(如XSS漏洞、危险端口预警、敏感目录检测、蜘蛛屏蔽扫描等)的研究工作,使其更高效准确地为用户提供服务。

张鑫(1985-),男,河北石家庄人,硕士,讲师;主要研究方向和关注领域:信息安全、网络安全与攻防。

【相关文献】[1]杨林,杨勇.Web应用漏洞攻击分析及防御实现[J].中国教育网络,2011,Z1:79-82.[2]National Vulnerability Database National vulnerability database(NVD)CVE.statistics[EB/OL].http:///view/vuln/statisticsresults.[3]彭赓,范明钰.基于改进网络爬虫技术的SQL注入漏洞检测[J].计算机应用研究,2010,27(07):2605-2607.[4]张令通,罗森林.SQL盲注入快速攻击方法研究[J].信息网络安全,2013,05:15-18.[5]苏忠,林闯,封富君等.无线传感器网络密钥管理的方案和协议[J].软件学报,2007,18(5):1218-1231.[6]马凯,蔡皖东,姚烨.Web2.0环境下SQL注入漏洞注入点提取方法[J].计算机技术与发展,23(3):121-128.。

相关主题