返回首頁OWASP

OWASP ZAP 教學:免費弱點掃描工具下載、安裝到報告輸出完整指南

22 min 分鐘閱讀

OWASP ZAP 教學:免費弱點掃描工具下載、安裝到報告輸出完整指南

TL;DR

  • OWASP ZAP(Zed Attack Proxy)是免費開源的網站弱點掃描工具
  • 支援 Windows、macOS、Linux 及 Docker 部署
  • 提供被動掃描、主動掃描、Spider 爬蟲、Fuzzer 等功能
  • 可輸出 HTML、XML、JSON 格式報告
  • 可整合進 CI/CD Pipeline 實現自動化安全測試

什麼是 OWASP ZAP?

OWASP ZAP(Zed Attack Proxy)是全球最受歡迎的免費網站弱點掃描工具。由 OWASP 社群維護,專為找出網站安全漏洞而設計。

ZAP 的全名是 Zed Attack Proxy。它扮演的角色是「中間人代理」。當你瀏覽網站時,所有流量都會經過 ZAP。這讓 ZAP 能夠分析每一個 HTTP 請求和回應,找出潛在的安全問題。

想深入了解 OWASP 組織和其他安全專案,可以參考 OWASP 完整指南

插圖:電腦螢幕顯示 OWASP ZAP 軟體介面,左側為網站樹狀目...

場景描述: 電腦螢幕顯示 OWASP ZAP 軟體介面,左側為網站樹狀目錄,中央為 HTTP 請求面板,右下角顯示發現的弱點警告清單。背景是灰色桌面。

視覺重點:

  • 主要內容清晰呈現

必須出現的元素:

  • 依據描述中的關鍵元素

需要顯示的中文字:

顏色調性: 專業、清晰

避免元素: 抽象圖形、齒輪、發光特效

Slug: owasp-zap-interface-overview

誰需要學 OWASP ZAP?

ZAP 適合這些人使用:

  • 資安工程師:執行滲透測試前的自動化掃描
  • 開發者:在上線前檢測自己寫的程式碼
  • QA 測試人員:將安全測試納入測試流程
  • DevOps 工程師:建置自動化安全掃描 Pipeline

ZAP vs Burp Suite:該選哪個?

市面上最常被比較的兩個工具就是 ZAP 和 Burp Suite。

比較項目OWASP ZAPBurp Suite
價格完全免費免費版功能有限,Pro 版每年 $449 美元
開源
自動化掃描免費提供Pro 版才有
API 掃描支援支援
CI/CD 整合原生支援需 Pro 版
社群支援活躍活躍
學習曲線中等中等偏高

建議:預算有限或剛入門,選 ZAP。需要更進階的手動測試功能,考慮 Burp Suite Pro。

ZAP 能做什麼?不能做什麼?

ZAP 能做到的事

  • 自動找出 XSS、SQL Injection 等常見漏洞
  • 分析網站結構和所有端點
  • 記錄和重放 HTTP 請求
  • 模糊測試(Fuzzing)
  • 產生專業的掃描報告

ZAP 的限制

  • 無法找出商業邏輯漏洞
  • 對 JavaScript 重度使用的 SPA 網站支援較弱
  • 需要人工判斷誤報
  • 無法完全取代人工滲透測試

安裝與環境設定

ZAP 支援多種安裝方式。選擇最適合你環境的方法。

Windows 安裝

  1. 前往 ZAP 官方下載頁面
  2. 下載 Windows Installer(.exe 檔案)
  3. 執行安裝程式,按照提示完成安裝
  4. 安裝完成後,從開始功能表啟動 ZAP

系統需求

  • Windows 10 或更新版本
  • Java 11 或更新版本(安裝程式會自動處理)
  • 至少 4GB RAM(建議 8GB)

macOS 安裝

方法一:使用 DMG 安裝檔

  1. 下載 macOS DMG 檔案
  2. 開啟 DMG,將 ZAP 拖曳到 Applications 資料夾
  3. 首次開啟時,按住 Control 點擊,選擇「開啟」

