Token导航 LogoToken导航TokenDH.com
Vulnerable File Reader Server logo
安全风控stdio官方级别未说明来源级核验

Vulnerable File Reader Server

MCP Server

该文档详细描述了Python MCP文件读取器中的命令注入漏洞,展示了攻击者如何通过操纵文件路径参数在主机系统上执行任意shell命令。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
PythonClaude安全Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Eliran79

提供方

Eliran79

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install mcp-inspector

详细介绍

MCP文件读取器中的命令注入漏洞

此存储库演示了Python MCP(模型上下文协议)服务器实现中的一个关键命令注入漏洞。该漏洞允许攻击者通过操纵文件路径参数在主机系统上执行任意shell命令。

脆弱性

该漏洞存在于 read_file 该函数旨在从“安全”目录读取文件,但包含一个危险的实现缺陷:

command = f"cat {file_name}"
result = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT)

此代码易受攻击,因为:

  1. 使用 shell=True 它调用shell来执行命令
  2. 它直接插入用户输入(file_name)未经适当清理就进入命令字符串
  3. 它只对输入路径执行表面验证

在文件名周围使用引号的简单语义差异('file_name')不使用引号(file_name)将整个系统暴露给命令执行。

安装

先决条件

  • Python 3.12或更高版本
  • MCP库版本1.6.0

设置

  1. 克隆此存储库:
   git clone https://github.com/Eliran79/Vulnerable-file-reader-server.git
   cd Vulnerable-file-reader-server
  1. 安装MCP服务器:
   mcp install main.py
  1. 通过编辑配置Claude Desktop以使用您的MCP服务器 ~/.config/claude-desktop/claude_desktop_config.json:
   {
     "mcpServers": {
       "file-reader": {
         "command": "/ABSOLUTE/PATH/TO/uv",
         "args": [
           "--directory",
           "/data/git/file_reader_server",
           "/usr/bin/uv",
           "run,--with,mcp,mcp,run,main.py"
         ]
       }
     }
   }

一定要更换 /ABSOLUTE/PATH/TO/uv 使用uv可执行文件的实际路径,并在需要时调整目录路径。

  1. 在开发模式下启动MCP服务器:
   mcp dev main.py

演示

  1. 在单独的终端中,安装并运行MCP检查器:
   pip install mcp-inspector
   mcp-inspector
  1. 在MCP检查器GUI中连接到服务器:

- 将传输类型设置为“STDIO” - 将命令设置为: run --with mcp run main.py - 点击“重新启动”

  1. 利用该漏洞:

- 转到“工具”选项卡 - 查找“read_file”工具 - 在“file_name”字段中,输入:

     /tmp/safe/test.txt; whoami

- 点击“运行工具”

  1. 您应该看到test.txt的内容,后面是您的用户名,这表明命令执行成功。

其他开发示例

以下是更多可以尝试的命令注入有效载荷:

/tmp/safe/test.txt; id
/tmp/safe/test.txt; ls -la /etc
/tmp/safe/test.txt; cat /etc/passwd
/tmp/safe/test.txt; echo $(hostname)
/tmp/safe/test.txt; find / -name "*.conf" 2>/dev/null | head -5

正确修复

要修复此漏洞,请不要使用 shell=True 使用用户提供的输入。相反:

# SECURE: Use a list of arguments instead of shell=True
result = subprocess.check_output(['cat', file_name], shell=False)

# OR, if shell=True is necessary, properly quote the argument:
import shlex
result = subprocess.check_output(f"cat {shlex.quote(file_name)}", shell=True)

# AND perform proper path validation:
import os
safe_dir_resolved = os.path.abspath(SAFE_DIRECTORY)
requested_path_resolved = os.path.abspath(file_name)
if not requested_path_resolved.startswith(safe_dir_resolved):
    return f"Error: Access denied. Path traversal attempt detected."

警告

⚠️ 仅用于教育目的:此实现包含故意的安全漏洞。切勿在生产环境或任何包含敏感信息的系统中使用此代码。

目录标签

目录标签

PythonClaude安全安全漏洞本地部署命令注入Python安全MCP协议文件读取

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP