DAST 動態分析
Vibe Prompt
「幫我在 CI/CD 中加入 OWASP ZAP 掃描:自動測試 Staging 環境,發現漏洞後中斷 Pipeline。」
ZAP 掃描
- name: OWASP ZAP Scan
uses: zaproxy/action-full-scan@v0.10.0
with:
target: 'https://staging.myapp.com'
cmd_options: '-a -j'
rules_file_name: '.zap/rules.tsv'
allow_issue_writing: true
fail_action: true # 發現高風險漏洞就中斷
在 Staging 自動掃描
name: DAST Pipeline
on:
deployment_status: # 當 Staging 部署完成後
jobs:
dast:
if: github.event.deployment_status.environment == 'staging'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: ZAP Scan
uses: zaproxy/action-full-scan@v0.10.0
with:
target: ${{ github.event.deployment_status.environment_url }}
fail_action: true
- name: Upload Report
uses: actions/upload-artifact@v4
if: failure()
with:
name: zap-report
path: report.json
常用工具
| 工具 | 說明 | |------|------| | OWASP ZAP | 開源 DAST | | Burp Suite | 商業 DAST(專業版) | | Nikto | Web 伺服器掃描 | | Nuclei | 基於模板的快速掃描 | | SQLMap | SQL Injection 自動化 |
關鍵要點
DAST vs SAST 比較
| 比較 | SAST (靜態) | DAST (動態) | |------|:-----------:|:-----------:| | 測試時機 | 編譯時期 | 執行時期 | | 需要執行應用? | ❌ 不需要 | ✅ 需要 | | 找到的漏洞類型 | 程式碼層級(SQL Injection, XSS) | 執行層級(配置錯誤, 認證問題) | | 誤報率 | 較高 | 較低 | | 整合時機 | 越早越好 | 部署前 |
OWASP ZAP 自動化掃描
- name: ZAP Scan
uses: zaproxy/action-full-scan@v0.10.0
with:
target: "https://staging.example.com"
rules_file_name: "zap-rules.tsv"
cmd_options: "-a -j -J zap-report.json"
ZAP 的掃描模式
| 模式 | 用途 | 速度 | |:----:|------|:----:| | Spider | 爬取網站所有頁面 | 快 | | Active Scan | 主動發送攻擊 Payload | 慢(需要授權) | | Passive Scan | 被動分析請求/回應 | 快(無風險) | | Ajax Spider | 爬取 JavaScript 動態產生的頁面 | 中 |
OWASP ZAP:免費且強大的 DAST 工具
OWASP ZAP(Zed Attack Proxy)是全世界最受歡迎的免費 DAST 工具。它像一個安全版的 Burp Suite——可以自動掃描你的 Web 應用,也可以手動操作。
ZAP 的兩種使用模式
| 模式 | 用法 | 適合場景 | |:----|:----|:--------| | 自動掃描(Spider + Active Scan) | 輸入 URL,ZAP 自動爬網站並測試漏洞 | CI/CD 整合、快速檢查 | | 手動代理(Manual Proxy) | 設定瀏覽器代理到 ZAP,手動操作並攔截修改 | 深度測試、滲透測試 |
ZAP 自動掃描的 CI/CD 整合
# 使用 ZAP Docker Image 進行掃描
docker run -v $(pwd):/zap/wrk:rw \
-t ghcr.io/zaproxy/zaproxy:stable \
zap-full-scan.py \
-t https://staging.example.com \
-r zap_report.html
這個指令會啟動 ZAP,自動爬取目標網站的所有頁面,執行 Active Scan 測試數百種漏洞,最後產生一份 HTML 報告。
ZAP 可以找到什麼?
- SQL Injection、XSS、CSRF
- 不安全的 HTTP Header(Missing X-Frame-Options)
- 敏感資訊洩漏(目錄列表、除錯訊息)
- Session 管理問題(Session 固定、Cookie 沒有 Secure Flag)
下一章預告:DAST in CI/CD
手動掃描一次很簡單,但要確保每次部署前都自動掃描才是 DevSecOps 的精髓。下一章教你將 ZAP 整合進 GitHub Actions Pipeline。