项目简介

ZAP MCP 服务器是一个基于 Model Context Protocol (MCP) 实现的后端服务,旨在将流行的开源Web应用安全测试工具OWASP ZAP的功能暴露给AI助手和支持MCP协议的客户端。它允许AI通过标准化的工具调用接口,执行各种安全扫描(如主动扫描、被动扫描、AJAX扫描、完整扫描),获取实时状态和详细报告,从而在开发生命周期的早期阶段(“左移安全”)集成自动化安全测试。

主要功能点

  • AI驱动安全测试: 允许AI助手通过调用预定义的工具来执行安全扫描,并解析扫描结果。
  • 多种扫描类型: 支持OWASP ZAP的主动扫描、被动扫描、AJAX Spider和完整扫描。
  • 异步执行: 安全扫描在后台异步运行,客户端可以获取实时状态更新。
  • 容器化部署: 提供Docker/Podman支持,简化部署和管理。
  • 自动化URL转换: 自动将容器环境中的'localhost'或'127.0.0.1'目标URL转换为宿主机网关地址,方便本地开发环境测试。
  • 详细报告: 生成包含风险评分和漏洞名称的详细安全报告。
  • 会话管理: 管理ZAP扫描会话,支持创建新会话等。

安装步骤

ZAP MCP 服务器提供了灵活的安装和部署方式,包括本地安装和推荐的容器化部署。

  1. 克隆仓库
    git clone https://github.com/LisBerndt/zap-mcp-server.git
    cd zap-mcp-server
  2. 安装OWASP ZAPOWASP ZAP 下载页面 下载并安装ZAP。安装完成后,请确保ZAP的可执行文件('zap.bat' 在 Windows 上,'zap.sh' 在 Linux/Mac 上)可通过系统的PATH环境变量访问。您可以通过运行 'where zap.bat' (Windows) 或 'which zap.sh' (Linux/Mac) 来验证。
  3. 安装Python依赖
    pip install -r requirements.txt
  4. 启动服务器
    • 本地运行 (推荐): 这是最简单的启动方式,服务器会自动检查并启动OWASP ZAP(如果未运行)。
      python -m zap_custom_mcp
    • Docker/Podman (推荐,最简便): 容器化部署提供隔离环境,推荐用于生产环境或简化依赖管理。 Linux/Mac 用户:
      ./build.sh
      ./start.sh
      Windows 用户:
      build.bat
      start.bat
      无论哪种方式,服务器启动大约需要 90秒 来完成ZAP的初始化和会话创建。

服务器配置

MCP客户端需要知道ZAP MCP服务器的访问地址才能建立连接。ZAP MCP服务器通过HTTP协议提供JSON-RPC接口。以下是一个通用的MCP客户端配置示例,您可以根据实际的MCP客户端(如Cursor IDE)进行调整:

{
  "mcpServers": {
    "zap-mcp-scanner": {
      "url": "http://localhost:8082/mcp",
      "description": "连接到 ZAP MCP 服务器,用于执行自动化Web安全扫描。",
      "displayName": "ZAP安全扫描器",
      "capabilities": {
        "tools": [
          "start_active_scan",
          "start_complete_scan",
          "start_passive_scan",
          "start_ajax_scan",
          "get_scan_status",
          "cancel_scan",
          "list_scans",
          "create_new_session",
          "start_heartbeat"
        ]
      }
    }
  }
}
  • url: 这是MCP服务器的访问地址。默认情况下,ZAP MCP 服务器在 'http://127.0.0.1:8082/mcp' 上监听。如果部署在Docker/Podman容器中,或者部署在不同的主机上,请根据实际情况修改 'localhost' 和端口。例如,如果部署在远程服务器 'your_server_ip' 上,并且防火墙允许端口 '8082' 访问,则 'url' 可能为 'http://your_server_ip:8082/mcp'。
  • description: 对此MCP服务器功能的简要描述,帮助MCP客户端用户理解其用途。
  • displayName: 在MCP客户端界面中显示的服务名称,便于用户识别。
  • capabilities.tools: 列出该MCP服务器向客户端提供的所有工具的名称。LLM客户端可以根据此列表了解服务器可执行的操作,并智能地调用相应的工具。

基本使用方法

一旦ZAP MCP服务器成功启动并被您的MCP客户端识别,AI助手就可以通过调用其暴露的工具来执行安全扫描。

  • 启动完整扫描: 您可以通过AI助手指令,让它调用 'start_complete_scan' 工具,对指定URL执行全面的安全测试。 例如,您可以向AI助手提问:“请对我的本地开发中的Web应用 'http://localhost:3000' 执行一次完整的安全扫描,并包含详细的漏洞发现。” AI助手会将这个请求转换为一个MCP工具调用,并发送给ZAP MCP服务器。

  • 获取扫描状态: 如果您想了解正在进行的扫描的进度,可以指示AI助手调用 'get_scan_status' 工具,并提供之前扫描启动时返回的唯一 'scan_id'。 例如,您可以向AI助手提问:“我之前启动了一个扫描,ID 是 'abc12345',请告诉我它的最新状态。” AI助手会根据这个指令调用 'get_scan_status' 工具,并返回扫描的实时进度、当前阶段、已用时间等信息。

  • 执行被动扫描: 对于不需要对目标应用进行攻击性测试的场景,可以指示AI助手调用 'start_passive_scan' 工具进行快速、无侵扰的被动安全分析。 例如,您可以向AI助手提问:“请对 'https://juice-shop.herokuapp.com/' 执行一次快速的被动安全扫描。”

通过这些工具调用,AI助手能够与OWASP ZAP深度集成,实现智能化的Web应用安全测试和漏洞管理。

信息

分类

开发者工具