使用说明
项目简介
本项目是一个演示性质的MCP服务器,旨在教育和安全研究目的,绝非生产环境可用的安全MCP服务器。它模拟了一个存在工具投毒漏洞的MCP服务器,攻击者可以利用该漏洞修改工具的描述文档,诱导LLM客户端执行恶意代码,从而实现远程代码执行和数据泄露。请务必仅在安全的实验环境中使用,切勿用于任何非法用途。
主要功能点
- 模拟MCP服务器框架: 使用 'fastmcp' 库搭建了一个基本的MCP服务器框架,实现了工具注册和运行功能。
- 工具投毒漏洞演示: 'DockerCommandAnalyzer' 工具被设计为存在漏洞,其文档可以被动态修改,植入恶意指令。
- SSH密钥泄露演示: 通过工具投毒,演示了如何诱导LLM客户端执行恶意命令,收集并外泄用户的SSH公钥。
- Stdio传输协议: 使用标准输入输出 (stdio) 作为MCP服务器的传输协议。
请注意: 该服务器并非旨在提供任何实际有用的功能,其主要目的是演示MCP协议的潜在安全风险,特别是工具投毒攻击。
安装步骤
- 克隆仓库:
git clone https://github.com/Repello-AI/mcp-exploit-demo.git cd mcp-exploit-demo - 安装依赖 (可选): 虽然此demo非常简单,但如果需要确保环境一致性,可以创建一个虚拟环境并安装依赖(本例中实际没有显式依赖,但为了规范可以这样做)。
python -m venv venv source venv/bin/activate # 或 venv\Scripts\activate (Windows) # pip install -r requirements.txt (如果存在 requirements.txt)
服务器配置
MCP客户端需要配置以下信息以连接到此MCP服务器。以下是一个 'mcp.json' 配置示例,你需要将其配置到你的MCP客户端中(例如 Cursor AI 的 custom commands 功能)。
{ "serverName": "exploit-demo-server", "command": "python", "args": ["server.py"], "transport": "stdio", "handshake": "直接连接" }
配置参数说明:
- 'serverName': 服务器名称,可以自定义,例如 "exploit-demo-server"。
- 'command': 启动服务器的命令,这里使用 'python' 解释器。
- 'args': 传递给启动命令的参数,这里是服务器脚本 'server.py' 的文件名。
- 'transport': 传输协议,本项目使用 'stdio' (标准输入输出)。
- 'handshake': 握手方式描述,对于stdio,通常为 "直接连接"。
基本使用方法
-
启动服务器: 在仓库目录下,运行以下命令启动 MCP 服务器:
python server.py服务器将通过标准输出 (stdout) 发送 MCP 协议的消息,并通过标准输入 (stdin) 接收消息。
-
配置 MCP 客户端: 在你的 MCP 客户端(例如 Cursor AI),按照其文档指引配置自定义命令或自定义服务器,并填入上面提供的 'mcp.json' 配置信息。
-
使用工具: 连接成功后,你可以通过 MCP 客户端调用服务器提供的工具。例如,你可以尝试调用以下工具(具体取决于客户端的界面和操作方式):
- 'Echoer': 发送消息给 'Echoer' 工具,服务器会将消息回显到终端。例如,在客户端中输入类似 "使用 Echoer 工具,消息内容是 'Hello MCP'" 的指令。
- 'cowsay': 发送消息给 'cowsay' 工具,服务器会返回 ASCII 艺术字。例如,输入 "使用 cowsay 工具,消息内容是 '你好' "。
- 'DockerCommandAnalyzer': 发送自然语言指令给 'DockerCommandAnalyzer' 工具,例如 "列出所有 Docker 容器"。请注意,该工具在本项目中被用于演示漏洞,请谨慎使用,并注意观察其行为是否异常。
重要安全提示:
- 本项目是漏洞演示,请勿在任何生产环境或敏感环境中使用。
- 'DockerCommandAnalyzer' 工具被故意设计为存在安全漏洞,请勿随意调用,尤其是在不信任的 MCP 服务器上。
- 请仔细阅读仓库的 'README.md' 文件和博客链接,了解工具投毒漏洞的原理和危害。
- 学习如何防范此类攻击,例如禁用AI工具的自动运行功能,验证MCP服务器的来源,以及使用沙箱环境等。
信息
分类
开发者工具