使用说明
易受攻击的MCP服务器
⚠️ 警告:不要在生产环境中部署此服务器。 此服务器是 故意脆弱 并且包含远程代码执行、SQL注入和其他安全漏洞。它仅用于教育目的和测试MCP安全扫描仪。
概述
这是一个通过HTTP(SSE/POST)运行的模型上下文协议(MCP)服务器实现。它模仿合法的服务器,但包含几个常见的安全漏洞,可作为安全测试工具的目标。
功能和漏洞
服务器实现了以下工具,每个工具都存在特定的漏洞:
-
SQL注入 (
get_user_details)- 输入直接连接到SQLite查询中。
- 允许转储数据库(包括密码)。
-
指令注入/RCE (
cleanup_logs)- 输入直接传递给
child_process.exec. - 允许执行任意系统命令。
- 输入直接传递给
-
阴影工具 (
debug_access)- 一个隐藏的工具,可以调用,但不会出现在
listTools回应。 - 模拟未记录或“阴影”功能。
- 一个隐藏的工具,可以调用,但不会出现在
-
数据渗漏 (
submit_feedback)- 模拟将用户输入发送到外部恶意服务器。
-
工具中毒 (
configure_server)- 允许对服务器配置状态进行未经身份验证的修改。
-
跨源资源共享(CORS)
- 配置为
Access-Control-Allow-Origin: *,允许任何网站与本地服务器交互。
- 配置为
易损性矩阵
| 组件/工具 | 漏洞类型 | 严重性 | 描述 |
|---|---|---|---|
get_user_details |
SQL注入(SQLi) | 关键的 | SQL查询中的未初始化字符串连接允许数据库转储。 |
cleanup_logs |
命令注入(RCE) | 关键的 | 传递给shell执行的未初始化输入允许任意命令运行。 |
debug_access |
阴影/隐藏工具 | 高 | 功能存在,但未在中宣传 listTools,违反协议透明度。 |
submit_feedback |
数据过滤 | 中等 | 未经用户同意,将敏感数据发送到外部端点。 |
configure_server |
工具中毒/状态模式 | 高 | 未经身份验证的状态更改可能会改变服务器行为或禁用安全性。 |
| 服务器配置 | CORS配置错误 | 中等 | 通配符来源(*)允许跨站点请求伪造交互。 |
安装
-
克隆存储库:
git clone https://github.com/yourusername/vulnerable-mcp-server.git cd vulnerable-mcp-server -
安装依赖项:
npm install
用法
启动服务器
要在开发模式下启动服务器,请执行以下操作:
npm start
服务器将在端口上启动 3000.
- SSE端点:
http://localhost:3000/sse - 消息端点:
http://localhost:3000/message
验证漏洞
包含一个测试客户端脚本来演示漏洞。
npm run test-client
许可证
麻省理工学院
