AuthMatrix 是 Burp Suite 的扩展,提供了一种简单的方法来测试 Web 应用程序和 Web 服务的授权。
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/SecurityInnovation/AuthMatrix
AuthMatrix v0.8.2
AuthMatrix是Burp Suite的扩展,提供了一种简单的方式来测试Web应用程序和Web服务中的授权。使用AuthMatrix,测试人员可以专注于事先彻底定义用户、角色和请求表格,以及特定目标应用程序。这些表格结构与各种威胁建模方法中常见的访问控制矩阵类似。
一旦表格被组装好,测试人员就可以使用简单的点按运行界面启动所有角色和请求的组合。结果可以通过易于阅读的彩色界面确认,指示系统中检测到的任何授权漏洞。此外,该扩展提供了保存和加载目标配置以进行简单回归测试的功能。
安装
可以通过Burp Suite BApp Store安装AuthMatrix。从Burp Suite中选择Extender选项卡,选择BApp Store,选择AuthMatrix,然后单击安装。
对于手动安装,请从此存储库中下载AuthMatrix.py。然后在Burp Suite中,选择Extender选项卡,单击添加按钮,将扩展类型更改为Python,然后选择AuthMatrix python文件。
注意
AuthMatrix需要配置Burp Suite以使用Jython。这方面的简单说明位于以下URL中。
https://portswigger.net/burp/help/extender.html#options_pythonenv
请确保使用Jython版本2.7.0或更高版本以确保兼容性。
基本用法
- 为目标应用程序中的所有权限级别创建角色。 (常见角色可能包括用户、管理员和匿名用户)
- 创建足够的用户以适应这些不同的角色,并选中用户所属的所有角色的复选框。包含一个用户的“单用户”角色将自动配置,以协助跨用户资源测试。如果不需要这些,请随意通过在请求表格中右键单击该列来删除这些角色。
- 从Repeater选项卡中生成每个用户的会话令牌,并将其输入到Users表格中的相关列中。可以通过Repeater中提供的右键单击菜单直接将Cookie发送到用户。AuthMatrix将智能解析来自表格的cookie字符串,并将其替换/添加到适用的请求中。
- 注意: Cookie字段是可选的。如果目标使用HTTP标头,则可以通过单击“New Header”按钮添加这些标头。
- 对于更高级的配置,包括自动刷新凭据,请参见下面的“用于身份验证用户的链”示例。
- 从Burp Suite的另一个区域 (例如目标选项卡、Repeater选项卡等)中右键单击请求,然后选择“发送到AuthMatrix”。
- 在AuthMatrix的请求表格中,选择授权执行每个HTTP请求的所有角色的复选框。
- 基于请求的预期响应行为自定义响应正则表达式,以确定操作是否成功。
- 常见的正则表达式包括HTTP响应头、正文中的成功消息或页面正文中的其他变化。
- 注意: 可以通过右键单击菜单 (即已验证用户不应收到HTTP 303) 将请求配置为使用Failure Regex。
- 单击底部的“运行”以运行所有请求,或右键单击多个请求并选择“运行”。观察相邻的表格将显示彩色结果。
- 绿色表示未检测到漏洞
- 红色表示请求可能包含漏洞
- 蓝色表示结果可能是错误的阳性。(这通常意味着存在无效/过期的会话令牌或错误的正则表达式)
示例AuthMatrix配置

检测到错误的阳性(无效的会话令牌)

高级用法
链
链提供了一种将静态或动态值复制到请求的正文中的方式。这些值可以从先前运行的请求的响应中提取 (使用正则表达式) 或通过指定特定用户的静态字符串值来提取。
链的最常见用例是:
- 用有效的CSRF令牌填充请求
- 测试新创建的IDs/GUIDs是否存在跨用户授权问题
- 自动化身份验证和会话刷新
链条条目具有以下值:
- Chain Name: 描述性的名称
- Source: 定义在User表格中的静态用户字符串或源请求在Request表格中的ID
- Extraction Regex: 用于从源请求的响应中提取值的正则表达式。如果在前一个字段中指定了请求,则此字段仅用于这个。如果使用了这个,它必须包含一个需要提取的括号分组 [即(.*)]
- Destinations: 要将源值替换到的请求ID列表。
- Replacement Regex: 用于确定要插入源值的位置的正则表达式。这必须包含一个要替换的括号分组 [即(.*)]
- Use Values From: 指定是否使用从一个选定用户获取的源值 (对于跨用户资源测试很有用) 或使用所有用户的值并将它们放到相应用户的目标请求中 (对于像CSRF令牌检索这样的自动化任务很有用)
注意: 请求按行顺序运行,但是,如果检测到链依赖性,AuthMatrix将按所需顺序运行请求。
高级用法
链
链提供了一种将静态或动态值复制到请求主体中的方式。这些值可以从先前运行请求的响应中提取(使用正则表达式)或通过指定用户特定的静态字符串值来提取。
链的最常见用例包括:
-
使用有效的 CSRF 令牌填充请求
-
测试新创建的 ID/GUID 是否存在跨用户授权问题
-
自动化身份验证和会话刷新
链条条目具有以下值:
-
链名称:描述性名称
-
来源:在用户表中定义的静态用户字符串或源请求在请求表中的 ID
-
提取正则表达式:用于从源请求的响应中提取值的正则表达式。仅当在前一个字段中指定请求时才使用此字段。如果使用,这必须包含要提取的一个括号分组[即 (.*)]
-
目标:源值将被替换到的请求 ID 列表。
-
替换正则表达式:用于确定源值将被插入到哪里的正则表达式。这必须包含一个要替换的括号分组[即 (.*)]
-
使用值来自:指定是否使用从一个选定用户获得的源值(对于跨用户资源测试非常有用),或者使用所有用户的值并将它们放置在相应用户的目标请求中(对于自动化任务,如 CSRF 令牌检索非常有用)
注意:请求按行顺序运行,但是,如果检测到链依赖性,AuthMatrix 将按所需顺序运行请求。
CSRF 的链

用于跨用户资源测试的链

用于用户身份验证的链

失败正则表达式模式
对于某些目标,将 AuthMatrix 配置为检测请求失败时的响应条件可能更容易。例如,如果目标站点返回成功请求的唯一数据,但在执行未经授权的操作时始终返回 HTTP 303。
在此模式下,AuthMatrix 将验证所有不属于成功角色的用户的正则表达式。
为此,请右键单击请求并选择“切换正则表达式模式”。正则表达式字段将突出显示为紫色,以指示 AuthMatrix 将在失败正则表达式模式下运行请求。
注意:在失败正则表达式模式下,误报检测和突出显示可能无法正常工作。
具有失败正则表达式模式的示例配置

JSON 状态文件
有关状态文件结构的详细信息,请参见 JsonState 文档