網頁安全性測試:OWASP ZAP使用入門
前言
在軟體工程師的職涯中,資訊安全防護的重要性一直是必不可少的,這次介紹一個網頁滲透測試工具(OWASP ZAP),讓網頁開發員可以自行測試自己開發的網頁是否安全,從而找出漏洞的原因。
在主角出場前,先簡短的介紹一下Proxy是什麼:
.Proxy-代理伺服器
泛指可以對經過私有網路與網際網路的封包,進行快取與控制等功能的伺服器。
用白話一點的方式解釋,Proxy就像一個中介人,位於Client和Server之間,因此若Client想要跟Server連線時,所有的封包都會由Client出發,先到Proxy,最後才抵達Server,反之亦然,如下圖:
而這次的目的就是要利用OWASP官方提供的工具ZAP來模擬出Proxy,藉由記錄網路封包以及更改請求(Request)參數來進行測試。
OWASP
開放網路軟體安全計畫,簡稱OWASP (Open Web Application Security Project)是一個開放社群、非營利性組織,其主要目標是研議協助解決網路軟體安全之標準、工具與技術文件,長期致力於協助政府或企業瞭解並改善應用程式的安全性。
美國聯邦貿易委員會(FTC)更強烈建議所有企業務必遵循OWASP所發佈的十大網路弱點防護守則,美國國防部亦將此守則列為最佳實務,就連國際信用卡資料安全技術PCI標準更將其列為必要元件。
ZAP
OWASP Zed Attack Proxy(簡稱 ZAP) 於2010年9月從Open Web Application Security Project (OWASP) 開發,ZAP 是一個測試網頁程式漏洞工具,並設有簡單易用的介面。
在安全性測試領域,安全性測試主要可以由以下幾種測試策略來覆蓋:
.漏洞分析 - 對系統進行掃描來發現其安全性隱患。
.滲透測試 - 對系統進行模擬攻擊和分析來確定其安全性漏洞。
.運行時測試 - 終端用戶對系統進行分析和安全性測試(手工安全性測試分析)。
.代碼審計 - 通過代碼審計分析評估安全性風險(靜態測試,評審)。
而ZAP主要是用於應用上述的第二種測試,即滲透性測試。
執行OWASP ZAP(官方下載)
依照各自作業系統下載安裝檔,並執行安裝。
安裝完成後剛打開會出現以下對話框,詢問是否要保持ZAP session。
*保存進程則可以讓你的操作得到保留,下次只要打開歷史進程就可以取到之前掃描過的站點以及測試結果等。
接下來調整一下默認的端口(8080時常被佔用,故調整為8180)
工具>選項>Local Proxies>端口(8180)
設定Chrome
這邊利用瀏覽器(Chrome)來做測試,首先要進行本地端相關Proxy設定,讓在瀏覽器操作時的流量可以先流經ZAP再出去。
搜尋Proxy設定
或者由Chrome設定搜尋開啟Proxy設定
開啟Proxy伺服器,並設定連接埠為8180
設定完成後,ZAP就會開始收取所有流經瀏覽器的流量了。
OWASP ZAP 取得憑證
到這一步驟,如果去訪問https時,會出現HSTS的警告訊息:
為什麼會出現警告訊息呢?因為瀏覽器用的那個憑證已經不是原本連接的那個host的憑證,而變成了OWASP Zed Attack Proxy Root CA,而這個憑證並沒有被電腦信任,所以接下來我們要做的就是去ZAP取得憑證並把憑證裝進去電腦的信任區。
ZAP取得憑證(工具>選項>Dynamic SSL Certificates)
1. 先點選生成產生憑證。
2. 點選保存儲存憑證。
OWASP ZAP 憑證匯入
這邊範例使用Chrome瀏覽器匯入ZAP憑證。
設定>隱私權和安全性>安全性
進階>管理憑證
點選匯入按鈕
憑證匯入精靈>下一步
選擇剛剛取得的ZAP憑證
將憑證放入受信任的根憑證授權單位>下一步
確認資訊無誤後>點選完成
安全性警告>選擇是
到這邊憑證安裝完成,試著開啟google頁面,這時不再出現警示訊息並且ZAP也接收到請求封包的詳細資料了。
OWASP ZAP滲透測試
ZAP提供自動掃瞄功能,用戶只需要輸入要測試的地址(URL),ZAP Spider便會將整個網站內的分頁進行掃瞄,如掃瞄出有問題的分頁,ZAP會顯示出不同階級的警告。
在快速攻擊過程中,ZAP做了以下幾件事:
.使用爬蟲抓取被測站點的所有頁面。
.在頁面抓取的過程中被動掃描所有獲得的頁面。
.抓取完畢後用主動掃描的方式分析頁面,功能和參數。
點選快速開始>輸入URL>點選攻擊>Spider開始掃描
快速測試中,ZAP會產出以下一些產物:
.被測站點地圖及頁面資源。
.所有請求、反饋記錄。
.安全性風險項目列表。
掃瞄完畢後,檢測到這網頁可能有潛在的漏洞(安全性風險項),不同階級的警告會顯示出來:
.為高度威脅警告。
.為中度威脅警告。
.為低度威脅警告。
.為訊息威脅警告。
檢視掃描結果>警報
除了顯示攻擊種類之外,其他有關這個漏洞的資訊也會顯示,如攻擊方法、漏洞描述以及解決方案。
以上的技巧,可以滿足一些初級的安全測試需求,而掃瞄出的問題通常是「疑似」問題,至於是不是真的有問題,還是得人工去確認。
除了簡單的滲透測試,也可以利用ZAP攔截Client發出的Request,對於封被內容進行修改後再送出,自行對想要檢驗的安全性做測試。
參考資料
https://firsemisphere.blogspot.com/2019/10/owasp-zap.html