Exegol MCP服务器
一个模型上下文协议(MCP)服务器,使AI代理能够与Exegol渗透测试容器进行交互 预定义工作流 用于常见的渗透测试任务。
特性
核心功能
- ✅ 在Exegol容器中执行命令(
exegol exec -v) - ✅ 列出可用的Exegol容器(
exegol info) - ✅ 健康检查和状态监测
- ✅ 所有命令执行超时10分钟
- ✅ 并发执行支持(5+个并发命令)
- ✅ 结构化JSON日志记录
🎯 工作流功能(新增!)
- ✅ 7个预定义的渗透测试工作流 随时可用
- ✅ 列出工作流 按类别、难度或标签进行过滤
- ✅ 执行工作流 具有自动步骤排序功能
- ✅ 工作流程:Web侦察、子域枚举、端口扫描、漏洞扫描等
- ✅ 自动错误处理,支持故障继续
先决条件
- Python 3.10+
- Exegol命令行界面 已安装且可访问(Exegol安装)
- 码头工人 正在运行(Exegol要求)
- 至少创建了一个Exegol容器
验证先决条件:
python3 --version # Should be 3.10+
exegol --version # Should show Exegol version
docker ps # Should show Docker is running
exegol info # Should list Exegol containers安装
- 克隆或下载此存储库
- 安装依赖项:
pip install -r requirements.txt- 配置服务器:
# Edit config.yaml to set your Exegol path
vim config.yaml配置
编辑 config.yaml:
exegol:
path: "exegol" # or /usr/local/bin/exegol
timeout:
command_execution: 600 # 10 minutes
logging:
level: "INFO" # DEBUG, INFO, WARNING, ERROR
format: "json" # json or text
mcp:
server_name: "exegol-mcp-server"
version: "0.1.0"
# Compact mode: reduce token usage (recommended for Claude)
compact_mode: true
sessions:
# Persistent sessions: reuse bash sessions (more efficient)
enabled: false
idle_timeout: 300 # Close after 5 minutes of inactivity
parsing:
# Auto-parse pentest tool outputs (nmap, subfinder, gobuster, etc.)
auto_parse: true配置选项说明
紧凑模式(compact_mode: true)
- 目的:减少AI响应中的令牌使用
- 效果:字段名更短,省略详细元数据
- 推荐:
true克劳德互动 - 影响:响应大小减少约30%
自动解析(auto_parse: true)
- 目的:智能解析渗透测试工具输出
- 支持的工具:nmap、亚inder、gobuster、nuclears等
- 输出:添加结构化
parsed_output字段到响应 - 利益:使结果更易于分析和处理
- 示例:
{
"stdout": "...",
"parsed_output": {
"tool_detected": "nmap",
"open_ports": ["22", "80", "443"],
"services": {
"22": "ssh",
"80": "http",
"443": "https"
}
}
}持续会话(sessions.enabled: true)
- 目的:跨多个命令重用bash会话
- 利益:执行速度更快,保持环境状态
- 用例:同一容器上的多个顺序命令
- 空闲超时:5分钟不活动后自动关闭
用法
作为MCP服务器运行
python exegol_mcp.py服务器将在stdio传输上启动,为MCP客户端连接做好准备。
与Claude Desktop集成
添加 ~/.config/claude/mcp.json (Linux/Mac)或 %APPDATA%\Claude\mcp.json (Windows):
{
"mcpServers": {
"exegol": {
"command": "python",
"args": ["/absolute/path/to/exegol_mcp.py"]
}
}
}重新启动Claude Desktop,然后尝试:
- “列出可用的Exegol容器”
- “在pentest box容器中执行'whoami'”
与CLaude代码集成
claude mcp add --transport stdio exegol-mcp -- python /absolute/path/to/exegol_mcp.py然后在claude代码中使用:
/mcp检查mcp状态
🎯 可用的MCP工具
服务器暴露 5个MCP工具:
核心工具
exegol_exec-在Exegol容器中执行命令exegol_list-列出所有可用的Exegol容器exegol_status-检查MCP服务器运行状况
工作流工具
list_workflows-列出可用的预定义渗透测试工作流run_workflow-执行完整的渗透测试工作流程
📋 预定义工作流
可用工作流
| 工作流程 | 类别 | 难度 | 时间 | 描述 |
|---|---|---|---|---|
recon_subdomain | Recon | 简单 | 10分钟 | 带活动检查的全面子域枚举 |
port_scan_full | 枚举 | 中等 | 15分钟 | 带服务检测的完整TCP端口扫描 |
web_recon | Web | 中等 | 20分钟 | Web应用程序侦察(whatweb、gobuster、katana、finalrecon) |
vuln_scan_web | 漏洞扫描 | 中等 | 30分钟 | Web漏洞扫描(核心,xsrfprobe) |
wordpress_scan | Web | 简单 | 15分钟 | WordPress漏洞评估(wpscan) |
network_sweep | 网络 | 简单 | 10分钟 | 网络发现和枚举 |
sql_injection_test | 漏洞扫描 | 硬 | 20分钟 | SQL注入漏洞测试(sqlmap) |
工作流使用示例
1.列出所有可用工作流
问克劳德:
List all available pentesting workflows克劳德将使用 list_workflows MCP工具显示所有7个工作流程及其详细信息。
2.执行Web侦察工作流
问克劳德:
Run the web_recon workflow on http://192.168.1.100克劳德将:
- 使用
run_workflowMCP工具 - 指定工作流:
web_recon - 设定目标:
http://192.168.1.100 - 自动执行所有步骤:
- 技术检测(whatweb) - 目录暴力(gobuster) - 网络爬行(katana) - 全面侦察(最终侦察) - 显示聚合结果
3.按类别筛选工作流
问克劳德:
Show me all web pentesting workflows克劳德将使用 list_workflows 使用类别过滤器仅显示与网络相关的工作流。
4.执行子域枚举
问克劳德:
Enumerate subdomains for example.com using the recon_subdomain workflow克劳德将:
- 运行子域发现(子查找器)
- 检查哪些子域是活动的(httpx)
- 显示调查结果摘要
工作流参数
每个工作流都需要特定的参数:
| 工作流 | 必需参数 | 可选参数 |
|---|---|---|
recon_subdomain | domain | output_dir |
port_scan_full | target | rate |
web_recon | url | wordlist |
vuln_scan_web | url | - |
wordpress_scan | url | - |
network_sweep | network | - |
sql_injection_test | url | data |
真实世界示例
场景:您想对web应用程序执行侦察。
问克劳德:
I need to scan http://192.168.1.100:8080 for reconnaissance.
Use the web_recon workflow.克劳德将:
- 使用whatweb检测技术
- 带gobuster的Bruteforce目录
- 用katana抓取网站
- 使用finalrecon进行全面侦察
- 向您展示所有发现的端点、技术和潜在的攻击媒介
您将获得的结果:
- 检测到的web技术(框架、库、版本)
- HTTP安全标头分析
- 发现的目录和文件
- 已爬网的URL
- JavaScript文件及其内容
- 潜在的敏感文件暴露
工作流功能
- ✅ 自动步骤排序:工作流按顺序执行多个命令
- ✅ 错误处理:如果已配置,则步骤可以在失败时继续
- ✅ 参数验证:执行前验证所需参数
- ✅ 详细结果:每一步返回stdout、stderr、退出代码和执行时间
- ✅ 成功跟踪:确切知道哪些步骤成功或失败
教育用途
本项目仅用于教育目的。始终确保您有权测试任何系统或网络。
许可证
该项目根据MIT许可证获得许可。
