應用 OWASP ZAP 進行自動化網站弱掃

OWASP 簡介

OWASP 是一個開放社群、非營利性組織,全球目前有超過250個分會,其主要任務目標是不再有不安全的軟體。長期支持與協助提供改善應用程式的安全性解決方案,諸如網路軟體安全指南、工具與技術文件 OWASP Top Ten, OWASP Web Security Testing Guide, OWASP ZAP ...等等具有影響力的項目,並通過世界各地的活動和分會會議發展和培育社區。 美國聯邦貿易委員會(FTC)更強烈建議所有企業務必遵循OWASP所發佈的十大網路弱點防護守則 ( 參考 OWASP Response to FTC Staff Report Protecting Consumer Privacy in an Era of Rapid Change ),美國防資訊系統局(DISA-STIG)亦將此守則列為最佳實務,而國際信用支付卡資料安全技術標準 PCI DSS 更將其列為必要元件。

OWASP贊助的ZAP簡介

OWASP Zed Attack Proxy (簡稱 ZAP) 於2010年9月從 Open Web Application Security Project (OWASP) 開發,目前為全世界最受歡迎的網頁程式漏洞檢測工具。

ZAP scan report

實作網站弱掃

這裡想針對自己的網站以及網站程式掃描漏洞,自動產出檢測報告,參考線上手冊 ZAP docker Documentation - Baseline Scan

執行下列指令掃瞄測試網站 https://www.test-example.org 產出報告

docker run -t --rm -v $(pwd):/zap/wrk/:rw owasp/zap2docker-stable zap-baseline.py -t https://www.test-example.org -r zap-basline-scan_example.html

結果失敗~ 因為在 ZAP's docker container 裡面連不到沒有正式DNS的開發網站,那麼要怎麼測試才能連結掃瞄網站呢?於是透過docker加入hosts設定的方法( --add-host=domain:ip)來達成,而 ip 取自 zap 和受測網站的 bridge gateway,二者在同一個網段就能連到了...

bridgeIp=$(docker network inspect bridge | grep Gateway | awk '{ print $2 }' | cut -d '"' -f 2)
domain='www.test-example.org'
docker run --add-host=$domain:$bridgeIp -t --rm -v $(pwd):/zap/wrk/:rw owasp/zap2docker-stable zap-baseline.py -t https://$domain/scan.html -r zap-basline-scan_$domain.html

上述命令中的掃瞄目標 scan.html 埋了幾個想受測的網址連結HTML語法,讓 ZAP 進來爬。掃完後得到了一份報告,裡面有攻擊種類及相關漏洞的資訊例如攻擊方法、漏洞說明和解決方案。如此已滿足一些初階的安全測試需求。

--- 2023-01-30 更新 ---

從 zap 2.12 開始,可以使用帶有Automation Framework選項 -autorun 來執行標準ZAP命令行。

新的自動化框架將及時取代命令行和打包掃描選項,它允許您通過一個 YAML 文件控制 ZAP,並提供更大的靈活性,同時不受任何特定容器技術的束縛。

參考官網文件後弄了一個樣本 baseline.sample.yaml 以便套用到自動化掃瞄,主要命令可以這樣執行:

DOMAIN='www.test-example.org'
DOCKER_NETWORK="bridge"
GATEWAY_IP=$(docker network inspect $DOCKER_NETWORK | grep Gateway | awk '{ print $2 }' | tr -d '"')

docker run --name zap-scan --rm --add-host=$DOMAIN:$GATEWAY_IP --network=$DOCKER_NETWORK -t -v $(pwd):/zap/wrk/:rw --user root owasp/zap2docker-stable zap.sh -cmd -autorun /zap/wrk/baseline.sample.yaml

--- ---

最後要說的是看到掃瞄結果報告的問題通常是疑似的問題,到底是不是真的有問題,還是得人工審閱確認,深入專業解讀與驗證,花這麼多時間的過程,其目的在於幫助開發人員改善不良的安全漏洞習慣,以及發現網站系統配置設定的問題以達成各項合規性。

文章分類: