freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

99+

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

T-Reqs:一款基于语法的HTTP漏洞挖掘工具
Alpha_h4ck 2022-02-10 21:16:45 253759
所属地 广西

关于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开源许可证协议。

项目地址

T-Reqs:GitHub传送门

参考资料

https://bahruz.me/papers/ccs2021treqs.pdf

https://www.sigsac.org/ccs/CCS2021/accepted-papers.html

https://github.com/bahruzjabiyev/T-Reqs-HTTP-Fuzzer/blob/main/config

https://github.com/bahruzjabiyev/T-Reqs-HTTP-Fuzzer/blob/main/code/feedback-server.py

# Fuzzer # HTTP安全 # HTTP模糊测试
本文为 Alpha_h4ck 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
Alpha_h4ck LV.10
好好学习,天天向上
  • 2359 文章数
  • 1023 关注者
Tetragon:一款基于eBPF的运行时环境安全监控工具
2025-01-21
DroneXtract:一款针对无人机的网络安全数字取证工具
2025-01-21
CNAPPgoat:一款针对云环境的安全实践靶场
2025-01-21
文章目录