本節書摘來自異步社群《metasploit滲透測試手冊》一書中的第8章8.7節 使用metasploit進行模糊測試,作者【印度】abhinav singh,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
8.7 使用metasploit進行模糊測試
metasploit滲透測試手冊
模糊測試是一種軟體測試技術,包括使用随機的資料注入檢測軟體中的漏洞。模糊測試腳本生成畸形資料時,将其傳送給特定的目标軟體以驗證其是否會導緻溢出。metasploit提供中包含某些模糊測試子產品,可用于漏洞利用代碼開發。下面探索一下模糊測試的基礎,以及怎樣将metasploit子產品用作潛在的模糊測試器。
準備
在介紹metasploit模糊測試子產品之前,首先對模糊測試及其類型進行簡單的了解。
模糊測試被視為是一種黑盒測試技術,用于發現軟體中的溢出問題,這一技術廣泛地應用于應用程式漏洞挖掘。
模糊測試器可用于測試軟體、協定和檔案格式中的漏洞,可自動化實作測試資料生成和注入的過程,使用者可控制用于注入的資料或資料包的大小。
模糊測試器一般測試如下攻擊組合。
數字(有符号/無符号證書、浮點數等)
字元(url和指令行輸入)
中繼資料:使用者輸入的文本(id3标簽)
純粹的二進制序列
根據待測試的應用程式或協定的類型,可以相應地建立模糊測試器,以生成資料/資料包測試其是否導緻溢出。metasploit中包含了一些模糊測試子產品,可以利用黑盒測試方法測試應用程式和協定。這些子產品存儲在modules/auxiliary/fuzzers目錄中。
怎樣實作
下面運作一個基于協定的模糊器子產品,metasploit中包含一個名為client_ftp.rb的ftp子產品,其作用是充當ftp伺服器,并向ftp用戶端發送回應資訊。
從結果可以看到該子產品包含很多有用的參數,下面看一下每個參數代表的功能。
cyclic選項用于建立模糊測試資料的循環模式,確定每隔4個位元組的偏移量。如果該選項設定為false,則模糊器将使用字母a組成的字元串作為模糊測試資料。
endsize選項用于定義傳回給ftp用戶端的模糊測試資料的最大長度。預設情況下,該數值設定為20000位元組。
error選項如果被設定為true,将使用錯誤代碼對ftp用戶端進行響應。
extraline選項用于模糊測試目錄清單。在收到過多的目錄名請求時,有些ftp用戶端會崩潰。
fuzzcmds選項用于定義對哪些響應資訊進行模糊測試,可能的請求包括list、nlst、ls和retr,也可以将其設定為*,以便對所有指令進行模糊測試。
srvhost選項用于指定模糊測試器将使用哪個ip位址與ftp伺服器進行綁定。對于本地機器,這個值可以設定為0.0.0.0。
srvport選項用于定義ftp伺服器端口,預設值為21。
startsize選項用于定義模糊測試資料的初始化資料長度。
stepsize選項用于定義溢出失敗時,模糊測試資料每次的增量。
在使用模糊測試器時,需要注意如果沒有傳遞正确的參數值,可能會導緻模糊測試失敗。要對模糊器有更深入的了解,可以檢視子產品的源代碼。下面運作ftp用戶端模糊測試器,并檢視其傳回結果。
輸出資訊中有幾點需要特别注意,首先,ftp伺服器在攻擊機器上啟動,之後回連ftp用戶端,并向用戶端機器發送不同的響應指令。模糊測試過程從nlst指令開始,之後是list等指令。
上面是模糊測試子產品工作方式的一個小示例,下節中我們将建構自己的模糊測試子產品,并對協定模糊測試進行深入了解。
怎樣工作
模糊測試器會根據目标應用程式建立不同的測試用例,在上面的示例中,ftp伺服器的模糊測試是通過發送随機資料包之後對響應消息進行分析實作的,資料包可以對網絡流量中的如下屬性進行模糊測試。
資料標頭:模糊測試器可以将任意長度和取值的随機資料插入到資料標頭部,并對響應消息進行分析。
資料校驗和:使用模糊測試器可以在特定的條件下對校驗和值進行操縱。
資料包大小:可以将任意長度的資料包發送給網絡應用程式以判斷是否會引發崩潰。
發生溢出或崩潰後,模糊測試器可以傳回測試用例當做溢出資料使用。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。