方法二:使用 Homebrew

brew install --cask zap

Linux 安裝

Debian/Ubuntu

# 下載 .deb 套件
wget https://github.com/zaproxy/zaproxy/releases/download/v2.15.0/ZAP_2_15_0_unix.sh

# 執行安裝
chmod +x ZAP_2_15_0_unix.sh
./ZAP_2_15_0_unix.sh

使用 Snap

sudo snap install zaproxy --classic

Docker 部署(推薦)

Docker 是最乾淨的部署方式。不用擔心系統相依性問題。

# 拉取最新映像檔
docker pull zaproxy/zap-stable

# 執行 ZAP
docker run -u zap -p 8080:8080 -p 8090:8090 -i zaproxy/zap-stable zap-webswing.sh

執行後,開啟瀏覽器前往 http://localhost:8080/zap/ 即可使用網頁版介面。

Headless 模式(適合 CI/CD)

docker run -v $(pwd):/zap/wrk/:rw -t zaproxy/zap-stable zap-baseline.py \
  -t https://example.com \
  -r report.html

插圖:終端機視窗顯示 Docker 指令執行 OWASP ZAP ...

場景描述: 終端機視窗顯示 Docker 指令執行 OWASP ZAP 容器,畫面中可見 docker run 指令和容器啟動成功的輸出訊息。背景是深色終端機主題。

視覺重點:

  • 主要內容清晰呈現

必須出現的元素:

  • 依據描述中的關鍵元素

需要顯示的中文字:

顏色調性: 專業、清晰

避免元素: 抽象圖形、齒輪、發光特效

Slug: owasp-zap-docker-terminal


ZAP 功能詳解

ZAP 提供四種主要的掃描功能。理解它們的差異,才能有效運用。

被動掃描(Passive Scan)

被動掃描是最安全的掃描方式。它只分析經過 ZAP 的流量,不會發送任何額外請求。

被動掃描能發現

  • 缺少的安全 Header(如 X-Frame-Options、CSP)
  • Cookie 設定問題(缺少 HttpOnly、Secure 旗標)
  • 敏感資訊洩露(如錯誤訊息、版本資訊)
  • 不安全的內容載入(Mixed Content)

使用方式

  1. 設定瀏覽器 Proxy 指向 ZAP(預設 localhost:8080)
  2. 正常瀏覽目標網站
  3. ZAP 會自動分析所有流量
  4. 查看「Alerts」標籤頁檢視發現的問題

被動掃描是零風險的。可以用在任何網站上,包括正式環境。

主動掃描(Active Scan)

主動掃描會實際發送攻擊封包來測試網站。這是找出漏洞最有效的方式,但也有風險。

主動掃描能發現

  • SQL Injection
  • Cross-Site Scripting(XSS)
  • Path Traversal
  • Remote File Inclusion
  • Command Injection
  • 其他 OWASP Top 10 漏洞

使用方式

  1. 先用 Spider 或手動瀏覽收集網站結構
  2. 在 Sites 樹狀圖中,右鍵點擊目標
  3. 選擇「Attack」→「Active Scan」
  4. 設定掃描策略,點擊「Start Scan」

警告:主動掃描可能造成系統負載增加、產生大量日誌、甚至影響系統穩定。只對你有權限測試的網站使用。

Spider 爬蟲

Spider 會自動探索網站的所有連結和頁面。這是掃描前的必要步驟。

Spider 的功能

  • 自動發現所有可訪問的 URL
  • 找出隱藏的目錄和檔案
  • 識別表單和參數
  • 建立完整的網站地圖

傳統 Spider vs AJAX Spider

類型適用場景特點
傳統 Spider傳統網站、靜態頁面快速、資源消耗低
AJAX SpiderSPA、JavaScript 重度網站模擬瀏覽器、較慢但更完整

使用 AJAX Spider

右鍵點擊目標 URL → Attack → AJAX Spider

對 React、Vue、Angular 等現代前端框架網站,建議兩種 Spider 都執行。

Fuzzer 模糊測試

