这个 Burp 扩展帮助你发现授权漏洞。只需以高权限用户身份浏览 Web 应用程序,然后让 Auth Analyzer 为任何定义的低权限用户重放你的请求。通过定义参数的功能,Auth Analyzer 能够自动提取并替换参数值。例如,CSRF 令牌甚至整个会话特征都可以从响应中自动提取,并在后续请求中替换。每个响应都会被分析并根据绕过状态进行标记。
已有其他现有的 Burp 扩展在基本功能上类似。然而,参数功能及自动值提取的强大能力是选择 Auth Analyzer 的主要原因。有了它,你无需了解必须交换的数据内容。你可以轻松定义参数和 Cookie,Auth Analyzer 会自动捕获所需的值。Auth Analyzer 不会发送任何预检请求。它基本只是做你的 Web 应用所做的事情,只不过使用了你定义的用户角色/会话。
(1) 为每个要测试的用户创建或克隆一个会话。
(2) 保存和加载会话设置
(3) 指定会话特征(要替换的标头和/或参数)
(4) 根据需要设置过滤器
(5) 启动/停止和暂停 Auth Analyzer
(6) 指定表格过滤器
(7) 以另一个用户身份浏览 Web 应用并跟踪重放请求的结果
(8) 将表格数据导出为 XML 或 HTML
(9) 手动分析原始请求和重放请求/响应

如果你的站点地图中有要测试的资源,进行授权测试会非常快速便捷。第一步,定义要测试的会话。然后展开站点地图,选择资源并通过上下文菜单重放请求。此外,你可以定义哪些请求应被重放,哪些不应。这样,你可以在几秒钟内完成对复杂网站的授权测试。
Auth Analyzer 可以定义参数,这些参数会在给定会话的请求重放之前被替换。参数值可以根据不同需求进行设置。
当响应满足以下任一条件时,参数值会被提取:
响应包含 Set-Cookie 标头,且 Cookie 名设置为已定义的 提取字段名
HTML 文档响应 包含一个 name 属性设置为已定义 提取字段名 的输入字段
JSON 响应 包含一个键设置为 提取字段名
默认情况下,Auth Analyzer 会尝试从所有位置自动提取参数值。但点击参数设置图标可以按需限制自动提取的位置。

如果响应的一行中包含指定的 起始字符串 和 结束字符串,该参数会被提取。可以从字符串和结束字符串可以手动设置,也可以通过相应的上下文菜单直接设置。只需在任何响应中标记要提取的单词,然后通过上下文菜单将其设为该参数的 From-To Extract。
默认情况下,Auth Analyzer 会尝试从大多数文本响应的标头和正文中提取值。但点击参数设置图标可以按需限制 From-To 提取的位置。

可以定义一个静态参数值。例如,可用于静态 CSRF 令牌或登录凭据。
如果请求中存在已定义的参数,则会提示你输入值。例如,用于设置 2FA 代码。
如果某个值(由用户提取或定义)已设置,并且请求中存在对应的参数,该值将被替换。参数替换的条件如下:
参数会在以下任一位置被替换:

路径中(例如 /api/user/99/profile → 如果存在名为 user 的参数,值 99 将被替换)
URL 参数(例如 email=hans.wurst[a]gmail.com)
Cookie 参数(例如 PHPSESSID=mb8rkrcdg8765dt91vpum4u21v)
Body 参数,可以是 URL 编码 或 多部分表单数据
JSON 参数(例如 {"email":"hans.wurst[a]gmail.com"})
默认情况下,参数值会在每个位置被替换。但点击参数设置图标可以按需限制替换位置。

已定义的参数可以被完全移除,例如用于测试 CSRF 检查机制。
将用户名和密码定义为 静态值。将会话 Cookie 名定义为 自动提取。确保在开始浏览应用时没有设置会话 Cookie。登录 Web 应用。Auth Analyzer 将使用静态参数重放登录请求,并通过 Set-Cookie 标头自动获取会话。该 Cookie 将用于给定会话的后续请求。已定义的 Cookie 会被视为参数,因此无需定义 Cookie 标头。

提示:你可以限制参数的提取和替换条件,以避免在提取/替换阶段出现故障。

定义一个 Cookie 标头和一个 CSRF 令牌(使用 自动值提取)。如果给定会话的响应中存在 HTML 输入标签、Set-Cookie 标头 或 JSON 响应,CSRF 令牌值将被提取。

由于 自动提取 方法仅适用于 HTML 输入字段、JSON 对象 或 Set-Cookie 标头,我们必须使用名为 From To String 的通用提取方法。使用这种提取方法,如果响应中的值位于唯一的起始字符串和结束字符串之间,我们可以提取任何值。Auth Analyzer 提供了上下文菜单方法,可以自动设置 起始字符串 和 结束字符串。只需标记要提取的字符串,然后通过上下文菜单将其设置为 From-To Extract。

由于 Authorization 标头不像 Cookie 标头那样被视为参数,我们可以使用标头插入点来实现目的。只需标记并右键单击要在指定标头中替换的值。如果尚未提取参数值,则使用 defaultvalue。

只需创建任意数量的会话,即可同时测试多个角色。

只需按下会话状态面板上的 Renew,或通过上下文菜单(在表格条目中鼠标右键单击)重放受影响的请求。提示:登录请求可以随后进行标记和过滤。

原始请求可以被丢弃,用于测试幂等操作(例如 DELETE 功能)。

如果匿名用户需要有效的特征(例如有效的 Cookie 值),则必须像往常一样定义标头。否则,你可以按如下方式定义一个要移除的标头:

你可以轻松测试大量端点的个别 CORS 设置:在 要替换的标头 中添加一个 Origin 标头,并在会话面板上选择 Test CORS。选择 Test CORS 后,Auth Analyzer 会在重放请求之前将 HTTP 方法改为 OPTIONS。

可以通过选中 移除复选框 来移除指定参数。例如,可用于测试 CSRF 检查机制。

Auth Analyzer 内置了比较视图,用于验证两个响应之间的差异。只需标记要分析的消息,并更改消息视图 (1)。你现在可以比较两个请求 (2) (3)。内置的 Diff 功能会实时计算并显示两个请求之间的差异 (4)。

展开后的 Diff 视图:

Auth Analyzer 应该处理两种类型的请求/响应:
响应中包含需要提取的值
请求的资源不应被定义的会话访问
例如,我们不想处理静态 JavaScript 文件,因为它对所有人可访问,并且(希望)不包含任何受保护的数据。为此,可以设置以下类型的过滤器:
两个响应具有相同的响应体 且 相同的响应码,则响应被声明为 SAME。两个响应具有相同的响应码 且 两个响应体长度相差 ±5%,则响应被声明为 SIMILAR。