關于T-Reqs
T-Reqs全稱為Two Requests,T-Reqs是一款基于語法的HTTP模糊測驗漏洞挖掘工具,該工具可以通過發送版本為1.1或更早版本的變異HTTP請求來對目標HTTP服務器進行模糊測驗以及漏洞挖掘,該工具主要通過下列三大步驟實作其功能:(1)生成輸入;(2)對生成的輸入進行變異處理;(3)將變異后的資料發送至目標服務器;
生成輸入
工具會使用輸入的CFG(背景關系無關文法)語法來生成HTTP請求,由于下面所示的示例語法是為請求行模糊處理而定制的,因此每個請求行組件及其可能的值都已經明確指定了,此時,我們將能夠使用各種形式的請求行生成有效的請求,并從變異的角度將每個請求行組件視為一個單獨的單元,
'<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'],
復制代碼
輸入變異
每個組件都可以用兩種方式進行標記:字串變異和樹變異(具體參見示例配置),如果組件為字串變異,那么我們就可以洗掉、替換或在隨機位置插入隨機字符,
在下面的示例(左側)中,洗掉了協議版本(1)中的最后一個字符,用R替換方法名稱中的第三個字母(S),并在URI的開頭插入正斜杠,然而,如果一個組件是樹變異,那么我們就可以隨機、替換或插入到該組件下的一個隨機位置,
下面的示例(右側)顯示了應用于請求行組件的三個樹變異:(1)方法被協議替換;(2)在當前URI之后插入一個額外的URI;(3)洗掉現有的proto,
工具下載&安裝&配置
該工具基于Python開發,因此我們首先需要在本地設備上安裝并配置好Python環境,
原始碼獲取
廣大研究人員可以使用下列命令將該專案原始碼克隆至本地:
git clone https://github.com/bahruzjabiyev/T-Reqs-HTTP-Fuzzer.git
復制代碼
工具使用
工具配置
測驗工具應該了解用戶對輸入的生成和變異的偏好,更具體地說,應該在組態檔中指定輸入語法、突變組件和突變首選項等(具體參見示例配置),
運行模式
為了能夠復現在每次迭代中生成和變異的輸入,工具使用了一個種子編號,實際上,在輸入的生成和變異的程序中,這個種子編號會作為一個隨機的變異種子來使用,根據這些種子提供給工具的方式,它將以下列兩種模式中的其中一種運行:單獨模式和集體模式,
在單獨模式下,工具將根據用戶指定的種子來生成和變異輸入,在下面的命令中,指定了一個種子(即505),或者,也可以使用-f選項指定種子串列,
python3 main.py -i -c config -s 505
復制代碼
在集體模式(默認)下,工具將從零開始作為種子值,并在每次迭代中遞增,直到結束,其中種子的開始和結束編號是可以自定義配置的,
python3 main.py -c config
復制代碼
許可證協議
本專案的開發與發布遵循MIT開源許可證協議,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/433285.html
標籤:其他
