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 ZAP | Burp Suite |
|---|---|---|
| 價格 | 完全免費 | 免費版功能有限,Pro 版每年 $449 美元 |
| 開源 | 是 | 否 |
| 自動化掃描 | 免費提供 | Pro 版才有 |
| API 掃描 | 支援 | 支援 |
| CI/CD 整合 | 原生支援 | 需 Pro 版 |
| 社群支援 | 活躍 | 活躍 |
| 學習曲線 | 中等 | 中等偏高 |
建議:預算有限或剛入門,選 ZAP。需要更進階的手動測試功能,考慮 Burp Suite Pro。
ZAP 能做什麼?不能做什麼?
ZAP 能做到的事:
- 自動找出 XSS、SQL Injection 等常見漏洞
- 分析網站結構和所有端點
- 記錄和重放 HTTP 請求
- 模糊測試(Fuzzing)
- 產生專業的掃描報告
ZAP 的限制:
- 無法找出商業邏輯漏洞
- 對 JavaScript 重度使用的 SPA 網站支援較弱
- 需要人工判斷誤報
- 無法完全取代人工滲透測試
安裝與環境設定
ZAP 支援多種安裝方式。選擇最適合你環境的方法。
Windows 安裝
- 前往 ZAP 官方下載頁面
- 下載 Windows Installer(.exe 檔案)
- 執行安裝程式,按照提示完成安裝
- 安裝完成後,從開始功能表啟動 ZAP
系統需求:
- Windows 10 或更新版本
- Java 11 或更新版本(安裝程式會自動處理)
- 至少 4GB RAM(建議 8GB)
macOS 安裝
方法一:使用 DMG 安裝檔
- 下載 macOS DMG 檔案
- 開啟 DMG,將 ZAP 拖曳到 Applications 資料夾
- 首次開啟時,按住 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)
使用方式:
- 設定瀏覽器 Proxy 指向 ZAP(預設 localhost:8080)
- 正常瀏覽目標網站
- ZAP 會自動分析所有流量
- 查看「Alerts」標籤頁檢視發現的問題
被動掃描是零風險的。可以用在任何網站上,包括正式環境。
主動掃描(Active Scan)
主動掃描會實際發送攻擊封包來測試網站。這是找出漏洞最有效的方式,但也有風險。
主動掃描能發現:
- SQL Injection
- Cross-Site Scripting(XSS)
- Path Traversal
- Remote File Inclusion
- Command Injection
- 其他 OWASP Top 10 漏洞
使用方式:
- 先用 Spider 或手動瀏覽收集網站結構
- 在 Sites 樹狀圖中,右鍵點擊目標
- 選擇「Attack」→「Active Scan」
- 設定掃描策略,點擊「Start Scan」
警告:主動掃描可能造成系統負載增加、產生大量日誌、甚至影響系統穩定。只對你有權限測試的網站使用。
Spider 爬蟲
Spider 會自動探索網站的所有連結和頁面。這是掃描前的必要步驟。
Spider 的功能:
- 自動發現所有可訪問的 URL
- 找出隱藏的目錄和檔案
- 識別表單和參數
- 建立完整的網站地圖
傳統 Spider vs AJAX Spider:
| 類型 | 適用場景 | 特點 |
|---|---|---|
| 傳統 Spider | 傳統網站、靜態頁面 | 快速、資源消耗低 |
| AJAX Spider | SPA、JavaScript 重度網站 | 模擬瀏覽器、較慢但更完整 |
使用 AJAX Spider:
右鍵點擊目標 URL → Attack → AJAX Spider
對 React、Vue、Angular 等現代前端框架網站,建議兩種 Spider 都執行。
Fuzzer 模糊測試
Fuzzer 是進階功能。它會對特定參數發送大量變形的輸入,測試系統的處理能力。
Fuzzer 使用場景:
- 測試輸入驗證的強度
- 尋找緩衝區溢位
- 測試 API 參數邊界
- 繞過身份驗證
使用方式:
- 在 History 中找到目標請求
- 右鍵選擇「Attack」→「Fuzz」
- 選擇要測試的參數位置
- 選擇 Payload 列表(ZAP 內建多種)
- 開始 Fuzzing
實戰教學
理論講完了。現在動手做。
掃描本地開發環境
這是最安全的練習方式。掃描自己的開發環境。
步驟:
-
啟動你的本地開發伺服器
# 例如 Node.js 專案 npm run dev # 假設運行在 http://localhost:3000 -
啟動 ZAP 並設定 Proxy
- 開啟 ZAP
- 預設 Proxy 在 localhost:8080
-
設定瀏覽器使用 ZAP Proxy
- 推薦使用 Firefox(內建 Proxy 設定)
- 或安裝 FoxyProxy 擴充功能
- 設定 HTTP Proxy 為 127.0.0.1:8080
-
瀏覽目標網站
- 用設定好的瀏覽器訪問 http://localhost:3000
- 點擊所有連結、填寫所有表單
- ZAP 會記錄所有請求
-
執行主動掃描
- 在 Sites 面板找到 localhost:3000
- 右鍵 →「Attack」→「Active Scan」
- 等待掃描完成
-
檢視結果
- 切換到「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:
- 在 ZAP 輸入目標 URL:http://localhost:3000
- 執行 Spider 收集所有頁面
- 執行 Active Scan
- 查看發現的漏洞
Juice Shop 故意設計了超過 100 個漏洞。ZAP 能找出大部分自動化可偵測的問題。
掃描正式網站注意事項
掃描正式環境網站之前,請注意以下幾點:
法律責任:
- 只掃描你有授權的網站
- 取得書面許可是最安全的做法
- 未經授權的掃描可能違法
技術注意事項:
- 避開營業尖峰時段
- 調低掃描強度(Scan Policy)
- 監控目標系統負載
- 準備好隨時停止掃描
最佳實務:
- 先在測試環境驗證
- 通知相關 IT 人員
- 保留掃描紀錄
- 排除敏感功能(如支付、刪除)
報告輸出與解讀
掃描完成後,產生報告是重要的一步。
報告格式選擇
ZAP 支援多種報告格式:
| 格式 | 適用場景 | 特點 |
|---|---|---|
| HTML | 給人看的報告 | 美觀、易讀、可用瀏覽器開啟 |
| XML | 系統整合 | 結構化資料、適合程式處理 |
| JSON | API 整合 | 現代格式、易於解析 |
| Markdown | 文件整合 | 可嵌入其他文件 |
產生報告:
- 選單:「Report」→「Generate Report」
- 選擇報告格式
- 選擇要包含的內容(警告等級、詳細程度)
- 指定輸出路徑
- 點擊「Generate」
報告內容解讀
一份 ZAP 報告通常包含以下區塊:
1. 摘要區(Summary)
- 掃描目標 URL
- 掃描時間
- 發現的警告數量(依等級分類)
2. 警告詳情(Alert Details)
每個警告包含:
- 名稱:漏洞類型(如 SQL Injection)
- 風險等級:High / Medium / Low / Informational
- 信心度:High / Medium / Low
- 描述:漏洞說明
- URL:發現問題的位置
- 參數:受影響的參數
- 攻擊:ZAP 使用的測試 Payload
- 證據:系統回應中的異常內容
- 解決方案:修復建議
- 參考資料:相關 CWE、OWASP 連結
3. 按風險等級優先處理
建議的處理順序:
- High:立即修復,可能被立即利用
- Medium:盡快修復,有一定風險
- Low:評估後決定是否修復
- Informational:了解即可,通常是建議事項
誤報判斷技巧
ZAP 不完美。它會產生誤報(False Positive)。
常見誤報情況:
- CSRF Token 誤判:ZAP 可能誤認 Token 保護不足
- SQL Injection 誤報:回應中剛好有類似錯誤訊息
- XSS 誤報:輸出有特殊字元但已正確編碼
判斷方法:
- 手動驗證:嘗試重現 ZAP 的攻擊
- 檢查證據:看「Evidence」欄位是否合理
- 比對原始碼:確認該位置的處理邏輯
- 調整信心度門檻:Low Confidence 的警告優先複查
記錄誤報: 在 ZAP 中可以將確認的誤報標記為「False Positive」,避免重複報告。
看不懂掃描報告?讓專家幫你解讀並提供修復建議
CI/CD 整合
將安全掃描整合進 CI/CD Pipeline,是 DevSecOps 的核心實踐。
ZAP CLI 工具
ZAP 提供三種自動化掃描腳本:
| 腳本 | 用途 | 掃描強度 |
|---|---|---|
| zap-baseline.py | 快速基線掃描 | 被動掃描為主 |
| zap-full-scan.py | 完整掃描 | 被動 + 主動掃描 |
| zap-api-scan.py | API 掃描 | 針對 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:
- 安裝「Official OWASP ZAP」Plugin
- 在 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 內建上百條掃描規則。你可以根據需求調整。
調整掃描策略:
- 「Analyze」→「Scan Policy Manager」
- 選擇或新增一個 Policy
- 對每條規則設定:
- Threshold:觸發警告的門檻(Off / Low / Medium / High)
- Strength:測試強度(影響掃描速度)
常見調整建議:
- 對 API 專案,關閉 XSS 相關規則
- 對內部系統,可提高掃描強度
- 對正式環境,降低 DOS 相關測試
認證掃描設定
很多網站需要登入才能看到完整功能。ZAP 支援多種認證方式。
Form-Based 認證:
- 「右鍵目標 URL」→「Include in Context」→「New Context」
- 在 Context 中選擇「Authentication」
- 選擇「Form-Based Authentication」
- 設定登入 URL 和表單參數
- 設定登出指標(Logged-out indicator)
Session Management:
- Cookie-based Session
- HTTP Authentication
- JSON Web Token(JWT)
設定登入使用者:
- 在 Context 的「Users」區塊
- 新增使用者和對應憑證
- 選擇「Forced User Mode」強制使用特定身份
API 掃描
針對 API 的掃描需要不同的方法。
匯入 API 定義:
ZAP 支援匯入:
- OpenAPI / Swagger(JSON/YAML)
- SOAP WSDL
- GraphQL Schema
匯入方式:
- 「Import」→「Import an OpenAPI definition」
- 選擇本地檔案或輸入 URL
- 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 安全 學習行動裝置測試技巧。
重點回顧:
- 安裝簡單:支援多平台,Docker 部署最方便
- 四大功能:被動掃描、主動掃描、Spider、Fuzzer
- 報告專業:多格式輸出,方便不同用途
- CI/CD 友善:原生支援自動化整合
學會 ZAP,你就能:
- 在開發階段就找出安全問題
- 建立自動化安全掃描流程
- 產生專業的安全評估報告
下一步建議:
- 用 Juice Shop 練習實戰技巧
- 嘗試將 ZAP 整合進你的 CI/CD
- 學習解讀報告、判斷誤報
自己掃描不放心?預約專業弱點掃描服務
相關文章
OWASP 是什麼?2025 完整指南:Top 10、ZAP 工具、安全標準一次搞懂
深入了解 OWASP 網站安全標準,涵蓋 Top 10 漏洞清單、ZAP 弱點掃描工具、API/LLM/Mobile 安全指南。免費資源與企業導入實務。
OWASPOWASP API Security Top 10 完整指南:2023 版 API 安全漏洞與防護【2026 更新】
深入解析 OWASP API Top 10 安全漏洞,包含 BOLA、認證失效等十大 API 風險,以及防護措施與測試方法。含 2024-2025 年最新攻擊案例。
OWASPOWASP Mobile & IoT Top 10 完整指南:2024 行動與物聯網安全漏洞解析【2026 更新】
深入了解 OWASP Mobile Top 10(2024 最新版)與 IoT Top 10,涵蓋行動 App 與物聯網設備的安全漏洞、MASVS 標準、測試方法與防護指南。