Fuzzer 是進階功能。它會對特定參數發送大量變形的輸入,測試系統的處理能力。

Fuzzer 使用場景

  • 測試輸入驗證的強度
  • 尋找緩衝區溢位
  • 測試 API 參數邊界
  • 繞過身份驗證

使用方式

  1. 在 History 中找到目標請求
  2. 右鍵選擇「Attack」→「Fuzz」
  3. 選擇要測試的參數位置
  4. 選擇 Payload 列表(ZAP 內建多種)
  5. 開始 Fuzzing

實戰教學

理論講完了。現在動手做。

掃描本地開發環境

這是最安全的練習方式。掃描自己的開發環境。

步驟

  1. 啟動你的本地開發伺服器

    # 例如 Node.js 專案
    npm run dev
    # 假設運行在 http://localhost:3000
    
  2. 啟動 ZAP 並設定 Proxy

    • 開啟 ZAP
    • 預設 Proxy 在 localhost:8080
  3. 設定瀏覽器使用 ZAP Proxy

    • 推薦使用 Firefox(內建 Proxy 設定)
    • 或安裝 FoxyProxy 擴充功能
    • 設定 HTTP Proxy 為 127.0.0.1:8080
  4. 瀏覽目標網站

    • 用設定好的瀏覽器訪問 http://localhost:3000
    • 點擊所有連結、填寫所有表單
    • ZAP 會記錄所有請求
  5. 執行主動掃描

    • 在 Sites 面板找到 localhost:3000
    • 右鍵 →「Attack」→「Active Scan」
    • 等待掃描完成
  6. 檢視結果

    • 切換到「Alerts」標籤頁
    • 依嚴重性排序查看

掃描 OWASP Juice Shop

Juice Shop 是 OWASP 官方的漏洞練習平台。非常適合學習使用。

詳細的 Juice Shop 攻略可以參考 OWASP Juice Shop 教學

快速建置 Juice Shop

docker run -d -p 3000:3000 bkimminich/juice-shop

開啟瀏覽器訪問 http://localhost:3000,你會看到一個果汁商店網站。

ZAP 掃描 Juice Shop

  1. 在 ZAP 輸入目標 URL:http://localhost:3000
  2. 執行 Spider 收集所有頁面
  3. 執行 Active Scan
  4. 查看發現的漏洞

Juice Shop 故意設計了超過 100 個漏洞。ZAP 能找出大部分自動化可偵測的問題。

掃描正式網站注意事項

掃描正式環境網站之前,請注意以下幾點:

法律責任

  • 只掃描你有授權的網站
  • 取得書面許可是最安全的做法
  • 未經授權的掃描可能違法

技術注意事項

  • 避開營業尖峰時段
  • 調低掃描強度(Scan Policy)
  • 監控目標系統負載
  • 準備好隨時停止掃描

最佳實務

  • 先在測試環境驗證
  • 通知相關 IT 人員
  • 保留掃描紀錄
  • 排除敏感功能(如支付、刪除)

報告輸出與解讀

掃描完成後,產生報告是重要的一步。

報告格式選擇

ZAP 支援多種報告格式:

格式適用場景特點
HTML給人看的報告美觀、易讀、可用瀏覽器開啟
XML系統整合結構化資料、適合程式處理
JSONAPI 整合現代格式、易於解析
Markdown文件整合可嵌入其他文件

產生報告

  1. 選單:「Report」→「Generate Report」
  2. 選擇報告格式
  3. 選擇要包含的內容(警告等級、詳細程度)
  4. 指定輸出路徑
  5. 點擊「Generate」

報告內容解讀

一份 ZAP 報告通常包含以下區塊:

1. 摘要區(Summary)

  • 掃描目標 URL
  • 掃描時間
  • 發現的警告數量(依等級分類)

2. 警告詳情(Alert Details)

