2022年4月28日 星期四

OWASP ZAP 網站安全性測試工具介紹

OWASP ZAP 網站安全性測試工具介紹

What is OWASP

開放網路軟體安全計畫,簡稱OWASP (Open Web Application Security Project)是一個開放社群、非營利性組織,其主要目標是研議協助解決網路軟體安全之標準、工具與技術文件,長期致力於協助政府或企業瞭解並改善應用程式的安全性。 目前OWASP全球擁有220個分部近六萬名會員,共同推動了安全標準、安全測試工具、安全指導手冊等應用安全技術的發展。

美國聯邦貿易委員會(FTC)更強烈建議所有企業務必遵循OWASP所發佈的十大網路弱點防護守則,美國國防部亦將此守則列為最佳實務,就連國際信用卡資料安全技術PCI標準更將其列為必要元件。

OWASP 頒布並且定期維護更新的web安全漏洞TOP 10,也成為了web安全性領域的權威指導標準,同時也是IBM APPSCAN、HP WEBINSPECT等掃描器漏洞參考的主要標準。


What is ZAP

OWASP ZAP,全稱:OWASP Zed Attack Proxy是全世界最受歡迎的免費網站安全性測試工具之一。 於2010年9月從Open Web Application Security Project (OWASP) 開發。


ZAP的工作原理

在安全性測試領域,安全性測試主要可以由以下幾種測試策略來覆蓋:
漏洞分析  -  對系統進行掃描來發現其安全性隱患
滲透測試  -  對系統進行模擬攻擊和分析來確定其安全性漏洞
運行時測試 -  終端用戶對系統進行分析和安全性測試(手工安全性測試分析)
代碼審計  -  通過代碼審計分析評估安全性風險(靜態測試,評審)

ZAP主要是用於應用上述的第二種測試,即滲透性測試。

ZAP以架設代理(proxy)的形式來實現滲透性測試,類似於fiddler抓包機制。他將自己置於用戶瀏覽器和服務器中間,充當一個中間人的角色,瀏覽器所有與服務器的交互都要經過ZAP,這樣ZAP就可以獲得所有這些交互的信息,並且可以對他們進行分析、掃描,甚至是改包再發送。


ZAP有以下重要功能
  • 本地代理
  • 主動掃描
  • 被動掃描
  • 模糊測試
  • 暴力破解


安裝與設定OWSAP ZAP

依照自己的作業系統來下載安裝檔並執行安裝。
Windows和Linux版本需要執行Java 8或更高版本JDK,MacOS安裝程式包括Java 8;

安裝完成後剛打開會出現以下對話框,詢問是否要保持ZAP session。

*保存進程(Session)則可以讓你的操作得到保留,下次只要打開歷史進程就可以取到之前掃描過的站點以及測試結果等。



調整預設的Port(預設為8080常會被其他的程式占用,所以就先調整一下為8880。)
進入工具 / 選項 /  本地代理(local proxies)






設定瀏覽器Proxy

FireFox
設定 / 網路設定 / 手動設定Proxy
將【埠號】設定成跟ZAP設定的一樣就可以了。


更新套件

點選下圖圖示查看是否需要安裝或是更新套件。



ZAP Marketplace(市場)
Marketplace為套件市場,是選擇性安裝的套件。主要分為一下3類的套件:


release:為經過長期驗證比較成熟的
beta:為正在測試測試中的件,可能會出現問題
alpha:比beta更加低的測試版
建議release和beta版的可選擇性安裝!


取得憑證

ZAP取得憑證(工具>選項>Dynamic SSL Certificates)
1.先點選【生成】產生憑證。
2. 點選【保存】儲存憑證。

匯入憑證

firefox
設定 > 隱私權與安全性 > 憑證 > 檢視憑證 > 憑證機構 
1.按下【匯入】選擇剛剛儲存的認證檔(owasp_zap_ca.cer)。
2.勾選識別憑證機構的用途(全部勾選)後按下確定。
3.到瀏覽器去某個https網站沒有出現警告就表示匯入憑證成功。瀏覽器的兩旁會出現如圖所示的工具列就表示ZAP已在執行中了。



匯入憑證OWASP ZAP 掃描模式

安全模式 :已比較安全的方式去掃描網站,不會對網站做任何破壞性的操作。
保護模式(Protected Mode):只對指定的網站做一些危險性的掃瞄。
標準模式:會有一些危險的掃描動作,有可能對目標站點做一些破壞,但破壞不會很大。
攻擊模式:能掃描多少掃多少,能有多猛就多猛。

OWASP ZAP滲透測試(自動掃描)

ZAP提供自動掃瞄功能,用戶只需要輸入要測試的地址(URL),ZAP Spider便會將整個網站內的分頁進行掃瞄,如掃瞄出有問題的分頁,ZAP會顯示出不同階級的警告。
在快速攻擊過程中,ZAP做了以下幾件事:
.使用爬蟲抓取被測站點的所有頁面。
.在頁面抓取的過程中被動掃描所有獲得的頁面。
.抓取完畢後用主動掃描的方式分析頁面,功能和參數。
點選【Automated Scan】> 輸入預備攻擊的網址(URL to Attacl) > 點選【攻擊】> 爬蟲就會開始掃描



