漏洞测试MCP服务器

一个故意设计有漏洞的MCP服务器,用于教育目的和测试安全扫描工具。

  • by Saroj-Shandiliya
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Saroj-Shandiliya/Vulnerable-MCP_Server

使用说明

易受攻击的MCP服务器

⚠️ 警告:不要在生产环境中部署此服务器。 此服务器是 故意脆弱 并且包含远程代码执行、SQL注入和其他安全漏洞。它仅用于教育目的和测试MCP安全扫描仪。

概述

这是一个通过HTTP(SSE/POST)运行的模型上下文协议(MCP)服务器实现。它模仿合法的服务器,但包含几个常见的安全漏洞,可作为安全测试工具的目标。

功能和漏洞

服务器实现了以下工具,每个工具都存在特定的漏洞:

  1. SQL注入 (get_user_details)

    • 输入直接连接到SQLite查询中。
    • 允许转储数据库(包括密码)。
  2. 指令注入/RCE (cleanup_logs)

    • 输入直接传递给 child_process.exec.
    • 允许执行任意系统命令。
  3. 阴影工具 (debug_access)

    • 一个隐藏的工具,可以调用,但不会出现在 listTools 回应。
    • 模拟未记录或“阴影”功能。
  4. 数据渗漏 (submit_feedback)

    • 模拟将用户输入发送到外部恶意服务器。
  5. 工具中毒 (configure_server)

    • 允许对服务器配置状态进行未经身份验证的修改。
  6. 跨源资源共享(CORS)

    • 配置为 Access-Control-Allow-Origin: *,允许任何网站与本地服务器交互。

易损性矩阵

组件/工具 漏洞类型 严重性 描述
get_user_details SQL注入(SQLi) 关键的 SQL查询中的未初始化字符串连接允许数据库转储。
cleanup_logs 命令注入(RCE) 关键的 传递给shell执行的未初始化输入允许任意命令运行。
debug_access 阴影/隐藏工具 高 功能存在,但未在中宣传 listTools,违反协议透明度。
submit_feedback 数据过滤 中等 未经用户同意,将敏感数据发送到外部端点。
configure_server 工具中毒/状态模式 高 未经身份验证的状态更改可能会改变服务器行为或禁用安全性。
服务器配置 CORS配置错误 中等 通配符来源(*)允许跨站点请求伪造交互。

安装

  1. 克隆存储库:

    git clone https://github.com/yourusername/vulnerable-mcp-server.git
    cd vulnerable-mcp-server
    
  2. 安装依赖项:

    npm install
    

用法

启动服务器

要在开发模式下启动服务器,请执行以下操作:

npm start

服务器将在端口上启动 3000.

  • SSE端点: http://localhost:3000/sse
  • 消息端点: http://localhost:3000/message

验证漏洞

包含一个测试客户端脚本来演示漏洞。

npm run test-client

许可证

麻省理工学院