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。

解鎖完整教學內容

本章為付費內容。加入專案即可解鎖超過 5000 字的深度解析,包含 10 個以上神級 Prompt 與真實 Source Code 範例!