掃瞄完畢後,檢測到這網頁可能有潛在的漏洞(安全性風險項),不同階級的警告會顯示出來:




人工瀏覽

         使用『Manual Explore』開啟瀏覽器去,去執行網站的每一個頁面像是用人工去爬行頁面一樣。執行過的頁面都會被ZAP記錄下來。

之後也是可以選擇某個網址來做主動掃描(Active Scan)並加上個策略。




模糊測試(Fuzz)

Fuzz測試也叫做模糊測試,是一種挖掘程式安全漏洞檢測程式健壯性的黑盒測試,它通過向程式輸入非法的字段,然後觀測被測試程式是否異常而實現。也有人稱這個為暴力破解。

ZAP Fuzz功能選項入口

從站點選擇某個需要登入的站台按滑鼠右鍵出現選單展開『攻擊』選單點選Fuzz...選項

利用內建字典來做暴力破解

找到要替換的參數,選擇內建的字典。




利用內建字典來做SQL Injection

與上面做法差不多。選擇好參數後打開選單後選擇File Fuzzers 打開jbrofuzz 選擇SQL Injection。




通過 REST API 以程式設計方式與 ZAP 進行互動

隨著Web服務和微服務的增加,安全性從未如此重要。 ZAP 有一個定義和 文件 都非常好的 API,它可以通過各種工具,平臺或自定義指令碼以程式設計方式輕易的訪問。ZAP API 可以直接通過瀏覽器或使用諸如Java,Python,Node JS,.NET,PHP和Go等程式語言使用。ZAP UI 可通過 http://zap 從瀏覽器中訪問或通過 http://localhost:port  從代理中訪問。ZAP官網有提供一些資訊或是套件可以參考網址:


設定Postman通過ZAP掃描REST API

ZAP已經有設定好代理服務器(Proxy),這樣Postman就可以設定通過ZAP代理服務器發出Request請求。
postman打開上方菜單『選項』或是從Preferrence打開『選項』。選擇Proxy頁籤來設定。
1.勾選Add a custom proxy configuration
2.設定Proxy Server的位置跟埠號(要跟ZAP設定的一樣)




3.然後可以去執行Postman之前設定過的API
4.這樣ZAP就會去捕捉到postman執行的紀錄,就可以判斷此API的是否安全。

用了ZAP就安全了嗎?

雖然ZAP的自動掃描功能非常強大,但對於OWASP Top 10(https://owasp.org/Top10/zh_TW/)中的某些項或者Top 10以外的一些安全漏洞,想要通過ZAP掃描檢測出來是非常困難的,比如Top 10中的A5 「Security Misconfiguration」 就很難通過掃描檢測出來,所以ZAP所能掃描到的安全漏洞只是OWASP Top 10的一個子集。

如果我們在軟體已經編碼完成之後再引入安全檢查和測試,那麼軟體的安全質量已經確定,後期的修復只能解決已經發現的安全漏洞,不能讓軟體更加安全,而且對於這些安全缺陷,發現得越晚,修復的成本就會越高。

微軟提出的SDL(Security Development Lifecycle)提出了很多軟體開發過程中非常好的的安全活動,其核心理念就是將軟體安全的考慮集成在軟體開發的每一個階段,從需求,設計,編碼,測試,到最後的發布整個過程中。



可靠的安全測試只能避免安全漏洞造成更大的危害和影響,並不能打造安全的產品,真正的安全產品必定需要整個軟體開發過程中每個環節的保障,需要從業務分析階段就將安全作為重要的考慮因素,將安全實踐融入到整個軟體開發過程中,所有角色共同參與,這樣才能做到真正的內建安全。

參考:
https://www.tpisoftware.com/tpu/articleDetails/2161(網頁安全性測試:OWASP ZAP使用入門)
https://www.zaproxy.org/docs/desktop/start/ OWASP Zed Attack Proxy (ZAP) Desktop User Guide.
https://read01.com/5QnNME.html 用了 ZAP,你的軟體就安全了嗎?
https://www.mxp.tw/9267/ ([WordPress] 通過 OWASP ZAP 黑箱安全性檢測的幾個要點)
https://hitcon.org/2017/CMT/slide-files/d2_s3_r4.pdf
https://www.bilibili.com/s/video/BV1Y54y127Jp OWASP ZAP漏洞扫描实战指南(四)Web渗透攻防演练-Web漏洞扫描-OWASP ZAP模糊测试-编码解码
https://www.bilibili.com/video/BV1U4411A7Yh  OWASP_ZAP 截断代理、主动、被动扫描
https://www.modb.pro/db/394192  阿萨聊测试 ZAP4:如何用ZAP 做Fuzz测试?

https://www.796t.com/content/1542194773.html 【應用安全】微軟的安全開發生命週期(SDL)

https://www.xuehua.us/a/5ebb5b6886ec4d2e7e8052e3?lang=zh-hk Kali Linux Web滲透測試手冊(第二版) - 8.3 - 使用OWASP ZAP進行掃描漏洞