各种数据库中的时间延迟技术


Jun 04 2017

各种数据库中的时间延迟技术

首页 » 渗透测试 » 各种数据库中的时间延迟技术   

本文从使用浏览器与Web应用进行交互这一视角来讨论发现SQL注入问题时所涉及的时间延迟技术

测试应用程序是否存在SQL注入漏洞时,经常发现某一潜在的漏洞难以确认。这可能源于多种原因,但主要是因为Web应用未显示任何错误,因而无法检索任何数据。

对于这种情况,要想识别漏洞,可以向数据库注入时间延迟,并检查服务器的响应是否也已经产生了延迟。时间延迟是一种很强大的技术,Web服务器虽然可以隐藏错误或数据,但必须等待数据库返回结果,因此可用它来确认是否存在SQL注入。该技术尤其适合盲注。

Microsoft SQL Server服务器包含一条向查询引入延迟的内置命令:WAITFOR DELAY 'hours: minutes:seconds'。例如,向Victim公司的Web服务器发送下列请求,服务器的响应大概要花5秒:
 

http://www.victim.com/basket.aspx?uid=45;waitfor delay '0:0:5';-- 

服务器响应中的延迟使我们确信我们正在向后台数据库注入SQL代码。

MySQL数据库没有与WAITFOR DELAY等价的命令,但它可以使用执行时间很长的函数来引入延迟。BENCHMARK函数是很好的选择。MySQLBENCHMARK函数会将一个表达式执行许多次,它通常被用于评价MySQL执行表达式的速度。根据服务器工作负荷和计算资源的不同,数据库需要的时间也会有所不同。但如果延迟比较明显,也可使用该技术来识别漏洞。请看下面的例子:
 

复制代码
mysql> SELECT BENCHMARK(10000000,ENCODE('hello','mom'));  
+----------------------------------------------+  
|   BENCHMARK(10000000,ENCODE('hello','mom'))               |  
+----------------------------------------------+  
|   0                                                                                                                                                                                   |  
+----------------------------------------------+  
1   row in set (3.65 sec)  
复制代码

 

执行该查询花费了3.65秒。如果将这段代码注入SQL注入漏洞中,那么将延迟服务器的响应。如果想进一步延迟响应,只需增加迭代的次数即可,如下所示:
 

http://www.victim.com/display.php?id=32; SELECT  
BENCHMARK(10000000,ENCODE('hello','mom'));--  

Oracle PL/SQL中,可使用下列指令集创建延迟:

BEGIN DBMS_LOCK.SLEEP(5);  
END;  

DBMS_LOCK.SLEEP()函数可以让一个过程休眠很多秒,但使用该函数存在许多限制。首先,不能直接将该函数注入子查询中,因为Oracle不支持堆叠查询(stacked query)。其次,只有数据库管理员才能使用DBMS_LOCK包。

在Oracle PL/SQL中有一种更好的办法,可以使用下面的指令以内联方式注入延迟:

http://www.victim.com/display.php?id=32 or 1=dbms_pipe.receive_  
message('RDS', 10)  

DBMS_PIPE.RECEIVE_MESSAGE函数将为从RDS管道返回的数据等待10秒。默认情况下,允许以public权限执行该包。DBMS_LOCK.SLEEP()与之相反,它是一个可以用在SQL语句中的函数。

在最新版本的PostgreSQL数据库(8.2及以上版本)中,可以使用pg_sleep函数来引起延迟:
 

http://www.victim.com/display.php?id=32; SELECT pg_sleep(10);-- 

如果您喜欢本博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容:

正文部分到此结束

文章标签: 延迟技术

版权声明:若无特殊注明,本文皆为( mOon )原创,转载请保留文章出处。

也许喜欢: «最近更新的过WAF(防火墙教程) | 一款开源指纹识别工具。»

你肿么看?

你还可以输入 250/250 个字

 微笑 大笑 拽 大哭 亲亲 流汗 喷血 奸笑 囧 不爽 晕 示爱 害羞 吃惊 惊叹 爱你 吓死了 呵呵

评论信息框

这篇文章还没有收到评论,赶紧来抢沙发吧~