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, 分层认证, 动态工具, 协议分析, 反取证, 安全测试, 安全评估, 客户支持系统, 攻击性安全, 数据展示, 日志审计, 权限提升, 漏洞复现, 程序破解, 红队, 网络安全, 请求拦截, 越权漏洞, 身份验证绕过, 软件供应链安全, 远程方法调用, 隐私保护, 靶场