OWASP ZAP 使用手册

Administrator
发布于 2026-05-14 / 4 阅读 / 0 评论 / 0 点赞

OWASP ZAP 使用手册


一、工具概述

OWASP ZAP(Zed Attack Proxy,Zed攻击代理)是一款由全球非营利性安全组织OWASP(开放Web应用程序安全项目)维护的免费、开源的Web应用安全扫描工具。它易于使用,功能强大,被设计为适用于各种安全经验水平的用户,无论是刚开始接触渗透测试的开发人员,还是经验丰富的安全专家,都能从中受益。

ZAP位于浏览器与目标Web应用程序之间,作为一种“中间人代理”(Man-in-the-Middle Proxy)运作。它可以拦截、检查并修改HTTP/HTTPS请求和响应,是动态应用安全测试(DAST,Dynamic Application Security Testing)的重要工具。


二、安装

2.1 Kali Linux下的安装

在Kali Linux中,ZAP并未预装,需手动安装。使用以下命令即可完成安装:

bash

sudo apt update
sudo apt install zaproxy -y

2.2 Windows/macOS下的安装

  • Windows:从OWASP ZAP官网下载.exe安装程序,双击按向导提示完成安装即可。

  • macOS:从官网下载.dmg文件,打开后将ZAP图标拖入Applications文件夹。

2.3 启动

安装完成后,可通过命令行输入 owasp-zap 启动,或通过菜单搜索“ZAP”运行。初次启动时,ZAP会询问是否保存当前会话,可根据需要选择。


三、基本配置

3.1 配置浏览器代理

ZAP默认在本地端口8080上开启HTTP代理。要让浏览器流量经过ZAP,必须配置浏览器使用它作为代理。

Chrome/Firefox手动设置

  1. 打开代理设置

    • Firefox:首选项 → 网络设置 → 设置。

    • Chrome:启动时需通过命令行指定代理,或使用扩展更方便。

  2. 选择“手动代理配置”

  3. 填写代理地址和端口:HTTP Proxy设为127.0.0.1,端口为8080

  4. 勾选“为所有协议使用相同的代理服务器”

推荐方式:使用FoxyProxy扩展
安装FoxyProxy浏览器扩展,配置127.0.0.1:8080代理,并为其命名(如“ZAP”)。测试时一键切换至该代理,日常使用时可快速关闭,避免持续占用ZAP。

3.2 导入证书(用于HTTPS流量)(非必要操作)

ZAP作为中间人代理,会为每个HTTPS网站动态生成证书。浏览器默认不信任此证书,需导入ZAP的根证书。

步骤

  1. 在ZAP中,前往 工具(Tools) → 选项(Options) → 证书(Dynamic SSL Certificates)

  2. 点击 保存(Save),将证书文件(如zap_ca.cer)保存到本地。

  3. 在浏览器中导入该证书:

    • Firefox:首选项 → 隐私与安全 → 证书 → 查看证书 → 证书颁发机构 → 导入,并勾选“信任此证书机构以标识网站”。

    • Chrome:设置 → 隐私和安全 → 安全 → 管理证书 → 受信任的根证书颁发机构 → 导入。

  4. 保存后重启浏览器,HTTPS网站的证书警告将消失。


四、使用方法

4.1 被动扫描

被动扫描是在不主动攻击目标的情况下,分析浏览器与服务器之间的HTTP/HTTPS流量,识别潜在的安全问题。它对系统无侵入,适合在生产环境或预发布环境使用。

操作流程

  1. 确保浏览器已配置ZAP代理。

  2. 在ZAP中正常浏览目标网站,ZAP会自动记录所有请求和响应。

  3. “警报(Alerts)” 标签页,可查看被动扫描发现的所有漏洞,按其风险等级分类。

  4. 点击每个警报,可查看漏洞详情、风险等级、证据以及修复建议。

4.2 主动爬取与扫描

主动扫描会向Web应用程序发送精心构造的恶意请求,如SQL注入、XSS、命令注入等payload,以主动探测潜在漏洞。

核心流程启动代理 → Spider全站爬取 → Active Scan扫描 → 收集告警

  1. 右键目标站点:在 “站点(Sites)” 面板中,右键单击目标站点,选择 “攻击(Attack)” → “Spider…”,启动Spider爬虫。

  2. 配置Spider:Spider会抓取站点所有链接和页面,发现隐藏的URL和参数。

  3. 启动主动扫描:爬取完成后,右键目标站点,选择 “攻击(Attack)” → “主动扫描(Active Scan…)”

  4. 配置扫描策略:ZAP会提供默认扫描策略,也可点击 “策略...” 自定义调整。

  5. 查看结果:在 “警报(Alerts)” 标签页,查看主动扫描发现的所有漏洞。

4.3 快速扫描

此方式适合快速测试单个目标。

