作者:
小川
·
2016/04/28 15:33
0x00 前言
Fiddler是一款強大的web除錯工具,其基本用法網上已經有很詳細的教程,這裡我就不再多說了。下面只是經驗之談,利用Fiddler各種功能達到自動檢測漏洞的目的。
0x01 市場需求
我們在進行漏洞挖掘過程中,由於需要做大量的請求分析、大量的測試規則,且需要不斷的重放修改請求進行探測,這導致消耗的精力、時間巨大。如果我們可以將請求儲存下來,本地模擬請求的傳送,自動修改請求,載入各種漏洞的測試規則,然後對請求的返回結果、狀態進行漏洞特點的判斷,那麼對一些常見的sql注入、xss漏洞、檔案包含等漏洞挖掘就非常的方便了。有了這樣的需求,我們來看看Fiddler能否給我們提供很好的技術支援
0x02 需求分析
Fiddler採用代理的方式捕獲請求,能夠完美的截獲請求頭,這樣就能滿足我們的一些登入會話的需求,以及廠商做了rerferer驗證、或者其他請求頭驗證的情況。而且Fiddler很好的支援https,可儲存完整的請求以及傳送的資料、引數等資訊方便快捷的過濾規則,能夠保留我們需要的測試session,輕鬆過濾一些js、css、圖片等不必要的請求。
0x03 幹活
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被一鍵儲存了:
0x04 總結
好了request儲存以後,對request的分析,就要靠個人如何去寫漏洞識別的工具了,不同的人有不同的思路、想法,但是都離不開原始request,這些就不是本文要講述的了。希望能給大家一點點幫助。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!