Web应用SQL注入漏洞检测工具的设计系统分析_第1页
Web应用SQL注入漏洞检测工具的设计系统分析_第2页
Web应用SQL注入漏洞检测工具的设计系统分析_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Web应用SQL注入漏洞检测工具的设计系统分析1 引言采用B/S架构,并通过HTTP或HTTPS协议提供访问的应用服务统称为Web应用。目前,几乎所有政府、通信、证券、银行以及电子商务都支持在线交易和查询服务,包括个人账户、用户信息、交易记录等在内的用户的敏感信息,都通过Web应用系统存储在数据库中,一旦数据被盗取或篡改,都会造成巨大损失。为降低系统受攻击的风险,可利用Web应用安全漏洞扫描技术,可以实现在线的Web应用健康检查,提醒网站管理员进行修补,是效果好的Web安全防护手段。2 Web 应用中常见漏洞攻击Web 应用大多涉及服务器端的动态处理,同时,开发人员可能在开发过程中疏忽参数的输

2、入检查,因此会出现各种Web 应用安全问题,会产生相关漏洞,例如文件包含漏洞,目录遍历漏洞,信息泄露漏洞和SQL 注入漏洞给攻击者留下可乘之机。由于SQL 注入漏洞利用Web应用开放的端口,通常防火墙等设备无法检测到,所以其隐蔽性高,如果攻击者不留下痕迹,或者管理员没有查看数据库日志的习惯,基本不会发现。根据美国国家漏洞数据库(NVD)的统计,SQL注入在针对Web应用攻击手段中名列榜首,是互联网危害最大的安全漏洞。SQL注入攻击的几个过程。(1)判断Web应用是否可以进行SQL注入。如果URL仅是对静态网页的访问,不存在SQL注入问题。只有存在数据库动态查询请求的URL,才可能存在SQL注入

3、,如:http:/www.*.cn/web.jsp?id=36,其中id=36表示数据库查询变量。(2)寻找SQL注入点。完成带参URL的查找后,通过构造一些特殊SQL语句,替换原有的URL参数值,再根据浏览器返回信息,判断该URL是否为SQL注入点。(3)猜解用户名和密码。软件开发人员设计的数据库表名、字段名通常是有规律可循的。通过构建SQL语句在数据库中查找表名、字段名、用户名和密码的长度等内容。(4)寻找Web系统管理后台入口。通常Web系统后台管理的界面不向普通用户开放,要寻找到后台的登录路径,可以利用扫描工具,测试可能的后台入口地址进行。(5)实施入侵和破坏。成功登录管理系统后,接下

4、来就可以任意进行读写,篡改网页、木马上传、修改、泄漏用户信息等,并进一步入侵数据库服务器。由于大多数Web应用检测软件成本较高,不适合中小型网站,所以需要一种简单方便的网站检测服务。该漏洞检测工具针对MySQL数据库服务器,对用户提交的URL进行安全检测,对漏洞划分不同的危险等级,发现问题后显示危险URL,不显示其他敏感信息。3 SQL注入漏洞检测工具的设计3.1 SQL注入漏洞检测方法可以采用模仿黑客攻击的方法来检测是否存在SQL注入漏洞,与SQL注入攻击的步骤类似,如图1所示。(1)在检测过程中,采用网络爬虫技术,先将整个网站的所有网页抓取完成。将重复的 URL以及链接到被检测网站外的UR

5、L剔除后,存入网页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语句,进一步获取基

6、本信息,猜解数据和列名,并读取和写入文件。(5)如果网页URL的数据库的每一条URL都检测过后,算法终止。3.2 整体架构图注入漏洞检测工具的基础构架如图2所示。分为三个功能模块:(1)网络爬虫:创建网页URL数据库;(2)SQL注入检测引擎:采用图2所示的流程进行SQL注入漏洞检测;(3)公共组件:支持前两个模块相应功能的实现。4 SQL注入检测引擎的实现4.1 SQL注入漏洞扫描1)构造不同类型的payload:参照表2所示的SQL 注入模板的参数对URL进行填充。2)根据http response来判断是否存在注入点:根据参数m_HttpUrl从指定的URL得到相应的返回内容;获取或设置

7、用于向 Internet Http资源的请求进行身份验证的网络凭据,并使用正则表达式(3)分析具体的注入类型:根据不同的注入类型构造不同的URL。4.2 猜解数据与列名表名1)获取数据库的基本信息MySQL4及以上版本支持union查询,可以通过折半查找,逐步猜解信息。用到的内置函数如下:(1)VERSION():获得当前的数据库版本信息;(2)USER():获得当前的数据库用户名;(3)DATABASE():获得当前数据库名;(4)PASSWORD():获得相关用户的密码。获取数据库的基本信息如图4所示。2)猜解表名在MySQL4及以上版本中,可在注入点URL后添加如下代码:and(sele

8、ct count(*)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() 实现写文件的

9、功能。5 结束语SQL注入漏洞检测工具通过构造HTTP协议请求,获取服务器响应信息,分析网络页面信息,来分析检测。可以帮助管理员更好的管理网站,可立刻查询URL的各项记录,并显示上次扫描时间,同时标明漏洞类型,能更直观的了解网站的安全状况。管理员可以根据这些信息对网站进行整修,填补漏洞,使网站更加安全。但是在SQL注入检测引擎的运行时会存在一定延时,并只针对SQL注入漏洞进行检查,因此,会进一步丰富扫描知识库,并开展更多类型漏洞(如XSS漏洞、危险端口预警、敏感目录检测、蜘蛛屏蔽扫描等)的研究工作,使其更高效准确地为用户提供服务。参考文献【1】 杨林,杨勇.Web应用漏洞攻击分析及防御实现.中

10、国教育网络,2011,Z1:79-82.【2】 National Vulnerability Database National vulnerability database(NVD) CVE.statistics.http://view/vuln/statistics-results.【3】 彭赓,范明钰.基于改进网络爬虫技术的SQL注入漏洞检测.计算机应用研究,2010,27(07):2605-2607.【4】 张令通,罗森林.SQL盲注入快速攻击方法研究.信息网络安全,2013,05:15-18.【5】 苏忠,林闯,封富君等.无线传感器网络密钥管理的方案和协议.软件学报, 2007, 18

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论