当前位置:首考文秘网>范文大全 > 公文范文 > Web应用程序中SQL注入漏洞检测的研究

Web应用程序中SQL注入漏洞检测的研究

时间:2023-05-18 17:30:04 公文范文 来源:网友投稿

摘 要:文章主要研究了Web应用程序安全问题中的SQL注入漏洞,分析其原理及分类,阐述了SQL注入漏洞的在Web应用中的危害,研究了对SQL注入漏洞的检测流程,并选择实际案例进行漏洞检测,成功发现网页中所存在的漏洞,本研究对于推动Web应用程序安全问题的研究起到了不容忽视的作用。

关键词:Web应用程序;SQL注入漏洞;检测

引言

在互联网时代的今天,适应多平台、充分集成的Web应用程序已经成为当前应用最广泛的网络交互模式,与之相呼应的安全问题也日益突出,Web应用程序的安全问题成为一个重要课题被广大学者研究,在各类Web应用安全问题中,SQL注入攻击的风险是位居前列的,这主要表现在一下两个方面:首先,虽然在联入Internet的计算机上装有防火墙,但是为了保证用户可以访问Web应用程序,防火墙允许计算机从Internet到Web服务器正向连接,在这种情况下,如果网络应用程序中存在注入漏洞,攻击者就可以直接访问数据库甚至进而访问数据库所在服务器。其次SQL攻击非常广泛,它在所有基于SQL语言标准的数据库软件,如Oracle、SQL Server,MySQL等以及与之相连接的网络应用程序上都是有效的。

1 SQL注入的原理

SQL注入攻击源于英文“SQL Injection Attack”,所谓SQL注入攻击,就是利用SQL注入技术来实施的网络攻击,它把SQL命令插入到Web交互页面(例如表单递交或页面请求或输入域名)的查询字符串中,以达到欺骗服务器的目的从而执行非授权的命令。SQL注入漏洞在迄今所发现的Web应用程序的安全漏洞中是最著名的,它利用某些包含特殊目的的SQL语句,通过关键变量插入到正常的操作语句中从而形成安全漏洞。程序一旦发生注入漏洞就会引发一系列安全问题,例如会对数据库进行未经授权的访问、更新或删除等操作。

SQL注入的应用违背了“数据与代码分离原则”,它有两个条件:一是用户能够控制数据的输入;二是代码拼凑了用户输入的数据,把数据当作代码执行。并且在任何语言开发环境中,只要涉及使用SQL语句对数据库操作的应用程序,SQL注入漏洞就可能存在。

2 SQL注入的方式

2.1 绕过Web应用的用户验证

绕过Web应用的用户验证是攻击者通过Web应用验证页面最常用的方法,在这种情况下,攻击者往往会在用户输入区域输入一些数据信息,而这些信息将会改变SQL查询语句中的where条件部分的代码,使得程序在执行时会跳过用户验证。

2.2 盲注攻击

攻击者在通过输入注入信息然后提交到服务器来检测Web应用是否存在SQL注入漏洞,当提交的信息动态组装成一个SQL语句时,如果是一个不合理的语句,服务器向客户端返回一个错误代码,攻击者可以通过反复探测然后再返回有效信息。

2.3 联合查询攻击

使用UNION或UNION ALL可以将一个表追加到另一个表,从而将两张表组合在一起进行查询。在使用联合查询时,攻击者可以在用户输入区域键入类似于“UNION SELECT<注入语句>”的数据信息,这时程序运行时会自动组装SQL査询语句,代码变成“select *from user where id=‘UNION select*where account=10and password=’”;若按照普通的SQL语句执行,由于id和password都是空值,所以返回的数据就是空值,但我们可以明显看到代码中加入了UNION方法,则执行完该代码后数据库服务器会从表user中返回account=10时的值。

3 SQL注入漏洞的危害

SQL注入不但可以获取网站数据,还可以生成网站后门程序从而得到网络用户的所有权限,主要表现在一下几点:(1)在非授权情况下读取、修改甚至删除数据库中的数据;(2)盗取用户敏感信息;(3)注入木马。

4 SQL注入漏洞的检测

4.1 思考方向

从上面的研究中我们发现SQL注入主要存在于页面中会与数据库产生交互的地方,比如查询、提交、回复等页面,因此可以在Web应用程序的这些地方插入设计好的注入语句,然后观察服务器端的返回响应。

4.2 测试字符串

在SQL注入漏洞测试中需要用到特定的字符串,用来査找并判断Web应用程序是否存在漏洞。我们根据注入参数的类型,可以将设计好的字符串划分为以下3类:(1)数字型:select*from表名 where 字段=77;(2)字符型:select*from 表名 where 字段=‘IT书籍’;(3)搜索型:selec*from表名where字段like‘%关键字%’。

4.3 SQL语句变换

Web漏洞测试人员可以针对不同的语句类型进行SQL注入。可以通过构造特定的语句规则,实现提升访问权限、获取完全数据库信息等操作。

4.4 数据库类型变换

由于在实际中对于不同的数据库管理系统的攻击方式也不一样,因此,测试人员需要通过指纹标识数据库类型。

4.5 SQL注入漏洞检测

测试人员通过对注入测试字符串进行各种变化,模仿攻击者根据不同数据库类型用不同类型的语句攻击Web应用程序,从而动态检测出注入漏洞。具体流程如下:(1)选取注入测试字符串,输入应用程序并对比输出;(2)使用不同的语句类型对应用程序进行攻击;(3)根据指纹识别数据库类型来识别出应用所使用的数据库管理系统;4)输入应用程序并对比输出。

5 SQL注入漏洞检测试验模拟

以用ASP.NET中一个简单的户登录界面为案例,分析源代码中与数据库交互的主要语句如下所示:

SqlStr=“select*from会员表where会员名="”+this.txt_User_Name.Text+“"and 密码="”+Md5_User_Pwd+“"”;

按照上述漏洞检测规则及流程,我们选择“or 1=1—”为漏洞检测用例输入到会员名文本框中,因为“—”在代码中是注释的意思,所以后面的语句都可以视为注释不必执行,而1的确等于1,因此即便没有该会员照样可以成功登录,由此可见,这个登录界面中存在SQL注入漏洞。

6 结束语

随着互联网时代的扩张,Web应用程序已经渗透到社会各个层面,而Web应用程序的安全问题则成为当今网络应用的主要问题之一,如何科学地测试评估Web应用程序的安全性具有重要的理论意义和实用价值,文章仅SQL注入漏洞测试做了简单研究,下一步将继续深入研究其他类型漏洞,如网络爬虫漏洞等等。

参考文献

[1]朱辉,沈明星,李善平.Web应用中代码注入漏洞的测试方法[J].计算机工程,2010(10).

[2]卢俊.SQL注入与XSS攻击防范方法的研究以及防范模型的设计与实现[J].北京邮电大学,2010.

[3]潘古兵.Web应用程序渗透测试方法研究[D].西南大学,2012.

[4]赵丽娟.Web应用程序渗透测试方法研究[D].中南大学,2014.

[5]尹彦涛.Web漏洞扫描系统设计与实现[D].中国海洋大学,2014.

推荐访问:应用程序 注入 漏洞 检测 研究

版权所有:首考文秘网 2015-2024 未经授权禁止复制或建立镜像[首考文秘网]所有资源完全免费共享

Powered by 首考文秘网 © All Rights Reserved.。备案号:冀ICP备15026071号-91