測試開發之安全篇-使用禪道ZTF執行OWASP安全掃描

陳琦發表於2023-05-14

開放Web應用程式安全專案(OWASP,Open Web Application Security Project)是一個開源、非盈利、全球性的安全組織,致力於應用軟體的安全性方面的研究。OWASP安全標準被視為Web應用安全領域的權威參考。美國國家和國際立法、標準、準則、委員會和行業實務守則參考引用了OWASP,美國聯邦貿易委員會(FTC)強烈建議所有企業需遵循OWASP十大WEB弱點防護守則,國際信用卡資料安全技術PCI標準更是將其列為必要元件。

OWAPS TOP 10是該組織定期釋出的10項最嚴重Web應用安全風險列表,該列表總結並更新Web應用程式中最可能、最常見、最危險的十大漏洞。它是安全滲透測試工作的一個參考,成為IBM APPSCAN、HP WEBINSPECT等漏洞掃描器的主要標準。

ZAP(Zed Attack Proxy)是OWASP旗下的一款開源Web應用安全漏洞掃描工具。它透過代理的方式,攔截同被測系統間的請求和響應,進行模擬攻擊和分析來尋找安全性漏洞。本文給大家分享,如何使用ZTF呼叫ZAP執行安全掃描,並將結果提交到禪道專案管理系統。

首先,我來簡單瞭解下ZAP客戶端工具的使用方法。

  • 官網下載所需作業系統的、以Installer結尾的安裝檔案;
  • 完成ZAP客戶端軟體的安裝;
  • 第一次開啟ZAP應用,在彈出視窗中選擇第3項“No, I do not want to persist this session at this moment in time.”,意為之後需要時再手動儲存會話;
    image.png
  • 開啟的客戶端中,介面中包含如下的6個功能區域;

    1. 選單欄
    2. 工具欄
    3. 站點、指令碼樹狀結構
    4. 工作區
    5. 資訊視窗
    6. 狀態列

    image.png

  • 在Quick Start的標籤頁,點選Automated Scan按鈕;
    image.png
  • 在文字框URL to attack中填入需要掃描的網站地址;
  • 安裝所選擇的瀏覽器(此處為Firefox),其他和上圖保持一致;
  • 點選Attack按鈕,開始掃描;
  • 掃描結束後進入以下報告頁面。
    image.png

在前面的Quick Start的標籤頁中:

  • 您可以透過點選Manual Explore按鈕,給掃描工作一個基於URL的站點地圖指引,以提高掃描效率;
  • 點選Lean More可獲得更多的幫助資訊,如站點登入認證等方面的高階功能。

有了對ZAP基本功能的瞭解,接下來我們分享,如何在禪道ZTF中整合ZAP,開展安全漏洞的掃描工作。

  1. 參照以上步驟,建立一個ZAP安全掃描的Session會話,並儲存;
  2. 完成需要的配置,如站點地圖指引、登入認證、掃描規則等設定;
  3. 官網下載ZAP名為Cross Platform Package的跨平臺JAR包;
  4. 使用以下命令啟動ZAP服務,其中引數-daemon可控制在非windows系統下 不顯示客戶端介面;

    java -jar zap-2.12.0.jar -config api.key=my_api_key -daemon -session /Users/aaron/rd/project/testing/zap_deeptest.session
  5. 執行下列ZTF命令,使用上面建立的Session,啟動安全掃描任務。

     zap -p 1 -t task-zap --verbose -options server=http://localhost:8080,apiKey=api_key,site=https://httpbin.org/

    其中引數:
    -p: 禪道產品編號
    -t: 禪道測試單編號
    -options: 以逗號分隔字串的方式,指定了ZAP的掃描引數

    • server:ZAP伺服器的訪問地址
    • apiKey:ZAP服務訪問憑證,同啟動服務時引數一致
    • site:所要掃描的站點URL,報告也會基於此URL過濾

ZTF會等待安全掃描的結束,獲取掃描結果,並提交到禪道。

最後,給大家列一下本文相關的ZAP啟動命令和API介面,具體Go語言的封裝可以參考這裡

# 啟動ZAP服務
java -jar zap-2.12.0.jar -config api.key=my_api_key -daemon -session /Users/aaron/rd/project/testing/zap_deeptest.session

# 執行掃描任務,該命令會返回一個唯一的識別號ScanId。
http://localhost:8080/JSON/core/view/alerts/?apikey=my_api_key&baseurl=https://httpbin.org/&start=0&count=10000

# 獲取掃描任務進度
http://localhost:8080/JSON/spider/view/status/?apikey=my_api_key&scanId=1

# 獲取掃描結果
http://localhost:8080/JSON/core/view/alerts/?apikey=my_api_key&baseurl=https://deeptest.org/&start=0&count=10000

# 停止指定掃描任務,ScanId來源於開始命令的返回。
http://localhost:8080/JSON/ascan/action/stop/?apikey=my_api_key&scanId=10

# 停止伺服器上的所有掃描任務
http://localhost:8080/JSON/ascan/action/stopAllScans/?apikey=my_api_key

專題目錄

相關文章