Fiddler是一款強大的web調試工具,其基本用法網上已經有很詳細的教程,這里我就不再多說了。下面只是經驗之談,利用Fiddler各種功能達到自動檢測漏洞的目的。
我們在進行漏洞挖掘過程中,由于需要做大量的請求分析、大量的測試規則,且需要不斷的重放修改請求進行探測,這導致消耗的精力、時間巨大。如果我們可以將請求保存下來,本地模擬請求的發送,自動修改請求,加載各種漏洞的測試規則,然后對請求的返回結果、狀態進行漏洞特點的判斷,那么對一些常見的sql注入、xss漏洞、文件包含等漏洞挖掘就非常的方便了。有了這樣的需求,我們來看看Fiddler能否給我們提供很好的技術支持
Fiddler采用代理的方式捕獲請求,能夠完美的截獲請求頭,這樣就能滿足我們的一些登錄會話的需求,以及廠商做了rerferer驗證、或者其他請求頭驗證的情況。而且Fiddler很好的支持https,可保存完整的請求以及發送的數據、參數等信息方便快捷的過濾規則,能夠保留我們需要的測試session,輕松過濾一些js、css、圖片等不必要的請求。
Fiddler雖然支持保存請求頭,但是不支持一鍵保存。每次保存請求頭時都需要點一次確認。這使得保存請求非常的不方便。哎!重點來了,看官注意了,后來查詢一些資料才知道,Fiddler有一個Fiddler2 Script Editor它支持用戶調用其自定義的一些函數,自行編輯腳本,非常簡單易懂,位置在rules->Customize rule下。
起初的想法是這樣的:在腳本編輯器中有個OnBeforeRequest函數,在該函數下編輯的代碼,代表可以在request觸發前對request進行處理。
我們先在ClassHandlers下定義一個菜單,用于控制開啟插件的開關:
在OnBeforeRequest函數下增加如下代碼:
#!java
if(nowsave){
??????????? oSession.SaveRequest(""+oSession.id+"_Request.txt",false);
????????????
????????}
意思就是當捕獲到session時就將請求request保存到指定目錄
來看看效果,在rule下會出現我們添加的菜單,選中它后就開始時時的存儲request到本地了:
保存本地的request:
post數據,參數、數據也都在其中,
能夠時時的存儲request,再配合自己寫的一些對request進行模擬請求探索漏洞的工具,每天隨便看看網站,逛逛各大廠商就能挖洞!媽媽再也不用擔心我會和漏洞url擦肩而過了!是不是特別給咱媽省心?
然而這還不能滿足我們的需求,因為在工作中我們需要對一些特定的請求進行過濾后再進行測試,比如一些請求有插入數據的功能列如評論,如果這種請求進行自動化探測的話,會帶來大量的垃圾數據,往往測試時需要過濾掉。另外時時存儲會保存大量request,全部都進行測試效率會降低。利用fiddler的過濾規則,我們已經能夠保留我們希望測試的request,如果能有一個命令,能一鍵保存我們過濾留下的session,那效率將會大大提高。然而fiddler并沒有這樣的功能,就像上邊說到的,保存request每次都會彈框點擊確認才行。我們再來看看Fiddler 2 Script Edit是否能解決這個問題。果然在OnExecAction函數下可以讓我們自定義命令,輸入命令后,執行我們想要的代碼,直接上代碼:
#!java
case "save":
??????????? var Sessions=UI.GetAllSessions();
??????????????? for (var i=0;i<Sessions.Length;i++)
????????????????{
??????????????????? Sessions[i].SaveRequest("你的目錄"+i.toString()+"_Request.txt",false);
????????????????}
??????????? return true;
增加一個case,循環保存即可。雖然上面的代碼很簡單,但是我卻分析學習測試了好長時間,包括哪些fiddler的函數可用,用哪個類等等,這段過程就比較曲折了,就不多說了。 來看看效果,打開fiddler,在左下角輸入命令save
request被一鍵保存了:
好了request保存以后,對request的分析,就要靠個人如何去寫漏洞識別的工具了,不同的人有不同的思路、想法,但是都離不開原始request,這些就不是本文要講述的了。希望能給大家一點點幫助。