内容
# OWASP MCP 服务器
基于 WebSocket 的任务控制协议(MCP)服务器,用于 OWASP ZAP 安全扫描,实现对安全评估的实时控制和监控。
## 先决条件
- Python 3.8+
- OWASP ZAP 2.12.0+
- Java 运行时环境(JRE)8+
- Sudo/管理员权限(ZAP 需要)
## 为什么选择 MCP 服务器?
| 功能 | MCP 服务器 | ZAP UI | ZAP API |
|---------|------------|---------|---------|
| 自动化 | ✅ 完整 | ❌ 有限 | ✅ 基础 |
| 实时更新 | ✅ WebSocket | ✅ 可视化 | ❌ 轮询 |
| CI/CD 集成 | ✅ 原生 | ❌ 手动 | ✅ 复杂 |
| 批处理 | ✅ 是 | ❌ 否 | ✅ 有限 |
| 学习曲线 | 🟡 中等 | 🟢 简单 | 🔴 困难 |
| 进度跟踪 | ✅ 实时 | ✅ 可视化 | ❌ 手动 |
| 多个域名 | ✅ 并发 | ❌ 顺序 | 🟡 有限 |
| 错误处理 | ✅ 强大 | ✅ 基础 | ❌ 手动 |
## 核心组件
- `mcp_server.py` - 驱动一切的核心。启动此服务,它将连接 OWASP ZAP,成为您的安全扫描核心。
- `mcp_client.py` - 操作的核心。其他组件使用的强大 SDK,您不会直接使用它。
- `mcp_cli.py` - 您的命令行扫描工具。简单易用,却功能强大。
- `test_client.py` - 学习工具。了解工作原理或测试设置的理想选择。
## 快速入门
1. **安装 OWASP ZAP**:
从 https://www.zaproxy.org/download/ 下载
2. **设置项目**:
```bash
git clone https://github.com/shadsidd/Owasp-Zap-MCP-Server-Demo.git
cd Owasp-Zap-MCP-Server-Demo
python -m venv venv
source venv/bin/activate # Windows: .\venv\Scripts\activate
pip install -r requirements.txt
```
3. **启动 ZAP**(需要 sudo/管理员权限):
```bash
# macOS/Linux
sudo /Applications/ZAP.app/Contents/Java/zap.sh -daemon -port 8080
# Windows(以管理员身份)
"C:\Program Files\OWASP\Zed Attack Proxy\zap.bat" -daemon -port 8080
```
4. **启动 MCP 服务器**:
```bash
python mcp_server.py
```
5. **使用 CLI**:
```bash
# 快速蜘蛛扫描(被动)
python mcp_cli.py scan example.com
# 完整主动扫描(全面)
python mcp_cli.py fullscan example.com
# 特定扫描类型,带有 HTML 报告
python mcp_cli.py scan --scan-type=active --output=html example.com
# 多个域名扫描
python mcp_cli.py scan domain1.com domain2.com
# 从文件扫描
python mcp_cli.py scan -f domains.txt
```
## 示例文件
`examples/` 目录包含演示关键功能的脚本:
### 安全扫描
- `basic_scan.py` - 核心扫描,带有错误处理
- `authenticated_scan.py` - 基于表单和其他身份验证方法
- `scan_domains.py` - 多个域名的并发扫描
- `custom_scan_policy.py` - 自定义规则和阈值
### 集成与监控
- `ci_cd_integration.py` - CI/CD 管道集成
- `real_time_monitor.py` - 实时进度和警报监控
- `team_notifications.py` - 电子邮件、Slack 和 Teams 通知
- `custom_rules.py` - 专用安全规则
## 重要注意事项
1. **Sudo 要求**:
- OWASP ZAP 需要 sudo/管理员权限才能运行
- 启动 ZAP 时,您将被提示输入密码
2. **端口配置**:
- ZAP 默认使用端口 8080
- MCP 服务器使用端口 3000
- 确保在启动前这些端口未被占用
3. **常见问题**:
- 如果您看到“地址已被占用”错误:
```bash
# 检查端口 8080 的占用情况
sudo lsof -i :8080
# 如有必要,终止进程
sudo kill -9 <PID>
```
- 如果 ZAP 无法启动,请尝试:
```bash
# 清除现有的 ZAP 进程
pkill -f zap
```
## 扫描类型
MCP 服务器支持多种扫描类型:
- **蜘蛛扫描**(默认):爬取网站以发现内容,最快但发现的问题较少
- **主动扫描**:使用实际攻击执行安全测试,发现更多漏洞
- **完整扫描**:综合扫描(蜘蛛 + 主动),提供最全面的结果
连接信息
猜你喜欢
文件系统操作
Node.js MCP服务器,用于文件系统操作,支持动态访问控制。
Git
一个用于Git自动化和交互的模型上下文协议服务器。
Everything
模型上下文协议服务器
Super-Productivity-MCP
将AI助手连接到Super Productivity的MCP服务器 — 通过Claude、Kiro或任何MCP客户端管理任务、项目和标签
buddy
你的 persistent AI 编程伴侣 - /buddy 营救任务。一个电子宠物。 21 种物种,性格统计,代码反馈。 与 Claude...
ogham-mcp
共享内存 MCP 服务器 — 持久化、可搜索、跨客户端