[Security] 用 Taof 作 web service 的 fuzzing testing

[Security] 用 Taof 作 web service 的 fuzzing testing

今天的訓練課程中講到的是 Fuzzy testing,

基本上就是用一些隨機產生的資料,來測試軟體或服務會不會出現問題~

今天是用 Taof 這套 Windows 上的工具,來對 3CDaemon 這個 FTP server 測試~

 

1. 先開啟被測試的對象 3CDaemon

在課程裡面,我們已經知道 3CDaemon 在 FTP protocol 那邊是有 vulnerability 的,

先把它執行起來,確定 FTP server 有在 port 21 運作:

2015-12-04 11_47_56-3CDaemon

 

2. 使用 Taof 取得網路封包資料

在做 fuzzing 之前,Taof 需要先知道有哪些資料,這樣才有辦法修改資料做 fuzzing~

因此先開始 Taof 程式,按下 Data Retrieval 按鈕:

2015-12-04 11_48_38-Taof - The Art of Fuzzing

 

在跳出的視窗裡,再按下 Network Settings:

2015-12-04 11_48_55-Taof - Data retrieval

 

在網路設定這邊,Local settings 指的是 Taof 會開一個 port 給我們連,

Remote settings 則是要被測試的對象,基本上就是 port forwarding 的概念。

依下面的設定來說,就是我們去連 port 2121 時,就會被自動導向到本地端的 port 21,

而這個 port 21 就是 3CDaemon (被測者) 所開的 FTP port~

2015-12-04 11_49_10-Taof - Network Settings

 

按下 OK 後,接著按 Start,就會開始 port forwarding,

同時 Taof 也會在中間偷聽網路封包,給待會的 fuzzing 做使用:

2015-12-04 11_49_35-Taof - Data retrieval

 

這時開啟瀏覽器,瀏覽到 ftp://127.0.0.1:2121,

就會透過 Taof 連到本地端 3CDaemon 開的 FTP port,

在這邊隨便輸入個帳號密碼,或是選擇 Logon on anonymously 都可以,

反正只是要讓 Taof 聽到這個連線的資料而已:

2015-12-04 11_50_21-Internet Explorer

 

回到 Taof 那邊按下 Stop,就可以看到 Taof 已經記錄下好幾組網路封包,

像是第一個是 FTP 的 USER 請求,第二個是 FTP 的 PASS 請求~

2015-12-04 11_50_47-Taof - The Art of Fuzzing 2015-12-04 11_51_01-Taof - The Art of Fuzzing

 

3. 決定要 fuzzing 的資料範圍

這邊我們想對 USER 的部分作 fuzzing (意思就是想要亂填一些資料到 USER 欄位),

因此選擇 USER 的那個 Request,再按下 Set fuzzing points 按鈕~

接著跳出來的小視窗會有點看不懂…不過去點文字框裡的文字時會比較清楚…

舉例來說,在 anonymous 那邊點兩下將 anonymous 這個字選取了,

會看到下面的 From 和 To 自動變成了 5 和 14,

這其實就是 anonymous 這個字串在整個字串中的位置 (從 0 開始),

而設定成 5 到 14 代表的是要將字元 5~14 隨機替換掉,因此就會送出各種的名稱了,

當然你也可以修改 From/To 的值,讓它只隨機產生部分的字元~

2015-12-04 11_56_20-Taof - Fuzz Request

 

剛剛的設定裡面,還可以點下 Set variable length field,

來決定要隨機填入的字串長度,不過其實一般不用設定,Taof 自己就會用各種不同長度的字串丟進去試~

設定好後,按下 Add 將這個規則存起來,最後按下 OK:

2015-12-04 11_56_27-Taof - Fuzz Request

 

4. 開始送出 fuzzing 資料

回到 Taof 的主視窗後,按下 Fuzzing 按鈕就會顯示下面的視窗,

表示 Taof 將要開始將資料直接餵給 127.0.0.1 的 port 21~

按下 Start 就可以開始了:

2015-12-04 11_56_40-Taof - Fuzzing

 

開始沒幾秒,就看到 3CDaemon 掛掉了…

這代表 3CDaemon 在處理輸入資料時有問題,蠻可能是出現了 buffer overflow,導致程式當掉:

2015-12-04 11_56_50-3CDaemon  Application  

 

到 Taof 的目錄下,可以看到一些像是 xxx_sessions_yyy 的目錄,

裡面有個 debugging 的文字檔,打開就可以看到 Taof 曾經送出了哪些 fuzzing 資料,

例如它送出了 33 和 128 個字元的 A,成功地收到了 3CDaemon 送回來的回應:

*************************<REQUEST>*********************** - 33 characters
USER AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
*************************<REQUEST/>***********************
+++++++++++++++++++++++++<RESPONSE>+++++++++++++++++++++++++
220 3Com 3CDaemon FTP Server Version 2.0
+++++++++++++++++++++++++<RESPONSE/>+++++++++++++++++++++++++
*************************<REQUEST>*********************** - 128 characters
USER AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
*************************<REQUEST/>***********************
+++++++++++++++++++++++++<RESPONSE>+++++++++++++++++++++++++
331 User name ok, need password

 

在送出 511 字元時,3CDaemon 似乎就有一些問題,遇到了 Recv timed out 錯誤,

沒辦法從 3CDaemon 那邊取得回應:

*************************<REQUEST>*********************** - 511 characters
USER AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
*************************<REQUEST/>***********************
----------------------------<EXCEPTION>-------------------------
Recv timed out
----------------------------<EXCEPTION/>-------------------------

 

送出 512 字元時,發現 3CDaemon 掛掉了,導致接下來的請求都不會成功,

表示 3CDaemon 在收到 512 字元的輸入時,很可能出現了 buffer overflow:

*************************<REQUEST>*********************** - 512 characters
USER AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
*************************<REQUEST/>***********************
----------------------------<EXCEPTION>-------------------------
Recv timed out
----------------------------<EXCEPTION/>-------------------------
*** Check this out carefully. This request killed the service. Request - 512 characters
*************************<BUFFER>***********************
USER AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
*************************<BUFFER/>***********************
[*] I have to give up. I can not connect to the server

 

當發現 buffer overflow 時,就可以再更進一步去測試是否這個問題可以被轉化成一個 exploit,

不過當然以 RD 的立場來說,是可以利用這個工具,

來看看自己寫的程式的是不是能好好的處理各種輸入囉~

 

(本頁面已被瀏覽過 281 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料