透過 Docker 快速自架 OWASP ZAP

OWASP ZAP 要錢?

不要錢,OWASP ZAP 完全免費且開源。

它是開放網路應用程式安全計劃(OWASP)旗下的旗艦專案,不論是個人、企業內部測試還是商業用途,都可以自由下載並免費使用完整功能,沒有任何隱藏付費牆。


自架弱點掃描工具主要分為「主機/網路層」與「網站/應用程式層」兩種需求。推薦以下幾款業界最主流、成熟的免費與開源自架方案: [1]

1. 主機與網路層弱點掃描

  • OpenVAS:企業級開源弱點評估工具,是目前功能最強大的免費主機掃描器之一,具備完整的漏洞資料庫與排程掃描功能。
  • Nmap:網路探測與安全性稽核的基石,主要用於主機存活性與連接埠掃描,可搭配 NSE(Nmap Scripting Engine)執行基礎弱點檢測。 [1, 2]

2. 網站應用程式弱點掃描 (Web)

  • OWASP ZAP:由國際權威組織維護的最佳免費網頁應用程式弱點掃描器。非常適合整合在開發流程(CI/CD)中,能自動檢測常見的 SQL Injection、XSS 等漏洞。
  • Nikto:輕量級的命令列開源網頁伺服器掃描器,能快速找出伺服器危險檔案與過時版本。 [1, 2, 3, 4]

3. 開發原始碼掃描 (DevSecOps)

  • SonarQube:針對原始碼進行靜態分析(SAST)的熱門工具,社群版(Community Build)免費且容易上手,適合在自架伺服器上檢測代碼安全缺陷。
  • OWASP Dependency-Check:專注於軟體供應鏈安全,能自動掃描專案中套件(如 Maven, npm)的已知漏洞。 [2, 5]

💡 建議策略:
若要檢測作業系統與網路設備,優先部署 OpenVAS;若是針對網頁應用程式安全,則推薦安裝 OWASP ZAP

[1] https://www.ckmates.com

[2] https://www.cloudsecurity.com.tw

[3] https://ithelp.ithome.com.tw

[4] https://zh.wikipedia.org

[5] https://www.linktech.com.tw


要透過 Docker 快速自架 OWASP ZAP,最推薦的方式是直接使用官方維護的映像檔(Image)。依照您的使用情境,您可以選擇以下其中一行指令來執行:

方案 A:啟動「瀏覽器介面版」(Web Swing UI) — 推薦!

這會在背景啟動 ZAP,並開啟一個網頁版的圖形介面,您只需用瀏覽器連過去就能直接操作,不需要安裝任何本機軟體。

docker run -u zap -p 8080:8080 -p 8090:8090 -d ghcr.io/zaproxy/zaproxy:stable zap-webswing.sh
  • 如何使用:開啟瀏覽器輸入 http://localhost:8080/zap/ 即可看到操作畫面。
  • 連接埠說明8080 是 Web 介面連線埠;8090 是 ZAP 預設的代理伺服器(Proxy)連線埠。

方案 B:直接對目標網站執行「自動化基準掃描」(Baseline Scan)

如果您不需要看畫面,只想直接對特定網站進行快速的安全性點檢(約數分鐘內完成)並在終端機看結果:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t https://example.com
  • 注意事項:請將 https://example.com 替換為您自己擁有權限的測試網站網址。

方案 C:直接對目標網站執行「深度全功能掃描」(Full Scan)

這會執行更深度的網頁爬蟲與主動攻擊測試(包含 XSS、SQLi 等),耗時較長:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full.py -t https://example.com

接下來,您可以決定如何處理掃描後的資料。如果您有興趣,我們可以討論:

  • 如何將掃描後的 HTML/PDF 漏洞報告 自動匯出到您的本機資料夾
  • 如何設定 ZAP 的 API Key 以確保 Docker 容器的安全防護
  • 如何將這行指令整合進您現有的 CI/CD 自動化流程

請告訴我您想朝哪個應用方向深入操作?


非常抱歉,前一則回覆給錯了腳本名稱。在 OWASP ZAP 的官方 Docker 映像檔中,深度全功能掃描的正確腳本名稱是 zap-full-scan.py(中間多了一個 -scan),而且它已經被設定在環境變數中,不需加上 /zap/ 前綴。 [1, 2, 3, 4]

請直接複製以下經過修正的正確指令至您的 C:\Users\your-account> 終端機執行:

docker run -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py -t https://your-app-domain.com

💡 進階實用建議:將報告儲存至本機

由於您的目標網址是一個 dashboard(儀表板頁面),執行 zap-full-scan.py 會耗費較長時間(進行深度爬蟲與主動漏洞攻擊)。 [1]

若您希望在掃描完成後,直接在您的 Windows 本機資料夾看到 HTML 報告,建議使用 -v 參數掛載路徑,並加上 -r 指定檔名: [2, 5]

docker run -v %cd%:/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py -r report.html -t https://your-app-domain.com

執行完成後,您就可以直接在 C:\Users\your-account> 資料夾下找到 report.html 報告檔案。 [5, 6]


當您成功啟動掃描後,接下來您可能會遇到與目標網站特性的相關調整。我們可以繼續討論:

  • 如果該 Dashboard 需要 帳號密碼登入 才能看到內容,該如何代入 Cookie 或帳密進行掃描
  • 如何設定 -m 參數來 限制掃描時間,避免因為網站太大而掃描過久
  • 如何看懂終端機輸出顯示的 漏洞風險等級 (High/Medium/Low) [7, 8, 9, 10]

請試試看修正後的指令,並告訴我您是否需要設定 登入權限掃描 呢?

[1] https://www.zaproxy.org

[2] https://forums.docker.com

[3] https://github.com

[4] https://github.com

[5] https://www.zaproxy.org

[6] https://stackoverflow.com

[7] https://www.zaproxy.org

[8] https://groups.google.com

[9] https://www.youtube.com

[10] https://www.zaproxy.org

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *