OWASP ZAP Web 安全测试教程

OWASP ZAP(Zed Attack Proxy)是全球最流行的开源 Web 安全测试工具,由 OWASP 基金会维护。它可以自动发现 Web 应用中的 SQL 注入、XSS、CSRF 等常见安全漏洞,同时也支持手动渗透测试。本文将介绍如何在搬瓦工 VPS 上通过命令行和 Docker 方式使用 ZAP 进行 Web 安全测试。

一、ZAP 核心功能

  • 被动扫描:在不发送额外请求的情况下,分析经过代理的流量中的安全问题。
  • 主动扫描:主动向目标发送各种攻击载荷,检测 SQL 注入、XSS 等漏洞。
  • 爬虫:自动爬取网站页面,发现所有可访问的 URL。
  • Ajax 爬虫:使用浏览器引擎爬取 JavaScript 渲染的页面。
  • Fuzzer:对参数进行模糊测试。
  • API 支持:提供 REST API,支持自动化集成。

二、Docker 部署

在搬瓦工 VPS 上推荐使用 Docker 方式运行 ZAP,无需安装 Java 环境。Docker 安装请参考Docker 安装教程

2.1 拉取镜像

docker pull ghcr.io/zaproxy/zaproxy:stable

2.2 基线扫描

基线扫描是最快的扫描模式,只运行被动扫描规则:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
  -t https://example.com \
  -r baseline-report.html

2.3 全面扫描

全面扫描包含爬虫和主动扫描,耗时较长但检测更全面:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
  -t https://example.com \
  -r full-report.html

2.4 API 扫描

针对 API 接口的扫描,支持 OpenAPI/Swagger 规范:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-api-scan.py \
  -t https://example.com/api/openapi.json \
  -f openapi \
  -r api-report.html

三、保存扫描报告

# 创建报告目录
mkdir -p /opt/zap-reports

# 运行扫描并保存报告到主机
docker run -v /opt/zap-reports:/zap/wrk:rw \
  -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
  -t https://example.com \
  -r report.html \
  -J report.json \
  -x report.xml

四、ZAP Daemon 模式

以守护进程模式运行 ZAP,提供 API 接口供其他工具调用:

# 启动 ZAP 守护进程
docker run -d --name zap \
  -p 8080:8080 \
  ghcr.io/zaproxy/zaproxy:stable \
  zap.sh -daemon -host 0.0.0.0 -port 8080 \
  -config api.key=your-api-key \
  -config api.addrs.addr.name=.* \
  -config api.addrs.addr.regex=true

4.1 使用 API 控制扫描

# 启动爬虫
curl "http://localhost:8080/JSON/spider/action/scan/?apikey=your-api-key&url=https://example.com"

# 查看爬虫进度
curl "http://localhost:8080/JSON/spider/view/status/?apikey=your-api-key"

# 启动主动扫描
curl "http://localhost:8080/JSON/ascan/action/scan/?apikey=your-api-key&url=https://example.com"

# 查看扫描进度
curl "http://localhost:8080/JSON/ascan/view/status/?apikey=your-api-key"

# 获取告警
curl "http://localhost:8080/JSON/core/view/alerts/?apikey=your-api-key"

五、自定义扫描策略

创建扫描规则配置文件来控制扫描行为:

cat > /opt/zap-rules.conf << 'EOF'
# 规则 ID 和动作(IGNORE, WARN, FAIL)
10016	IGNORE
10017	IGNORE
10021	WARN
10038	WARN
10049	WARN
40012	FAIL
40014	FAIL
40016	FAIL
40018	FAIL
90022	FAIL
EOF

docker run -v /opt:/zap/wrk:rw \
  -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
  -t https://example.com \
  -c zap-rules.conf \
  -r report.html

六、扫描认证后的页面

对于需要登录的 Web 应用,可以通过上下文文件配置认证:

cat > /opt/zap-context.xml << 'CONTEXT'


  
    Authenticated Context
    https://example.com.*
    
      2
      Logout
      Login
      
https://example.com/login username={%username%}&password={%password%}
testuser:testpassword
CONTEXT

七、CI/CD 集成

ZAP 可以集成到持续集成流程中,在每次部署后自动进行安全检测:

#!/bin/bash
# CI/CD 安全扫描脚本

TARGET_URL="https://staging.example.com"
REPORT_DIR="/opt/zap-reports/$(date +%Y%m%d)"

mkdir -p "$REPORT_DIR"

# 运行基线扫描
docker run --rm \
  -v "$REPORT_DIR":/zap/wrk:rw \
  ghcr.io/zaproxy/zaproxy:stable zap-baseline.py \
  -t "$TARGET_URL" \
  -r report.html \
  -J report.json \
  -I

EXIT_CODE=$?

if [ $EXIT_CODE -ne 0 ]; then
  echo "Security scan found issues! Check report at: $REPORT_DIR/report.html"
  exit 1
fi

echo "Security scan passed."

八、报告解读

ZAP 报告按风险等级分类:

  • High(高危):SQL 注入、远程代码执行等严重漏洞,需要立即修复。
  • Medium(中危):XSS、CSRF 等常见漏洞,需要尽快修复。
  • Low(低危):信息泄露、不安全的配置等,建议修复。
  • Informational(信息):安全最佳实践建议,可作为参考。

每条告警都包含详细的描述、解决方案和参考链接,按照建议逐一处理即可提升 Web 应用的安全性。

九、常见问题

扫描超时

调整超时参数:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py \
  -t https://example.com \
  -m 10 \
  -r report.html

-m 参数设置最大扫描时间(分钟)。

无法访问 HTTPS 站点

确保容器内的时间和证书正确,如果目标使用自签名证书,可以忽略 SSL 错误。

总结

OWASP ZAP 是 Web 安全测试的标准工具,通过 Docker 可以在搬瓦工 VPS 上方便地运行各种安全扫描。无论是开发阶段的安全检测还是生产环境的安全审计,ZAP 都能提供有价值的安全发现。配合 Nikto Web 扫描Nuclei 漏洞扫描,可以实现更全面的 Web 安全评估。选购搬瓦工 VPS 请查看全部方案,使用优惠码 NODESEEK2026 可享受折扣。如有问题可通过搬瓦工官网提交工单。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。