每個警告包含:

  • 名稱:漏洞類型(如 SQL Injection)
  • 風險等級:High / Medium / Low / Informational
  • 信心度:High / Medium / Low
  • 描述:漏洞說明
  • URL:發現問題的位置
  • 參數:受影響的參數
  • 攻擊:ZAP 使用的測試 Payload
  • 證據:系統回應中的異常內容
  • 解決方案:修復建議
  • 參考資料:相關 CWE、OWASP 連結

3. 按風險等級優先處理

建議的處理順序:

  1. High:立即修復,可能被立即利用
  2. Medium:盡快修復,有一定風險
  3. Low:評估後決定是否修復
  4. Informational:了解即可,通常是建議事項

誤報判斷技巧

ZAP 不完美。它會產生誤報(False Positive)。

常見誤報情況

  • CSRF Token 誤判:ZAP 可能誤認 Token 保護不足
  • SQL Injection 誤報:回應中剛好有類似錯誤訊息
  • XSS 誤報:輸出有特殊字元但已正確編碼

判斷方法

  1. 手動驗證:嘗試重現 ZAP 的攻擊
  2. 檢查證據:看「Evidence」欄位是否合理
  3. 比對原始碼:確認該位置的處理邏輯
  4. 調整信心度門檻:Low Confidence 的警告優先複查

記錄誤報: 在 ZAP 中可以將確認的誤報標記為「False Positive」,避免重複報告。

看不懂掃描報告?讓專家幫你解讀並提供修復建議


CI/CD 整合

將安全掃描整合進 CI/CD Pipeline,是 DevSecOps 的核心實踐。

ZAP CLI 工具

ZAP 提供三種自動化掃描腳本:

腳本用途掃描強度
zap-baseline.py快速基線掃描被動掃描為主
zap-full-scan.py完整掃描被動 + 主動掃描
zap-api-scan.pyAPI 掃描針對 OpenAPI/SOAP

GitHub Actions 整合

在你的專案中建立 .github/workflows/zap-scan.yml

name: ZAP Security Scan

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]
  schedule:
    - cron: '0 0 * * 0'  # 每週日執行

jobs:
  zap-scan:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: ZAP Baseline Scan
        uses: zaproxy/[email protected]
        with:
          target: 'https://your-staging-site.com'
          rules_file_name: '.zap/rules.tsv'

      - name: Upload Report
        uses: actions/upload-artifact@v3
        with:
          name: zap-report
          path: report_html.html

設定忽略規則(.zap/rules.tsv)

10015	IGNORE	(Incomplete or No Cache-control)
10021	IGNORE	(X-Content-Type-Options Header Missing)

GitLab CI 整合

.gitlab-ci.yml 加入:

zap-scan:
  stage: security
  image: zaproxy/zap-stable
  script:
    - mkdir -p /zap/wrk
    - zap-baseline.py -t $STAGING_URL -r report.html
  artifacts:
    paths:
      - report.html
    expire_in: 1 week
  only:
    - merge_requests
    - main

Jenkins 整合

使用 Official ZAP Jenkins Plugin:

  1. 安裝「Official OWASP ZAP」Plugin
  2. 在 Pipeline 腳本中加入:
pipeline {
    agent any
    stages {
        stage('Security Scan') {
            steps {
                script {
                    startZap(host: 'localhost', port: 8090)
                    runZapCrawler(host: 'https://your-app.com')
                    runZapAttack(host: 'https://your-app.com')
                    archiveZap()
                }
            }
        }
    }
}

插圖:GitHub Actions 介面顯示 ZAP Securi...

場景描述: GitHub Actions 介面顯示 ZAP Security Scan workflow 執行成功,可見綠色勾勾狀態和執行時間。側邊欄顯示 Artifacts 區塊有 zap-report 可下載。

視覺重點:

  • 主要內容清晰呈現

必須出現的元素:

  • 依據描述中的關鍵元素

需要顯示的中文字:

顏色調性: 專業、清晰

避免元素: 抽象圖形、齒輪、發光特效

Slug: owasp-zap-github-actions-workflow

想在 DevOps 流程導入安全掃描?我們有豐富經驗


進階設定

掌握基礎後,這些進階功能能提升掃描效果。

自訂掃描規則

