当前位置: 首页 > news >正文

MCP ZAP Server:一款能够利用大模型替代人工进行Web安全扫描的开源MCP

在往期博文《带你体验一款主流且开源的Web漏洞扫描工具》中,我们介绍了如何使用ZAP进行手动Web安全扫描?你有没有想过通过对话方式就能完成一次安全扫描?接下来我们体验一款近期开源的安全MCP ZAP Server,看看它是如何通过一句话就来搞定Web安全测试的?

通过对话方式完成安全测试

一、功能介绍:概览及各组件简介

MCP ZAP Server是一个基于 Spring Boot 的开源项目(项目地址:https://github.com/dtkmn/mcp-zap-server),它可以将 OWASP ZAP 公开为 MCP(模型上下文协议)服务器,允许任何兼容 MCP 的 AI Agent(例如 Claude Desktop、Cursor、Cline)调度 ZAP 执行扫描操作——爬虫、主动扫描、导入 OpenAPI 规范以及生成报告。

ZAP MCP Server工作原理

各组件说明

1. zap(OWASP ZAP镜像程序)

  • 镜像: zaproxy/zap-stable
  • 目的: 在端口 8090 上运行 OWASP ZAP 守护程序。
  • 配置
    • 禁用 API 密钥。
    • 接受来自所有地址的请求。
    • 将主机目录 ${LOCAL_ZAP_WORKPLACE_FOLDER} 映射到容器路径 /zap/wrk

2. open-webui(也可用其他MCP客户端)

  • 镜像: ghcr.io/open-webui/open-webui
  • 目的: 提供用于管理 ZAP 和 MCP 服务器的 Web 界面。
  • 配置
    • 公开端口 3000。
    • 使用命名卷来保存后端数据。

通过vscode+cline调用MCP服务

3. mcpo

  • 镜像: ghcr.io/open-webui/mcpo:main

  • 用途: 将任何 MCP 工具公开为兼容 OpenAPI 的 HTTP 服务器。仅 open-webui 需要。项目地址:https ://github.com/open-webui/mcpo

  • 配置

    • 在端口 8000 上运行。
    • 通过 URL http://mcp-server:7456/sse 使用 SSE 连接到 MCP 服务器。

4. mcp-server

  • 镜像: mcp-zap-server:latest

  • 用途: 此 repo。充当公开 ZAP 操作的 MCP 服务器。

  • 配置

    • 取决于 zap 服务。
    • 公开端口 7456 以用于 HTTP SSE 连接。
    • 将主机目录 ${LOCAL_ZAP_WORKPLACE_FOLDER} 映射到 /tmp 以允许文件访问。
  • 5. mcpo-filesystem

  • 镜像: ghcr.io/open-webui/mcpo:main

  • 目的: 将 MCP 文件系统服务器公开为与 OpenAPI 兼容的 HTTP 端点。

  • 配置

    • 依赖于 open-webui
    • 公开端口 8001。

6. juice-shop(漏洞靶场)

  • 镜像: bkimminich/juice-shop
  • 目的: 提供一个故意不安全的 Web 应用程序(靶场)来测试 ZAP 的扫描功能。
  • 配置
    • 在端口 3001 上运行。

7. petstore(非必需)

  • 镜像: swaggerapi/petstore3:unstable
  • 目的: 运行 Swagger Petstore 示例 API 来演示 OpenAPI 导入和扫描。
  • 配置
    • 在端口 3002 上运行。

需要注意的是,ZAP MCP Server在调用ZAP时默认使用了免认证方式,如果想启用认证,需要修改下docker-compose.yml文件,将其中的ZAP API KEY替换为真实有效的KEY(个人本地测试用途非必须,建议生产用途时开启认证)。

启用API KEY

二、安装配置:快速上手体验

1. 前提条件

  • 支持工具调用的LLM(例如 gpt-4o、Claude 3、Llama 3、Qwen3)
  • Docker ≥ 20.10
  • Docker Compose ≥ 1.29

满足以上条件后,依次执行如下几行命令:

git clone https://github.com/dtkmn/mcp-zap-server.git
cd mcp-zap-server
export LOCAL_ZAP_WORKPLACE_FOLDER=$(pwd)/zap-workplace # or any other folder you want to use as ZAP's workspace
docker-compose up -d

注:由于涉及镜像体积较大,约8G,最后一行命令docker-compose up -d预计需要20分钟左右才能完成,具体要取决于你的网速。

拉取Docker镜像

服务正常启动后端口信息如下,与我们第一章节各应用组件的介绍中所述端口是一致的。

Docker容器运行状态

2. 配置LLM

在浏览器中打开 http://localhost:3000 ,可以看到 Open Web-UI 界面,进入链接http://localhost:3000/admin/settings/connections 设置连接,用于Open WebUI与大模型进行交互。

设置符合OpenAI / Ollama API规范的连接

这里我配置了阿里云的LLM,阿里云上的每个模型都有100万tokens的免费额度,为了演示本案例已经够用。如果大家购买过其他模型厂商的token,类似方式去配置调用的URL和对应的API key即可。

阿里云百炼API KEY配置

阿里云LLM配置后,在模型中就可以加载出支持的大模型了。

阿里云上大模型

3 配置MCP服务

接下来,如果要使用Open WebUI调用ZAP执行安全扫描,还需要设置ZAP的MCP服务器连接,用到两个地址:http://localhost:9090http://localhost:8001

设置 MCP 服务器连接

4. 执行扫描

配置完成MCP服务后,就可以在Open WebUI上新建对话,同时可以指定大模型,然后就可以在聊天窗口中下发扫描指令,比如询问可用的工具。

询问大模型有哪些可用的工具

相比于Open WebUI,我本人更喜欢使用Cline(功能强大,支持错误修正,自主执行等),直接在VS Code中安装cline插件,配置上LLM账户和MCP Server即可。如下为ZAP MCP Server的配置:

{"mcpServers": {"zap-mcp-server": {"protocol": "mcp","transport": "http","url": "http://localhost:7456/sse"}}
}

打开Cline对话窗口,输入指令,比如:帮我对网址执行安全扫描:http://localhost:3001/

下发扫描任务

cline在扫描过程中会实时显示预览画面和任务进度、Token消耗等详细信息。

安全扫描中

扫描完成后提示“Task Completed”,扫描过程中如果遇到错误会自行尝试修复,也可以人工介入。

完整扫描结果如下:

我完成了对 http://localhost:3001/ 的安全扫描,发现了以下主要安全问题:1. 目录遍历漏洞:- 可以通过 /ftp 路径访问服务器上的敏感文件- 发现了多个敏感文件,包括:* incident-support.kdbx (KeePass 数据库文件)* acquisitions.md (包含机密商业信息)* coupons_2013.md.bak* suspicious_errors.yml2. 敏感信息泄露:- 可以下载 KeePass 数据库文件,这可能包含密码信息- 机密商业文档 (acquisitions.md) 被公开访问- 错误日志文件可能暴露系统内部信息3. 访问控制不足:- /admin 路径可以在没有认证的情况下访问- /ftp 路径可以在没有授权的情况下访问- 没有适当的文件访问权限控制4. 安全头部信息不足:- 缺乏内容安全策略 (Content-Security-Policy)- 缺乏严格的缓存控制- 缺乏HTTP严格传输安全 (HSTS)建议立即采取以下措施:
1. 限制对敏感文件的访问,实施严格的访问控制
2. 移除或保护管理界面 (/admin, /ftp)
3. 添加完整的内容安全策略头
4. 实现身份验证和授权机制
5. 删除或保护敏感配置文件和数据库文件
6. 配置适当的缓存控制头
7. 添加 HSTS 头以确保 HTTPS 连接

关注我,让你在AI Agent时代不掉队! 🔥

每周更新

  • 💡 技术原理图解:一图胜千言,直观呈现技术架构
  • 🛠️ 实战案例解析:结合真实项目经验,分享避坑指南
  • 🤖 前沿技术追踪:第一时间解读AI、区块链等新兴领域

适合人群

  • ✅ 技术小白想系统入门
  • ✅ 开发者想提升技术深度
  • ✅ 产品经理需要技术洞察
  • ✅ 所有对科技充满好奇的人

在这里你能获得

  • ✨ 复杂技术简单化
  • ✨ 抽象概念具象化
  • ✨ 理论知识实用化
  • ✨ 学习路径清晰化

点击关注,开启你的技术认知升级之旅! 🚀

http://www.dtcms.com/a/337425.html

相关文章:

  • Vue深入组件:组件 v-model 详解2
  • 网络安全巡检系统的功能组成和作用
  • sizeof和strlen的对比分析
  • vue从入门到精通:搭建第一个vue项目
  • kali linux从入门到精通教程
  • 【GM3568JHF】FPGA+ARM异构开发板烧录指南
  • Go并发编程-goroutine
  • 智能人形机器人:知识驱动的工业生产力革新
  • 视觉语言导航(11)——预训练范式 4.1
  • 系统架构师考试-操作系统-10道关于PV操作和死锁的模拟题
  • 实现一个函数,使用引用作为参数完成三个字符串按长度排序,最长的字符串放入第一个参数,最短的字符串放入第三个参数(不允许使用 string)
  • Linx--MySQL--安装笔记详细步骤!
  • 石英挠性加速度计:高精度测量的理想之选?
  • Windows安装python
  • 使用 uv管理 Python 虚拟环境:比conda更快、更轻量的现代方案
  • Baumer高防护相机如何通过YoloV8深度学习模型实现手势识别和指尖检测识别(C#代码UI界面版)
  • Java基础数据类型笔试面试中的“坑”
  • 第4章-04-用WebDriver页面元素操作
  • C 语言数据结构与算法的复杂度分析:从理论到实战的效率衡量指南
  • Qwen Code宣布每天免费调用2000次,且无Token限制
  • Webrtc在项目中承担的角色
  • 20250818在荣品的PRO-RK3566开发板跑Buildroot的时候使用在线秒表https://tool.hiofd.com/stopwatch/
  • 【iOS】Block补充
  • 一道同分排名的SQL题
  • 多智能体架构设计:从单Agent到复杂系统的演进逻辑
  • Mind GPT:理想汽车发布的多模态大模型
  • 20. 云计算-云服务模型
  • 基于SpringBoot+Uniapp的互联网订餐小程序(协同过滤算法、Echarts图形化分析)
  • 机器人技术核心模块与前沿趋势总结
  • k8sday10服务发现(1/2)