Insecure MCP Demo

Insecure MCP Demo

site icon
2025.04.22 3
Python教育演示安全漏洞其它
该项目是一个用于教育目的的MCP服务器演示,展示了一个存在多个安全漏洞的MCP服务器及其客户端。该项目旨在帮助开发者理解MCP服务器中可能存在的安全漏洞,并提供相应的缓解策略。
View on GitHub

Overview

基本能力

产品定位

该项目是一个教育性质的MCP服务器演示,用于展示MCP服务器中可能存在的安全漏洞。

核心功能

  1. insert_record:将名称/地址记录插入数据库,存在SQL注入漏洞。
  2. query_records:列出数据库中的所有记录,缺乏身份验证和访问控制。
  3. execute_sql:执行客户端提供的任意SQL查询,允许执行破坏性操作。
  4. get_env_variable:返回请求的环境变量的值,可能泄露敏感信息。

适用场景

  • 安全教育和培训
  • 漏洞演示和测试
  • 开发人员学习如何防范SQL注入和其他安全漏洞

工具列表

  1. vuln-mcp.py:存在漏洞的MCP服务器。
  2. good-mcp-client.py:正常的客户端,用于插入/查询记录。
  3. attack-mcp-client.py:攻击客户端,用于演示如何利用服务器漏洞。

常见问题解答

  1. 如何防止SQL注入?
  2. 使用参数化查询,避免直接字符串插值。
  3. 如何限制敏感工具的使用?
  4. 移除或严格限制如execute_sqlget_env_variable等工具。
  5. 如何实现访问控制?
  6. 要求用户进行身份验证,并在访问敏感工具或数据前检查权限。

使用教程

使用依赖

pip install -r requirements.txt

安装教程

  1. 安装依赖: bash pip install -r requirements.txt
  2. 启动服务器和正常客户端: bash python good-mcp-client.py vuln-mcp.py
  3. 运行攻击客户端: bash python attack-mcp-client.py vuln-mcp.py

调试方式

  • 攻击客户端将自动尝试SQL注入攻击、执行任意SQL查询并读取常见环境变量。
  • 观察攻击客户端的输出,查看哪些攻击成功或失败,以及数据库内容和环境变量值是否可访问。

许可证

该项目遵循 None 开源许可条款。