ZAP 內建上百條掃描規則。你可以根據需求調整。

調整掃描策略

  1. 「Analyze」→「Scan Policy Manager」
  2. 選擇或新增一個 Policy
  3. 對每條規則設定:
    • Threshold:觸發警告的門檻(Off / Low / Medium / High)
    • Strength:測試強度(影響掃描速度)

常見調整建議

  • 對 API 專案,關閉 XSS 相關規則
  • 對內部系統,可提高掃描強度
  • 對正式環境,降低 DOS 相關測試

認證掃描設定

很多網站需要登入才能看到完整功能。ZAP 支援多種認證方式。

Form-Based 認證

  1. 「右鍵目標 URL」→「Include in Context」→「New Context」
  2. 在 Context 中選擇「Authentication」
  3. 選擇「Form-Based Authentication」
  4. 設定登入 URL 和表單參數
  5. 設定登出指標(Logged-out indicator)

Session Management

  • Cookie-based Session
  • HTTP Authentication
  • JSON Web Token(JWT)

設定登入使用者

  1. 在 Context 的「Users」區塊
  2. 新增使用者和對應憑證
  3. 選擇「Forced User Mode」強制使用特定身份

API 掃描

針對 API 的掃描需要不同的方法。

匯入 API 定義

ZAP 支援匯入:

  • OpenAPI / Swagger(JSON/YAML)
  • SOAP WSDL
  • GraphQL Schema

匯入方式

  1. 「Import」→「Import an OpenAPI definition」
  2. 選擇本地檔案或輸入 URL
  3. ZAP 會自動建立所有端點

API 掃描最佳實務

  • 使用 zap-api-scan.py 自動化
  • 提供正確的認證 Header
  • 考慮 Rate Limiting,調整掃描速度
  • 對 GraphQL,注意 Introspection 查詢

更多 API 安全知識,可以參考 OWASP API Top 10


常見問題 FAQ

Q1:OWASP ZAP 是免費的嗎?

完全免費。ZAP 是 OWASP 社群維護的開源專案。不管是個人使用、商業使用、還是整合進產品中,都不需要付費。原始碼在 GitHub 上公開,任何人都可以貢獻。

Q2:掃描別人的網站合法嗎?

未經授權的掃描可能違法。即使是「善意」的安全測試,沒有取得網站擁有者的書面授權,就對其進行掃描,在許多國家都屬於非法行為。建議:

  • 只掃描自己的網站或獲得授權的目標
  • 使用 Juice Shop、WebGoat 等練習平台學習
  • 企業環境中,取得正式的測試授權文件

Q3:ZAP 能發現所有漏洞嗎?

不能。ZAP 是自動化工具,有其限制:

  • 商業邏輯漏洞(如權限繞過)需要人工測試
  • 某些複雜的漏洞需要特定情境才能觸發
  • JavaScript 重度網站可能無法完整爬取
  • 誤報和漏報都會發生

ZAP 應該作為安全測試的起點,而非終點。搭配人工滲透測試,才能獲得更完整的安全評估。


結論

OWASP ZAP 是資安工程師必備的工具。免費、開源、功能強大。想進一步練習,可以試試 OWASP Mobile 與 IoT 安全 學習行動裝置測試技巧。

重點回顧:

  1. 安裝簡單:支援多平台,Docker 部署最方便
  2. 四大功能:被動掃描、主動掃描、Spider、Fuzzer
  3. 報告專業:多格式輸出,方便不同用途
  4. CI/CD 友善:原生支援自動化整合

學會 ZAP,你就能:

  • 在開發階段就找出安全問題
  • 建立自動化安全掃描流程
  • 產生專業的安全評估報告

下一步建議:

  • 用 Juice Shop 練習實戰技巧
  • 嘗試將 ZAP 整合進你的 CI/CD
  • 學習解讀報告、判斷誤報

自己掃描不放心?預約專業弱點掃描服務

需要專業的雲端建議?

無論您正在評估雲平台、優化現有架構,或尋找節費方案,我們都能提供協助

預約免費諮詢

相關文章