T-Reqs:一款基于語法的HTTP漏洞挖掘工具

關(guān)于T-Reqs

T-Reqs全稱為Two Requests,T-Reqs是一款基于語法的HTTP模糊測試漏洞挖掘工具,該工具可以通過發(fā)送版本為1.1或更早版本的變異HTTP請求來對目標(biāo)HTTP服務(wù)器進行模糊測試以及漏洞挖掘。該工具主要通過下列三大步驟實現(xiàn)其功能:(1)生成輸入;(2)對生成的輸入進行變異處理;(3)將變異后的數(shù)據(jù)發(fā)送至目標(biāo)服務(wù)器;

生成輸入

工具會使用輸入的CFG(上下文無關(guān)文法)語法來生成HTTP請求。由于下面所示的示例語法是為請求行模糊處理而定制的,因此每個請求行組件及其可能的值都已經(jīng)明確指定了。此時,我們將能夠使用各種形式的請求行生成有效的請求,并從變異的角度將每個請求行組件視為一個單獨的單元。

'<start>':

     ['<request>'],

 '<request>':

     ['<request-line><base><the-rest>'],

 '<request-line>':

     ['<method-name><space><uri><space><protocol><separator><version><newline>'],

 '<method-name>':

     ['GET', 'HEAD', 'POST', 'PUT', 'DELETE', 'CONNECT', 'OPTIONS', 'TRACE', 'PATCH'],

 '<space>':

     [' '],

 '<uri>':

     ['/_URI_'],

 '<protocol>':

     ['HTTP'],

 '<separator>':

     ['/'],

 '<version>':

     ['0.9', '1.0', '1.1'],

 '<newline>':

     ['\r\n'],

 '<base>':

     ['Host: _HOST_\r\nConnection:close\r\nX-Request-ID: _REQUEST_ID_\r\n'],

 '<the-rest>':

     ['Content-Length: 5\r\n\r\nBBBBBBBBBB'],
復(fù)制代碼

輸入變異

每個組件都可以用兩種方式進行標(biāo)記:字符串變異和樹變異(具體參見示例配置)。如果組件為字符串變異,那么我們就可以刪除、替換或在隨機位置插入隨機字符。

在下面的示例(左側(cè))中,刪除了協(xié)議版本(1)中的最后一個字符,用R替換方法名稱中的第三個字母(S),并在URI的開頭插入正斜杠。然而,如果一個組件是樹變異,那么我們就可以隨機、替換或插入到該組件下的一個隨機位置。

下面的示例(右側(cè))顯示了應(yīng)用于請求行組件的三個樹變異:(1)方法被協(xié)議替換;(2)在當(dāng)前URI之后插入一個額外的URI;(3)刪除現(xiàn)有的proto。

T-Reqs:一款基于語法的HTTP漏洞挖掘工具

工具下載&安裝&配置

該工具基于Python開發(fā),因此我們首先需要在本地設(shè)備上安裝并配置好Python環(huán)境。

源碼獲取

廣大研究人員可以使用下列命令將該項目源碼克隆至本地:

git clone https://github.com/bahruzjabiyev/T-Reqs-HTTP-Fuzzer.git
復(fù)制代碼

工具使用

工具配置

測試工具應(yīng)該了解用戶對輸入的生成和變異的偏好。更具體地說,應(yīng)該在配置文件中指定輸入語法、突變組件和突變首選項等(具體參見示例配置)。

運行模式

為了能夠復(fù)現(xiàn)在每次迭代中生成和變異的輸入,工具使用了一個種子編號。實際上,在輸入的生成和變異的過程中,這個種子編號會作為一個隨機的變異種子來使用。根據(jù)這些種子提供給工具的方式,它將以下列兩種模式中的其中一種運行:單獨模式和集體模式。

在單獨模式下,工具將根據(jù)用戶指定的種子來生成和變異輸入。在下面的命令中,指定了一個種子(即505)?;蛘?,也可以使用-f選項指定種子列表。

python3 main.py -i -c config -s 505
復(fù)制代碼

在集體模式(默認(rèn))下,工具將從零開始作為種子值,并在每次迭代中遞增,直到結(jié)束,其中種子的開始和結(jié)束編號是可以自定義配置的。

python3 main.py -c config
復(fù)制代碼

許可證協(xié)議

本項目的開發(fā)與發(fā)布遵循MIT開源許可證協(xié)議。
資料領(lǐng)取

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容