关于T-Reqs
T-Reqs全称为TwoRequests,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环境。
源码获取
广阔研究人员能够运用下列指令将该项目源码克隆至本地:
gitclonehttps://github.com/bahruzjabiyev/T-Reqs-HTTP-Fuzzer.git
东西运用
东西装备
测验东西应该了解用户对输入的生成和变异的偏好。更详细地说,应该在装备文件中指定输入语法、骤变组件和骤变首选项等(详细拜见示例装备)。
运转形式
为了能够复现在每次迭代中生成和变异的输入,东西运用了一个种子编号。实际上,在输入的生成和变异的过程中,这个种子编号会作为一个随机的变异种子来运用。依据这些种子提供给东西的方式,它将以下列两种形式中的其间一种运转:独自形式和团体形式。
在独自形式下,东西将依据用户指定的种子来生成和变异输入。鄙人面的指令中,指定了一个种子(即505)。或者,也能够运用-f选项指定种子列表。
python3 main.py -i -c config -s 505
在团体形式(默认)下,东西将从零开始作为种子值,并在每次迭代中递增,直到完毕,其间种子的开始和完毕编号是能够自定义装备的。
python3 main.py -c config
许可证协议
本项意图开发与发布遵循MIT开源许可证协议。