本仓库是一个小型 Docker 实验环境,用于对比 MCPJam Inspector 针对 CVE-2026-23744 的易受攻击版本与已修补版本。
它旨在用于学习和构建公开安全作品集:快速搭建、清晰的证据和截图。
⚠️ 伦理/范围:仅在你拥有或获得明确测试许可的系统上进行测试。本仓库仅用于本地复现和文档记录。
/api/mcp/connect)在易受攻击的设置中存在且无需认证质询即可响应。这与供应商公告/公开报告一致:
.
├── docker-compose.yml
├── vuln/
│ └── Dockerfile
├── patched/
│ └── Dockerfile
└── docs/
└── (截图放在这里)
构建并运行两个容器:
docker compose up -d --build
检查它们是否已启动:
docker compose ps
预期结果:
inspector_vuln_142 发布在 127.0.0.1:6274inspector_patched_143 发布在 127.0.0.1:6275(但不应能从主机访问)
该端点存在,并且在缺少必填字段时返回验证错误:
curl -i -X POST http://127.0.0.1:6274/api/mcp/connect \
-H 'Content-Type: application/json' \
-d '{}'
预期返回 HTTP/1.1 400 以及类似以下内容:
{"success":false,"error":"Failed to parse request body","details":"Unexpected end of JSON input"}
在容器内部,检查哪个地址正在监听 6274 端口:
# 易受攻击版本
docker exec -it inspector_vuln_142 sh -lc "apk add --no-cache iproute2 >/dev/null 2>&1; ss -lnt | grep 6274"
# 已修补版本
docker exec -it inspector_patched_143 sh -lc "apk add --no-cache iproute2 >/dev/null 2>&1; ss -lnt | grep 6274"
预期结果:
0.0.0.0:6274127.0.0.1:6274
即使我们将 127.0.0.1:6275 -> 容器:6274 进行映射,已修补的容器也仅监听其自身的回环接口。因此,从主机访问时,你应该会看到连接关闭/空响应。
curl -v http://127.0.0.1:6275/
预期结果:不可访问(这正是缓解措施生效的表现)。
为了证明已修补版本的 UI 仍然正常工作,请从容器内部执行 curl:
docker exec -it inspector_patched_143 sh -lc "apk add --no-cache curl >/dev/null 2>&1; curl -i http://127.0.0.1:6274/"
预期结果:HTTP/1.1 200。


在本地对易受攻击容器进行测试时,我将 strace 附加到 Inspector 服务器进程上,观察到它生成了一个子进程并调用了 execve()。
我特意不在本仓库中包含可直接运行的利用载荷。
需要捕获的内容:
execve("/bin/sh", ["sh","-c", "..."], ...) = 0
execve("/usr/bin/...", [...], ...) = 0
子进程正常退出(状态码 0)

本仓库仅用于防御性研究、教育以及在受控环境中进行可复现的验证。 请勿将其用于你不拥有或未经许可测试的系统。