天天看點

白盒安全測試系列 之 流程

針對具體産品開展白盒安全測試,其流程一般分為收集産品資訊、制定測試政策、工具化自動掃描測試、源碼分析及滲透測試等四個階段,大體流程如下圖所示:

1.1  收集産品資訊

進行白盒安全測試,首先要對業務邏輯和程式架構有一定程度上的了解。一般結合Web界面、應用程式功能、業務流程,通過浏覽器和抓包工具,分析并确定應用程式向外界暴露的接口,從應用程式的對外接口入手,初步識别外部資料進入應用程式的流程及處理的邏輯,為後續白盒安全測試的開展做充分準備。Web白盒安全測試開展切記避免在不熟悉産品的情況下,盲目設定測試目标,執行相關安全分析。熟悉産品的主要功能、存在的接口以及各子產品的互動流程,才能了解可能面臨的安全風險。

測試前資訊收集是一個很重要的環節,必須充分了解測試對象,才能更好地進行白盒安全測試,收集資訊及熟悉産品的途徑主要如下:

1、登入Web前台和背景,了解Web的基本功能和業務功能場景;

2、檢視産品文檔,了解API和端口矩陣,熟悉各Web中各模闆的協同工作模式;

3、與開發人員交流,了解源碼目錄結構及功能,了解Web環境資訊、特性和Web業務場景。

1.2  制定測試政策

在完成産品資訊收集的準備工作之後,需要結合産品資訊、威脅面分析以及對産品的安全品質要求等制定安全測試政策。

1.2.1        明确測試範圍

從事安全測試的相關人員,首先在了解産品的架構設計及業務流程的基礎上,确定安全測試要求和風險控制範圍,目标設定不盲目,測試時間、人員等客觀條件完備。并且根據測試要求及時擷取産品相關環境和源碼,且有效對應被測範圍内各子產品源碼目錄。

1.2.2        确定重點子產品

公司Web形态較多,源碼數量較大,部分漏洞通過本文很容易發現如SQL注入、指令注入、XXE注入等,但還有部分漏洞是和業務場景強相關的,需要一定安全經驗才能夠發現,是以在進行白盒安全測試時,我們要結合産品威脅分析結果,将易産生安全風險的子產品進行重點測試,必要時可采用人工走讀的方式進行源碼審計,常見的重點子產品場景如下:

編号 功能/業務項 風險說明
1 處理系統外部輸入的子產品/接口/代碼 任何不可信來源的輸入都需要重點關注
2 檔案上傳下載下傳功能 檔案上傳下載下傳場景較為複雜,需要重點關注
3 安全相關機制/代碼 Web中使用了非通用的安全防禦機制,特别是全局的安全防禦機制需要重點關注。
4 系統所有管理接口和控制接口 尤其是在較為複雜的場景下,權限控制等接口都需要重點關注。
5 敏感資料處理 所有敏感資料的處理邏輯均需要重點關注。
6 ……

1.2.3        項目運作方式

在完成上述工作後,隻要熟練掌握審計流程和常見的漏洞審計技巧就可以比較順利的進行後續工作了。但是Java Web白盒安全測試,不可能完全依賴使用工具掃描,需要有一定的審計經驗、技巧甚至是對Java架構有較深入了解的專業人員深度參與,才可能全面排查和發現安全問題。是以白盒安全測試項目的項目運作方式和人員配置極其重要。

白盒安全測試項目中,至少需要一位熟悉産品的開發人員參與,協助安全測試人員開展工作,跟随本文進行安全測試時,項目中使用的元件、方法等都需要熟悉被測目标的相關人員幫助解答,且安全測試人員發現的共性問題,最好由産品各子產品開發人員自查和整改,然後由測試人員抽查,這樣才能更加高效完成安全測試任務。

1.3  掌握測試方法

1.3.1        自外向内的正向分析資料流

自外向内是分析資料流:從使用者的輸入資料開始跟蹤,也就是HTTP請求資料,所有從使用者處擷取的資料都是不可信資料,需跟蹤這些資料如何轉移,處理和存儲。

自外向内進行白盒安全測試,首先要擷取對外接口,一般有兩種方式,其一是利用web環境抓包擷取相應接口,而後在源碼中找到對應的代碼塊;其二是借助web架構、産品文檔等找到所有的處理接口。兩種方法各有優缺點,通過web環境,抓包擷取接口的方式簡單快速,但其缺點是難以把所有接口都覆寫到;而直接從程式的特點搜尋接口能夠全面覆寫,但效率較低。

在找到接口後,需要全面跟蹤每個使用者輸入資料的處理流程,走讀代碼過程中,需深入了解代碼邏輯,檢查過濾器等是否存在缺陷,還要注意處理邏輯、業務邏輯是否考慮周到,能否繞過等。下圖是一個自外向内測試的示例:

白盒安全測試系列 之 流程

1.3.2        自内向外的逆向分析資料流

自内向外的逆向分析資料流:一般根據漏洞類型來排查,不同的安全問題,通過工具輔助搜尋相應關鍵字,找到問題可能發生的位置,然後反向追溯。

對于典型問題采用相應的關鍵字定位到相關代碼,再檢查其參數是否可信,對于不可信資料,需要一直向上跟蹤,檢查過濾是否充分。該測試思路,需要明确劃定代碼測試範圍,否則在進行關鍵字搜尋時可能會擴大檢查範圍。此方法的缺點是在對多個漏洞進行逆向分析的時候,資料流可能會出現交叉,産生一定程度的備援工作。優點是在定向測試某類問題時,更加準确高效。下圖是一個自内向外測試的示例:

白盒安全測試系列 之 流程

1.4  輸出測試報告

白盒安全測試報告一般包括如下内容:

(1)       整體上給出産品或系統脆弱性和風險點有哪些;