攻防演练工具 | Oracle数据库getshell的另一种思路
2024-7-7 23:41:23 Author: www.freebuf.com(查看原文) 阅读量:10 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

一 背景

本工具的开发起因是在某次小范围攻防演练中遇到的一个Oracle数据库弱口令,最终通过查阅一些资料达到了getshell的目的。由于利用过程中更多的是手动完成,而小范围攻防演练时间往往较短,因此便在事后开发出了这款能节约部分时间的“半自动”工具,实现原理也很简单,如有错误之处还望大佬们指正。

文末附有工具下载地址!

二 设计思路

在分享设计思路之前,不妨先设想下以下场景:

1、目标web服务前后台均无漏洞可getshell,但获取到了Oracle数据库的system权限;

2、利用数据库可执行少部分操作系统命令,但无法达到getshell的利用条件,因为Oracle数据库中出现空字符会导致字符串截断的问题;

3、目标主机不出互联网,无法远程下载文件。

以上便是我当时环境的还原,事实上那个目标主机只是开启了IIS服务,并未部署任何web应用。当我初次遇到这种情况时,不免钻起了牛角尖,试图利用Oracle数据库的命令执行来获取主机的控制权限,毕竟在野的这款工具oracleShell还是很好用的;但我们都知道,Oracle执行操作系统命令的原理都是通过创建和编译Java源,再创建函数或者存储过程来调用Java中的方法从而达到代码执行的目的,但由于Oracle数据库的字符串截断机制,因此无法正常返回结果中存在空字符的数据,会导致大量操作无法执行。

通常这个时候,我们是可以通过远程文件下载的命令将webshell或者木马下载到本地再执行的,但由于无法了解目标主机的更多信息,如主机防护情况、文件目录、进程信息等,这种方式会略显无力;况且在主机不出网的情况下,远程下载文件在这种环境中也就无从说起了。

可是既然来都来了,不留下点什么也说不过去啊!最终在一支能量棒的加持下捋了捋,总算是跳出了牛角,想到了另外一种通过Oracle组合拳来实现getshell的思路。

  1. Oralce数据库system权限是可以查看文件列表的;
  2. 目标主机是开启了IIS服务的;
  3. 利用Oracle数据库是可以向服务器写入文件的。

既然通了那就整!最终是通过在IIS服务的根目录下写入了webshell,成功获取了主机控制权限,可操作空间瞬间升了上去。

至此,开发出另一个Oracle数据库利用工具的思路便出现了。

三 开发过程

站在能否getshell的角度来看,本工具显然是一种“半自动化”利用工具;如写入webshell时,得根据自己的经验来判断出web应用的存储路径,运气不好遇到站库分离的web也就只能放弃写入webshell的思路了。

1. 获取操作系统模块

话不多说,先看第一个模块的实现过程。还是按照执行系统命令的思路,利用数据库创建java源并编译,代码实现部分如下:

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED GetOperatingSystem AS
        import java.util.Properties;
        
        public class GetOperatingSystem {
   

已在FreeBuf发表 0 篇文章

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/defense/405383.html
如有侵权请联系:admin#unsafe.sh