操作

  1. 点击界面上的 “快速启动(Quick Start)” 标签页。

  2. “URL to attack” 输入框中,填写目标URL(如https://example.com)。

  3. 点击 “攻击(Attack)” 按钮。

  4. ZAP将自动完成Spider爬取和Active Scan,扫描完成后在下方查看漏洞信息。

4.4 动态爬取(AJAX Spider)

对于大量使用JavaScript动态加载内容的单页应用(SPA),传统Spider可能无法完全覆盖。此时可使用AJAX Spider,它会启动一个真实浏览器(通过Selenium/WebDriver)来渲染和执行JavaScript,从而发现更多隐藏的URL和参数。

操作:右键目标站点 → “攻击(Attack)” → “AJAX Spider…”

4.5 API扫描

ZAP支持对API进行安全测试,尤其适用于OpenAPI/Swagger或GraphQL接口。

操作

  1. 导入API定义文件:点击 “文件(File)” → “导入OpenAPI定义(Import OpenAPI Definition)”“导入GraphQL定义(Import GraphQL Schema)”

  2. ZAP将自动解析并生成API请求结构。

  3. “站点(Sites)” 面板,右键点击API节点,选择 “攻击(Attack)” → “主动扫描(Active Scan…)”


五、高级功能

5.1 自定义扫描策略

ZAP允许用户根据实际需求创建和管理扫描策略(Scan Policy)。

操作:菜单栏 “分析(Analyze)” → “扫描策略管理器(Scan Policy Manager)”,可按需启用/禁用特定漏洞检测规则,调整扫描强度。

5.2 Fuzzing与手动测试

通过Fuzzer可对请求参数进行模糊测试,批量发送畸形输入以挖掘输入验证漏洞。基本操作是,在请求区域选中需要参数化的部分并右键选择 “Fuzz…”,添加字典后启动即可。

5.3 身份认证支持

对于需要登录才能访问的页面,ZAP支持多种身份验证机制。

配置路径“工具(Tools)” → “选项(Options)” → “认证(Authentication)”,可配置表单登录、基于HTTP的认证、脚本认证等。

5.4 生成报告

ZAP可以生成详尽的HTML、JSON、Markdown等格式的安全测试报告。

操作:点击菜单栏 “报告(Report)” → “生成HTML报告(Generate HTML Report…)”,设置保存路径和文件名,点击 “生成(Generate)”

5.5 插件与扩展

ZAP具有强大的可扩展性,可通过安装插件(Add-ons)来增加新功能。

操作:菜单栏 “帮助(Help)” → “检查更新(Check for Updates)” 可浏览和安装插件。

5.6 命令行模式(自动化集成)

ZAP提供完整的REST API,支持Python、Java等语言调用,便于集成到CI/CD流程。

启动daemon模式

bash

zap.sh -daemon -host 127.0.0.1 -port 8090 -config api.key=your_api_key

Python自动化示例

python

import time
from zapv2 import ZAPv2

target = 'https://example.com'
zap = ZAPv2(apikey='your_api_key', proxies={'http': 'http://127.0.0.1:8090', 'https': 'http://127.0.0.1:8090'})

print('Accessing target:', target)
zap.urlopen(target)
time.sleep(2)

print('Spider started')
scan_id = zap.spider.scan(target)
while int(zap.spider.status(scan_id)) < 100:
    time.sleep(5)
print('Spider completed')

print('Active scan started')
scan_id = zap.ascan.scan(target)
while int(zap.ascan.status(scan_id)) < 100:
    time.sleep(5)
print('Active scan completed')

六、常见问题

  1. 如何修改ZAP的代理端口?
    默认端口为8080。如需修改,可在ZAP中点击 “工具(Tools)” → “选项(Options)” → “本地代理(Local Proxies)” 处更改端口,并同步更新浏览器的代理配置。

  2. HTTPS证书错误如何解决?
    安装ZAP根证书。

  3. 扫描速度慢怎么办?
    可调整主动扫描的线程数:“工具(Tools)” → “选项(Options)” → “扫描(Scan)” → “最大扫描器数量(Max Scanners)”,或选择更轻量的扫描策略。

  4. 如何登录认证后扫描?
    配置上下文(Context)和认证(Authentication),指定登录页面、用户名和密码字段,并记录会话。


七、最佳实践

  1. 测试环境限定:避免对生产环境进行主动扫描,默认情况下ZAP的主动扫描会对目标发送大量恶意Payload,可能对应用造成影响。

  2. 增量扫描:对修改的模块进行定向扫描,而非每次全量扫描。

  3. 误报处理:对于确定为误报的警报,可右键单击该警报,选择 “假阳性(False Positive)” 进行标记。

  4. 定期更新:ZAP每周都会发布新版本,建议定期更新以获得最新的漏洞检测规则和功能。


八、总结

OWASP ZAP是一款功能全面、开源免费且易于集成的Web应用安全测试工具。它兼顾自动化测试(主动/被动扫描)与手动测试(拦截代理、重放器等),既适合初学者快速入门,也适合经验丰富的安全专家进行深度渗透测试。通过将ZAP集成到CI/CD流水线,可以有效实现DevSecOps中的“安全左移”,帮助开发团队更早发现并修复安全漏洞。


评论