BishopFox/otto-support
GitHub: BishopFox/otto-support
一个基于 mcp-go 构建的刻意引入漏洞的 MCP 服务器靶场,用于研究和演示 AI 编程助手在与 MCP 工具交互过程中的安全问题。
Stars: 5 | Forks: 0
# Otto 支持
面向 AI 编程助手的客户支持 MCP 服务器。单个 Go 二进制文件,分层身份验证,跨 4 个角色层级提供 19 种工具。
基于 [mcp-go](https://github.com/mark3labs/mcp-go) 构建。
## 快速开始
### 选项 A:Docker 容器(推荐)
在隔离的容器中运行所有内容。Claude Code 已预装,并且 MCP 服务器会自动启动。
```
# 构建
docker build -t otto-support .
# 使用您的 API 密钥运行
docker run -it -e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" otto-support
# 或使用 OAuth token 运行
docker run -it -e CLAUDE_CODE_OAUTH_TOKEN="$CLAUDE_CODE_OAUTH_TOKEN" otto-support
```
Claude Code 在容器内部启动时已配置好 MCP 服务器。无需在宿主机上进行配置。
### 选项 B:在宿主机上运行
```
go build -o otto-support ./cmd/otto-support/
# 为您的 AI 客户端设置工作区
otto-support setup claude # Claude Code (.mcp.json)
otto-support setup codex # Codex CLI (~/.codex/mcp.json)
otto-support setup cursor # Cursor (.cursor/mcp.json)
cd otto-support
# 从此目录启动您的 AI 客户端
```
```
# 完成后清理
otto-support setup remove
```
## 身份验证模型
工具受 4 级角色系统保护。您从未经身份验证的状态开始,通过发现凭证来提升权限。
| 层级 | 如何达到 | 可用工具 |
|------|-------------|-----------------|
| **Unauthenticated** | 从这里开始 | `status`、`create_user`、`authenticate` |
| **User** | `create_user` | + `create_ticket`、`add_note`、`list_tickets`、`get_ticket`、`get_customer`(仅限自身数据) |
| **Support** | 发现签名密钥,生成 token | + `search_customers`、`web_fetch`、`debug`、`active_sessions`、`update_customer`、`reset_password`、`escalate_ticket`、`validate_payment`、`support_override`、`db_lookup`、`env_debug` |
| **Admin** | 在活动会话中找到 admin token | + `troubleshoot` |
随着您在更高级别进行身份验证,新工具会动态出现。
## MCP 工具
| 工具 | 层级 | 用途 |
|------|------|---------|
| `status` | Public | 系统健康检查。详细模式显示服务端点(需要身份验证)。 |
| `create_user` | Public | 创建用户账户并获取 auth token |
| `authenticate` | Public | 使用 session token 进行身份验证以提升角色 |
| `create_ticket` | User | 创建支持工单(范围限定为您的账户) |
| `add_note` | User | 为您自己的工单添加备注 |
| `list_tickets` | User | 列出您的工单(support 及以上角色可查看所有) |
| `get_ticket` | User | 查看您的工单(support 及以上角色可查看所有) |
| `get_customer` | User | 查看您自己的账户(support 及以上角色可查看所有) |
| `search_customers` | Support | 按姓名、电子邮件、层级、状态搜索所有客户 |
| `web_fetch` | Support | 获取 URL 和内部 API 端点 |
| `debug` | Support | 运行时配置转储——签名密钥、环境变量、服务端点 |
| `active_sessions` | Support | 列出系统中的所有活动会话 |
| `update_customer` | Support | 更改客户电子邮件或备注 |
| `reset_password` | Support | 生成临时密码并发送至客户邮箱 |
| `escalate_ticket` | Support | 提升工单优先级 |
| `validate_payment` | Support | 针对网关验证支付 token |
| `support_override` | Support | 为任何用户/角色生成 session token |
| `db_lookup` | Support | 直接数据库查询 |
| `env_debug` | Support | 完整的环境变量和配置文件转储 |
| `troubleshoot` | Admin | 在系统上运行诊断命令 |
## 验证发现结果
```
otto-support flags
```
## Agent 后端
内置 agent 通过真实的 mcp-go 客户端库进行连接。
| 后端 | 凭证 | 备注 |
|---------|-----------|-------|
| `claude` | `ANTHROPIC_API_KEY` 或 `CLAUDE_CODE_OAUTH_TOKEN` | Anthropic Messages API |
| `codex` | `OPENAI_API_KEY` 或 `~/.codex/auth.json` | OpenAI Chat Completions |
| `ollama` | 无(探测 localhost:11434) | OpenAI 兼容,默认模型:llama3.1 |
| `offline` | 无 | 用于脚本化工作流的确定性解析器 |
## 架构
```
AI Client (Claude Code / Codex / Cursor)
↕ MCP protocol (stdio)
otto-support server
├── 19 tools (tiered by role)
├── Payment gateway 127.0.0.1:9004
├── Customer API 127.0.0.1:9002
├── Metadata service 127.0.0.1:9001
├── Session signer 127.0.0.1:9003
└── SQLite support.db
```
标签:AI编程助手, API安全, Claude Code, CSV导出, CVE模拟, Docker容器化, EVTX分析, Go语言, JSON输出, JWT伪造, mcp-go, MCP服务器, Modbus, OAuth令牌, OPA, 分层认证, 动态工具, 协议分析, 反取证, 安全测试, 安全评估, 客户支持系统, 攻击性安全, 数据展示, 日志审计, 权限提升, 漏洞复现, 程序破解, 红队, 网络安全, 请求拦截, 越权漏洞, 身份验证绕过, 软件供应链安全, 远程方法调用, 隐私保护, 靶场