
Insecure MCP Demo

2025.04.22
3
Python教育演示安全漏洞其它
该项目是一个用于教育目的的MCP服务器演示,展示了一个存在多个安全漏洞的MCP服务器及其客户端。该项目旨在帮助开发者理解MCP服务器中可能存在的安全漏洞,并提供相应的缓解策略。
View on GitHub
Overview
基本能力
产品定位
该项目是一个教育性质的MCP服务器演示,用于展示MCP服务器中可能存在的安全漏洞。
核心功能
- insert_record:将名称/地址记录插入数据库,存在SQL注入漏洞。
- query_records:列出数据库中的所有记录,缺乏身份验证和访问控制。
- execute_sql:执行客户端提供的任意SQL查询,允许执行破坏性操作。
- get_env_variable:返回请求的环境变量的值,可能泄露敏感信息。
适用场景
- 安全教育和培训
- 漏洞演示和测试
- 开发人员学习如何防范SQL注入和其他安全漏洞
工具列表
- vuln-mcp.py:存在漏洞的MCP服务器。
- good-mcp-client.py:正常的客户端,用于插入/查询记录。
- attack-mcp-client.py:攻击客户端,用于演示如何利用服务器漏洞。
常见问题解答
- 如何防止SQL注入?
- 使用参数化查询,避免直接字符串插值。
- 如何限制敏感工具的使用?
- 移除或严格限制如
execute_sql
和get_env_variable
等工具。 - 如何实现访问控制?
- 要求用户进行身份验证,并在访问敏感工具或数据前检查权限。
使用教程
使用依赖
pip install -r requirements.txt
安装教程
- 安装依赖:
bash pip install -r requirements.txt
- 启动服务器和正常客户端:
bash python good-mcp-client.py vuln-mcp.py
- 运行攻击客户端:
bash python attack-mcp-client.py vuln-mcp.py
调试方式
- 攻击客户端将自动尝试SQL注入攻击、执行任意SQL查询并读取常见环境变量。
- 观察攻击客户端的输出,查看哪些攻击成功或失败,以及数据库内容和环境变量值是否可访问。