volkandindar/agartha
GitHub: volkandindar/agartha
一款 Burp Suite 安全测试扩展,提供动态 payload 生成、授权矩阵分析和访问控制绕过检测,帮助测试人员高效发现注入漏洞和认证授权问题。
Stars: 401 | Forks: 81
# Agartha
###### Payload 注入(LFI、RCE、SQLi,可选 BCheck)、认证问题(访问矩阵、HTTP 403)、复制为 JavaScript 以及 Bambdas
Agartha 专注于高级 payload 生成和访问控制评估。它能够熟练识别与注入攻击以及认证/授权问题相关的漏洞。动态 payload 生成器为各种注入向量制作广泛的字典,包括 SQL 注入(SQLi)、本地文件包含(LFI)和远程代码执行(RCE)。此外,该扩展构建了全面的用户访问矩阵,揭示潜在的访问违规和提权路径。它还协助执行 HTTP 403 绕过检查,揭示认证配置错误。另外,它可以将 HTTP 请求转换为 JavaScript 代码,以帮助进一步挖掘 XSS 问题。 总结如下: - **Payload 生成器**:它动态构建用于注入攻击的全面字典,结合各种编码和转义字符以提高安全测试的有效性。这些字典涵盖了严重漏洞,如 SQL 注入(SQLi)、本地文件包含(LFI)、远程代码执行(RCE),现在还支持 BCheck 语法,以便与 Burp 的 BCheck 框架无缝集成。 - **本地文件包含,路径遍历**:它有助于识别允许攻击者访问服务器文件系统上文件的漏洞。 - **远程代码执行,命令注入**:它旨在检测潜在的命令注入点,实现对代码执行漏洞的稳健测试。 - **SQL 注入**:它协助发现 SQL 注入漏洞,包括 Stacked Queries、Boolean-Based、Union-Based 和 Time-Based。 - **认证矩阵**:通过构建全面的访问矩阵,该工具揭示了潜在的访问违规和提权路径。此功能通过解决认证和授权问题来增强安全态势。 - 你可以使用网络 **Spider** 功能生成站点地图/URL 列表,它会自动从用户会话中抓取可见链接。 - **403 绕过**:它旨在解决常见的访问限制,例如 HTTP 403 Forbidden 响应。它利用 URL 操作和请求头修改等技术来绕过实施的限制。 - **复制为 JavaScript**:它将 HTTP 请求转换为 JavaScript 代码,用于进一步的 XSS 利用等。 - **Bambdas 脚本生成器**:该功能支持根据用户输入自动生成 Bambdas 兼容的脚本。它消除了手动编码的需要,实现了更快地创建自定义脚本,并简化了与 Bambdas 引擎的集成。
这里有一个关于如何使用的小教程。 ## 安装 你应该先下载“Jython”文件并设置你的环境: - Burp 菜单 > Extender > Options > Python Environment > 定位 Jython standalone jar 文件。 你可以通过官方商店安装 Agartha: - Burp 菜单 > Extender > BApp Store > Agartha 或者进行手动安装: - Burp 菜单 > Extender > Extensions > Add > Extension Type: Python > Extension file(.py): 选择 'Agartha.py' 文件 完成所有操作后,你将在主窗口中看到“Agartha”标签页,并且它还会在右键菜单中注册,位于: - 'Extensions > Agartha',包含三个子菜单: - **'Auth Matrix'** - **'403 Bypass'** - **'Copy as JavaScript'**
## 本地文件包含 / 路径遍历 它支持 Unix 和 Windows 文件语法,能够为任何所需路径动态生成字典。此外,它还可以尝试通过多种编码和其他技术来绕过 Web 应用防火墙(WAF)。 - **'Depth'** 指定用于生成字典的目录遍历深度。你可以创建达到或等于此指定级别的字典。默认值为 5。 - **'Waf Bypass'** 询问你是否要启用所有绕过功能,例如使用空字节、各种编码技术以及其他规避 Web 应用防火墙的方法。
## 远程代码执行 / 命令注入 它根据提供的命令生成用于命令执行的动态字典。它结合了 Unix 和 Windows 环境的各种分隔符和终止符。 - **'URL Encoding'** 对输出进行编码。
## SQL 注入 它为各种类型的 SQL 注入攻击生成 payload,包括 Stacked Queries、Boolean-Based、Union-Based 和 Time-Based。它不需要任何用户输入;你只需选择所需的 SQL 攻击类型和数据库,它就会生成具有不同组合的字典。 - **'URL Encoding'** 对输出进行编码。 - **'Waf Bypass'** 询问你是否要启用所有绕过功能,例如使用空字节、各种编码技术以及其他规避 Web 应用防火墙的方法。 - **'Union-Based'** 需要 payload 生成的指定深度。你可以创建达到给定值的字典。默认值为 5。 - 其余方面涉及数据库类型和各种攻击向量。
## BCheck 代码生成器 BCheck 是 Burp Suite 用于创建和导入自定义扫描检查的框架。这些用户定义的检查与 Burp Scanner 的内置例程一起运行,允许你针对特定漏洞或测试需求定制扫描。通过使用 BChecks,你可以扩展 Burp 的扫描功能,并简化你的工作流程,以实现更有针对性和高效的评估。 现在你可以自动生成代码:
- 你可以点击上面蓝框中的“**Generate the Payloads**”按钮来创建一个经典的字典,可以在 Burp 的 Intruder 或 Repeater 中手动使用。
- 现在,你还可以点击红框中的“**Generate payloads for BCheck**”按钮,生成采用 BCheck 语法格式化的相同 payload,准备好在扫描中使用。
请注意,随着 Bambdas 脚本大小的增加,它可能会导致性能问题,尤其是在扫描期间。较大的脚本可能会减慢响应速度,增加内存使用量,并导致执行任务时的延迟。
点击“Generate payloads for BCheck”按钮后,BCheck 代码将自动复制到你的剪贴板。
接下来,从 Burp Suite 菜单转到 'Extensions > BChecks > New > Blank',然后直接粘贴生成的代码。
你的 payload 现在已集成到 BCheck 中。你可以手动发送或扫描 HTTP 请求,或者发起一个包含 BCheck 控制的 Burp 扫描,以自动测试该工具生成的注入 payload。
- **手动扫描**:右键单击 HTTP 请求并选择“Send to BChecks Editor”。然后点击生成的 BCheck 项并选择“Run test”。
- **自动扫描**:右键单击 HTTP 请求,选择“Open Scan Launcher”,然后转到“Scan configuration > Select from library > Audit checks – BChecks only”。关闭对话框,你的扫描现在将仅使用你定义的 BChecks 运行。
**微调建议**:生成的代码作为一个模板,可能需要进行一些调整,因为行为在不同的应用程序和服务器之间可能会有所不同。
优化过滤器(例如指定 HTTP 响应代码或响应中的关键字)可以帮助减少误报,使结果更精确、噪音更小。
## 授权矩阵 / 用户访问表 这部分侧重于分析用户会话和 URL 之间的关系,以识别访问违规。该工具系统地访问与预定义用户会话关联的所有 URL,并用 HTTP 响应填充表格。本质上,它创建了一个访问矩阵,有助于识别认证和授权问题。最终,此过程揭示了哪些用户可以访问特定页面内容。 - 你可以右键单击任何请求并导航到 'Extensions > Agartha > Auth Matrix' 来定义**用户会话**。 - 接下来,你需要提供用户(HTTP 头/session 所有者)可以访问的 **URL 地址**。你可以利用网络 'Spider' 功能进行自动抓取,或者提供一个手动整理的 URL 列表。 - 之后,你可以使用 **'Add User'** 按钮来包含用户会话。 - 现在,它已准备好执行。只需点击 **'Run'** 按钮,表格就会相应地被填充。
更多细节:
1. 这是你为你提供的会话输入用户名的字段。你最多可以添加四个不同的用户,每个用户被分配一种独特的颜色以提高可读性。
- 'Add User' 按钮允许你在矩阵中包含用户会话。
- 你可以将 HTTP 请求方法更改为 'GET'、'POST' 或 'Dynamic',后者基于代理历史。
- 'Reset' 按钮清除所有内容。
- 'Run' 按钮执行任务,在用户访问矩阵中显示结果。
- 'Warnings' 部分使用不同的颜色突出显示潜在问题,以便于识别。
- 'Spider (SiteMap)' 按钮根据用户的 header/session 自动生成 URL 列表。可见的 URL 将填充到下一个文本框中,你仍然可以根据需要在其中进行修改。
- 'Crawl Depth' 定义 'Spider' 为检测链接应抓取的最大子链接数。
2. 该字段用于指定请求头,所有 URL 将使用此处定义的会话进行访问。
3. 指定用户可以访问的 URL 地址。你可以手动创建此列表或利用 **'Spider'** 抓取功能。确保为每个用户提供可访问的 URL 列表。
4. 所有提供的 URL 都将列在这里,并尝试使用相应的用户会话进行访问。
5. 第一列代表没有认证尝试的场景。所有的 cookie、token 和潜在的会话参数将从 HTTP 调用中删除。
6. 其余的列对应于先前生成的用户,每列都标有独特的颜色以指示相应的 URL 所有者。
7. 单元格标题显示每个用户会话的 HTTP 响应 'codes:lengths',为每次访问尝试的响应细节提供清晰的概览。
8. 只需点击你想检查的单元格,HTTP 细节就会显示在底部。
请注意,潜在的会话终止符(如 logoff、sign-out 等)和特定的文件类型(如 CSS、图片、JavaScript 等)将从 'Spider' 和用户的 URL 列表中过滤掉。
点击 'RUN' 后,该工具将用不同的颜色填充用户和 URL 矩阵。除了用户特定的颜色外,你还会看到红色、橙色和黄色的单元格,指示可能存在的访问问题。
- **红色**突出显示严重的访问违规,表现为响应返回带有相同内容长度的 'HTTP 200'。
- **橙色**表示需要注意的中度问题,表现为响应返回 'HTTP 200' 但具有不同的内容长度。
- **黄色**表示响应返回 'HTTP 302' 状态,意味着重定向。
手头的任务涉及一个批量过程,值得一提的是将使用哪些 HTTP 请求方法。该工具为执行 HTTP 调用提供了三个不同的选项:
- **GET**,所有请求都使用 GET 方法发送。
- **POST**,所有请求都使用 POST 方法发送。
- **Dynamic**,请求方法由代理历史决定。如果没有可用的信息,默认将使用基础 header 方法。
## 403 绕过 HTTP 403 Forbidden 状态码表示服务器理解了请求但拒绝授权它。本质上,它的意思是:“我认识你是谁,但你缺乏访问此资源的权限。”此状态通常指向“权限不足”、“需要认证”、“IP 限制”等问题。 该工具通过采用各种技术(如 URL 操作和请求头修改)来解决常见的访问禁止错误。这些策略旨在绕过访问限制并检索所需的内容。 值得一提的是两种不同的使用案例: 1. 在与**认证问题**相关的场景中,考虑删除所有会话标识符是至关重要的。这样做之后,测试是否有任何资源变为公开可访问。此方法有助于识别未经认证的访问,并确保敏感信息受到保护。 2. 对于**提权和授权**测试,保留会话标识符但将其使用限制在特定的用户角色。例如,你可以使用普通用户的会话,同时替换为管理员的 URL。这种有针对性的方法允许进行更精确和高效的测试,确保在没有适当角色的情况下无法访问特权资源。 你可以通过两种方式向该工具发送 HTTP 请求。 1. 你可以通过点击“Load Requests”按钮从代理历史加载请求。这样做会自动删除所有会话标识符,使其适用于攻击**案例 1**。任何潜在的会话终止符(如 logoff、sign-out 等)和特定的文件类型(如 CSS、图片、JavaScript 等)也将被过滤掉。请注意,这将是一个批量过程,可能会花费更长时间,因为它涉及从历史记录中重新访问每个 HTTP 请求。然而,这种对所有 endpoint 的全面验证对于确保认证机制至关重要 2. 你可以通过右键单击发送单个请求。会话标识符将被保留/保持不变,使此方法适用于攻击**案例 2**。这种受控的方法允许你评估在没有适当角色的情况下是否可以访问特权资源。它将更加具体和快速,因为用户将选择要测试的 URL,而不是从历史记录中复制所有内容。
我们旨在访问的页面属于特权用户组,我们保留我们的会话标识符以验证提权是否可行。
只需点击 'RUN' 按钮即可执行任务。 下图说明该 URL 可能存在访问问题,其中“红色”表示警告。
1. 通过选择目标 hostname 并点击“Load Requests”按钮,从代理历史记录中加载请求。
- **启用过滤器**:由于处理 HTTP 历史记录中的所有 URL 是一项批量任务,此部分提供了应用匹配条件的选项。
- 启用 URL 分组功能(实验性)旨在消除仅因唯一 ID 而异的类似 endpoint,将它们计为单个条目。
- 你可以选择仅加载过去 n 天的 URL。
- 你还可以指定某些关键字来控制加载哪些 URL,例如:/admin/, user
2. URL 和 Header 细节
3. 请求尝试和结果
4. HTTP 请求和响应
请注意,尝试次数取决于特定的目标 URL。
## 复制为 JavaScript 该功能支持将 HTTP 请求转换为 JavaScript 代码,这对于深入挖掘 XSS 漏洞和绕过 header 限制特别有用。 要使用此功能,只需右键单击任何 HTTP 请求并选择 'Extensions > Agartha > Copy as JavaScript'。
它会自动保存到你的剪贴板,包括一些供你参考的额外注释。例如:
```
Http request with minimal parameters:
Http request with header fields:
```
请注意,JavaScript 代码将在原始用户会话中执行,许多 header 字段会由浏览器自动填充。但是,在某些情况下,服务器可能需要特定的必填 header 字段。例如,如果 'Content-Type' 不正确,某些请求可能会失败。因此,你可能需要调整代码以确保与服务器的需求兼容。
## Bambdas 代码生成器 Bambdas 是直接在 Burp Suite 中运行的轻量级脚本,允许用户快速自定义和自动化各种任务。它们可用于定义自定义的匹配和替换规则、添加动态表格列、应用过滤器,以及定制界面以更好地适应特定的测试工作流程。
说明,更多细节:
1. 关于脚本创建 GUI,你可以在此处选择常规设置。例如:
- 仅处理范围内的地址或所有域名地址。
- 是否隐藏特定的文件扩展名。
- 在 scope 部分定义的 URL 的颜色,位于第 3 组的第一部分。
- 已经测试过的 URL 的颜色,位于第 3 组的第二部分。
- 主要在第 2 组中定义的过滤器的颜色。
- 要显示的过去天数。
- 脚本要处理的过去天数。
2. 第二部分中的选项主要与处理 HTTP 请求和响应有关:
- 提供选项以指定搜索条件应应用于 URL、请求还是响应。选择其中任何一项将激活下方相应的选项。例如,如果你想搜索“易受攻击的 JavaScript 函数”,这只能在 HTTP 响应中实现。
- 隐藏特定 HTTP 方法的选项。
- “搜索 HTML 注释”、“可下载的文件扩展名”和“易受攻击的 JS 函数”通常在 HTTP 响应中搜索。
- “有价值的关键字”搜索可应用于 URL、请求和响应。
- “SQLi 可疑标识符、XSS 可疑标识符、LFI 可疑标识符、SSRF 可疑标识符、开放重定向可疑标识符和 RCE 可疑标识符”可以在 URL 或请求中搜索。与搜索自由文本的“有价值的关键字”不同,这些选项专门检测参数。
3. 第三部分中的选项主要用于定义 scope、已经测试过的 URL 以及你想要隐藏的 URL。
- 你可以在“Definition of testing scope”部分定义要测试的 URL。如果你输入 /,整个应用程序将被视为在范围内;如果你添加特定路径如 /users,则只有该目录及其内容才在范围内。“Color for testing scope”选项适用于此部分。
- “Already Tested URLs”部分包含已经测试过的 URL 列表。“Color for tested items”选项适用于此处。
- “Black-Listed URLs”部分包含你希望从代理历史记录中隐藏的 URL。
**定义示例**:
- /
- Root 路径 — 包含所有内容。
注意:除了测试和已测试的 scope 定义外,它还可以应用于 Black-Listed URLs 部分,在该部分中它排除所有内容,除非定义了匹配标准。
- /portal/users
- 特别包含此路径及其子路径,例如:
- /portal/users?id=1
- /portal/users/?id=1
- /portal/users/dashboard
- /admin/\*/users/\*/class
- 星号 (*) 作为 ID、UUID 等的占位符,路径的其余部分将被包含。
- /api/v\*/user
- 星号 (*) 作为通配符,匹配 **v** 之后直到下一个 '/' 的任何字符序列,例如:
- /api/v1/user
- /api/v2/user
- /health-check
- 特别包含此路径及其子路径,例如:
- /health-check
- /health-check/Monitor
- /health-check/?Level=Info
4. 最后,第四部分是显示通过点击“Run”按钮生成的脚本的地方,该脚本现在可以使用了。通常,此脚本可以通过两种不同的方式添加:
- 临时(基于项目):从应用菜单中,转到 Proxy > HTTP History > Bambda Mode > Apply & Close。
- 永久(应用全局):从应用菜单中,转到 Extensions > Bambda Library > New > Blank > View filter + HTTP history > Save & Close。
**请注意**:启用所有选项,特别是对于大型项目,可能会导致大量的系统资源使用和增加的处理时间。如果你创建的脚本未能在合理的时间内完成,修改它可能会有所帮助。
**选项优先级**:最高优先级是 'Color for tested items',其次是 'Color for testing scope',最后是 'Color for parameters/keywords'。
上图说明了以下内容:
- **粉色**表示测试 scope(第 3 组的第一部分)。
- **黄色**表示已测试的 scope(第 3 组的第二部分)。
- **青色**突出显示搜索条件的匹配项(第 2 组)。此外,你可以在每次 HTTP 调用的 'Notes' 部分看到匹配的条件。
如果你以后更新或修改已经创建的脚本,有几个重要的点需要记住:
- 如果你将脚本设置为永久(应用全局),你将需要按照以下步骤重新加载它:
Bambda Script mode > Load
- 如果你将脚本用作临时(基于项目),通常有两个选项:
1. 如果你希望修改后的脚本从该点起处于活动状态,则无需执行任何额外步骤——只需点击 Apply。
2. 如果你希望修改后的脚本处理整个代理历史记录,你必须重新启用 Bambda Mode,或者在脚本内部切换布尔 resetScreen 参数:
// 'true' 清除颜色/注释
// 'false' 执行脚本
boolean resetScreen = false; // 或 true
[另一个教程链接](https://www.linkedin.com/pulse/agartha-lfi-rce-auth-sqli-http-js-volkan-dindar)
Agartha 专注于高级 payload 生成和访问控制评估。它能够熟练识别与注入攻击以及认证/授权问题相关的漏洞。动态 payload 生成器为各种注入向量制作广泛的字典,包括 SQL 注入(SQLi)、本地文件包含(LFI)和远程代码执行(RCE)。此外,该扩展构建了全面的用户访问矩阵,揭示潜在的访问违规和提权路径。它还协助执行 HTTP 403 绕过检查,揭示认证配置错误。另外,它可以将 HTTP 请求转换为 JavaScript 代码,以帮助进一步挖掘 XSS 问题。 总结如下: - **Payload 生成器**:它动态构建用于注入攻击的全面字典,结合各种编码和转义字符以提高安全测试的有效性。这些字典涵盖了严重漏洞,如 SQL 注入(SQLi)、本地文件包含(LFI)、远程代码执行(RCE),现在还支持 BCheck 语法,以便与 Burp 的 BCheck 框架无缝集成。 - **本地文件包含,路径遍历**:它有助于识别允许攻击者访问服务器文件系统上文件的漏洞。 - **远程代码执行,命令注入**:它旨在检测潜在的命令注入点,实现对代码执行漏洞的稳健测试。 - **SQL 注入**:它协助发现 SQL 注入漏洞,包括 Stacked Queries、Boolean-Based、Union-Based 和 Time-Based。 - **认证矩阵**:通过构建全面的访问矩阵,该工具揭示了潜在的访问违规和提权路径。此功能通过解决认证和授权问题来增强安全态势。 - 你可以使用网络 **Spider** 功能生成站点地图/URL 列表,它会自动从用户会话中抓取可见链接。 - **403 绕过**:它旨在解决常见的访问限制,例如 HTTP 403 Forbidden 响应。它利用 URL 操作和请求头修改等技术来绕过实施的限制。 - **复制为 JavaScript**:它将 HTTP 请求转换为 JavaScript 代码,用于进一步的 XSS 利用等。 - **Bambdas 脚本生成器**:该功能支持根据用户输入自动生成 Bambdas 兼容的脚本。它消除了手动编码的需要,实现了更快地创建自定义脚本,并简化了与 Bambdas 引擎的集成。
这里有一个关于如何使用的小教程。 ## 安装 你应该先下载“Jython”文件并设置你的环境: - Burp 菜单 > Extender > Options > Python Environment > 定位 Jython standalone jar 文件。 你可以通过官方商店安装 Agartha: - Burp 菜单 > Extender > BApp Store > Agartha 或者进行手动安装: - Burp 菜单 > Extender > Extensions > Add > Extension Type: Python > Extension file(.py): 选择 'Agartha.py' 文件 完成所有操作后,你将在主窗口中看到“Agartha”标签页,并且它还会在右键菜单中注册,位于: - 'Extensions > Agartha',包含三个子菜单: - **'Auth Matrix'** - **'403 Bypass'** - **'Copy as JavaScript'**
## 本地文件包含 / 路径遍历 它支持 Unix 和 Windows 文件语法,能够为任何所需路径动态生成字典。此外,它还可以尝试通过多种编码和其他技术来绕过 Web 应用防火墙(WAF)。 - **'Depth'** 指定用于生成字典的目录遍历深度。你可以创建达到或等于此指定级别的字典。默认值为 5。 - **'Waf Bypass'** 询问你是否要启用所有绕过功能,例如使用空字节、各种编码技术以及其他规避 Web 应用防火墙的方法。

## 远程代码执行 / 命令注入 它根据提供的命令生成用于命令执行的动态字典。它结合了 Unix 和 Windows 环境的各种分隔符和终止符。 - **'URL Encoding'** 对输出进行编码。

## SQL 注入 它为各种类型的 SQL 注入攻击生成 payload,包括 Stacked Queries、Boolean-Based、Union-Based 和 Time-Based。它不需要任何用户输入;你只需选择所需的 SQL 攻击类型和数据库,它就会生成具有不同组合的字典。 - **'URL Encoding'** 对输出进行编码。 - **'Waf Bypass'** 询问你是否要启用所有绕过功能,例如使用空字节、各种编码技术以及其他规避 Web 应用防火墙的方法。 - **'Union-Based'** 需要 payload 生成的指定深度。你可以创建达到给定值的字典。默认值为 5。 - 其余方面涉及数据库类型和各种攻击向量。

## BCheck 代码生成器 BCheck 是 Burp Suite 用于创建和导入自定义扫描检查的框架。这些用户定义的检查与 Burp Scanner 的内置例程一起运行,允许你针对特定漏洞或测试需求定制扫描。通过使用 BChecks,你可以扩展 Burp 的扫描功能,并简化你的工作流程,以实现更有针对性和高效的评估。 现在你可以自动生成代码:
- 你可以点击上面蓝框中的“**Generate the Payloads**”按钮来创建一个经典的字典,可以在 Burp 的 Intruder 或 Repeater 中手动使用。
- 现在,你还可以点击红框中的“**Generate payloads for BCheck**”按钮,生成采用 BCheck 语法格式化的相同 payload,准备好在扫描中使用。
请注意,随着 Bambdas 脚本大小的增加,它可能会导致性能问题,尤其是在扫描期间。较大的脚本可能会减慢响应速度,增加内存使用量,并导致执行任务时的延迟。
点击“Generate payloads for BCheck”按钮后,BCheck 代码将自动复制到你的剪贴板。
接下来,从 Burp Suite 菜单转到 'Extensions > BChecks > New > Blank',然后直接粘贴生成的代码。
你的 payload 现在已集成到 BCheck 中。你可以手动发送或扫描 HTTP 请求,或者发起一个包含 BCheck 控制的 Burp 扫描,以自动测试该工具生成的注入 payload。
- **手动扫描**:右键单击 HTTP 请求并选择“Send to BChecks Editor”。然后点击生成的 BCheck 项并选择“Run test”。
- **自动扫描**:右键单击 HTTP 请求,选择“Open Scan Launcher”,然后转到“Scan configuration > Select from library > Audit checks – BChecks only”。关闭对话框,你的扫描现在将仅使用你定义的 BChecks 运行。
**微调建议**:生成的代码作为一个模板,可能需要进行一些调整,因为行为在不同的应用程序和服务器之间可能会有所不同。
优化过滤器(例如指定 HTTP 响应代码或响应中的关键字)可以帮助减少误报,使结果更精确、噪音更小。## 授权矩阵 / 用户访问表 这部分侧重于分析用户会话和 URL 之间的关系,以识别访问违规。该工具系统地访问与预定义用户会话关联的所有 URL,并用 HTTP 响应填充表格。本质上,它创建了一个访问矩阵,有助于识别认证和授权问题。最终,此过程揭示了哪些用户可以访问特定页面内容。 - 你可以右键单击任何请求并导航到 'Extensions > Agartha > Auth Matrix' 来定义**用户会话**。 - 接下来,你需要提供用户(HTTP 头/session 所有者)可以访问的 **URL 地址**。你可以利用网络 'Spider' 功能进行自动抓取,或者提供一个手动整理的 URL 列表。 - 之后,你可以使用 **'Add User'** 按钮来包含用户会话。 - 现在,它已准备好执行。只需点击 **'Run'** 按钮,表格就会相应地被填充。
更多细节:
1. 这是你为你提供的会话输入用户名的字段。你最多可以添加四个不同的用户,每个用户被分配一种独特的颜色以提高可读性。
- 'Add User' 按钮允许你在矩阵中包含用户会话。
- 你可以将 HTTP 请求方法更改为 'GET'、'POST' 或 'Dynamic',后者基于代理历史。
- 'Reset' 按钮清除所有内容。
- 'Run' 按钮执行任务,在用户访问矩阵中显示结果。
- 'Warnings' 部分使用不同的颜色突出显示潜在问题,以便于识别。
- 'Spider (SiteMap)' 按钮根据用户的 header/session 自动生成 URL 列表。可见的 URL 将填充到下一个文本框中,你仍然可以根据需要在其中进行修改。
- 'Crawl Depth' 定义 'Spider' 为检测链接应抓取的最大子链接数。
2. 该字段用于指定请求头,所有 URL 将使用此处定义的会话进行访问。
3. 指定用户可以访问的 URL 地址。你可以手动创建此列表或利用 **'Spider'** 抓取功能。确保为每个用户提供可访问的 URL 列表。
4. 所有提供的 URL 都将列在这里,并尝试使用相应的用户会话进行访问。
5. 第一列代表没有认证尝试的场景。所有的 cookie、token 和潜在的会话参数将从 HTTP 调用中删除。
6. 其余的列对应于先前生成的用户,每列都标有独特的颜色以指示相应的 URL 所有者。
7. 单元格标题显示每个用户会话的 HTTP 响应 'codes:lengths',为每次访问尝试的响应细节提供清晰的概览。
8. 只需点击你想检查的单元格,HTTP 细节就会显示在底部。
请注意,潜在的会话终止符(如 logoff、sign-out 等)和特定的文件类型(如 CSS、图片、JavaScript 等)将从 'Spider' 和用户的 URL 列表中过滤掉。
点击 'RUN' 后,该工具将用不同的颜色填充用户和 URL 矩阵。除了用户特定的颜色外,你还会看到红色、橙色和黄色的单元格,指示可能存在的访问问题。
- **红色**突出显示严重的访问违规,表现为响应返回带有相同内容长度的 'HTTP 200'。
- **橙色**表示需要注意的中度问题,表现为响应返回 'HTTP 200' 但具有不同的内容长度。
- **黄色**表示响应返回 'HTTP 302' 状态,意味着重定向。
手头的任务涉及一个批量过程,值得一提的是将使用哪些 HTTP 请求方法。该工具为执行 HTTP 调用提供了三个不同的选项:
- **GET**,所有请求都使用 GET 方法发送。
- **POST**,所有请求都使用 POST 方法发送。
- **Dynamic**,请求方法由代理历史决定。如果没有可用的信息,默认将使用基础 header 方法。## 403 绕过 HTTP 403 Forbidden 状态码表示服务器理解了请求但拒绝授权它。本质上,它的意思是:“我认识你是谁,但你缺乏访问此资源的权限。”此状态通常指向“权限不足”、“需要认证”、“IP 限制”等问题。 该工具通过采用各种技术(如 URL 操作和请求头修改)来解决常见的访问禁止错误。这些策略旨在绕过访问限制并检索所需的内容。 值得一提的是两种不同的使用案例: 1. 在与**认证问题**相关的场景中,考虑删除所有会话标识符是至关重要的。这样做之后,测试是否有任何资源变为公开可访问。此方法有助于识别未经认证的访问,并确保敏感信息受到保护。 2. 对于**提权和授权**测试,保留会话标识符但将其使用限制在特定的用户角色。例如,你可以使用普通用户的会话,同时替换为管理员的 URL。这种有针对性的方法允许进行更精确和高效的测试,确保在没有适当角色的情况下无法访问特权资源。 你可以通过两种方式向该工具发送 HTTP 请求。 1. 你可以通过点击“Load Requests”按钮从代理历史加载请求。这样做会自动删除所有会话标识符,使其适用于攻击**案例 1**。任何潜在的会话终止符(如 logoff、sign-out 等)和特定的文件类型(如 CSS、图片、JavaScript 等)也将被过滤掉。请注意,这将是一个批量过程,可能会花费更长时间,因为它涉及从历史记录中重新访问每个 HTTP 请求。然而,这种对所有 endpoint 的全面验证对于确保认证机制至关重要 2. 你可以通过右键单击发送单个请求。会话标识符将被保留/保持不变,使此方法适用于攻击**案例 2**。这种受控的方法允许你评估在没有适当角色的情况下是否可以访问特权资源。它将更加具体和快速,因为用户将选择要测试的 URL,而不是从历史记录中复制所有内容。
我们旨在访问的页面属于特权用户组,我们保留我们的会话标识符以验证提权是否可行。
只需点击 'RUN' 按钮即可执行任务。 下图说明该 URL 可能存在访问问题,其中“红色”表示警告。
1. 通过选择目标 hostname 并点击“Load Requests”按钮,从代理历史记录中加载请求。
- **启用过滤器**:由于处理 HTTP 历史记录中的所有 URL 是一项批量任务,此部分提供了应用匹配条件的选项。
- 启用 URL 分组功能(实验性)旨在消除仅因唯一 ID 而异的类似 endpoint,将它们计为单个条目。
- 你可以选择仅加载过去 n 天的 URL。
- 你还可以指定某些关键字来控制加载哪些 URL,例如:/admin/, user
2. URL 和 Header 细节
3. 请求尝试和结果
4. HTTP 请求和响应
请注意,尝试次数取决于特定的目标 URL。
## 复制为 JavaScript 该功能支持将 HTTP 请求转换为 JavaScript 代码,这对于深入挖掘 XSS 漏洞和绕过 header 限制特别有用。 要使用此功能,只需右键单击任何 HTTP 请求并选择 'Extensions > Agartha > Copy as JavaScript'。
它会自动保存到你的剪贴板,包括一些供你参考的额外注释。例如:
```
Http request with minimal parameters:
Http request with header fields:
```
请注意,JavaScript 代码将在原始用户会话中执行,许多 header 字段会由浏览器自动填充。但是,在某些情况下,服务器可能需要特定的必填 header 字段。例如,如果 'Content-Type' 不正确,某些请求可能会失败。因此,你可能需要调整代码以确保与服务器的需求兼容。
## Bambdas 代码生成器 Bambdas 是直接在 Burp Suite 中运行的轻量级脚本,允许用户快速自定义和自动化各种任务。它们可用于定义自定义的匹配和替换规则、添加动态表格列、应用过滤器,以及定制界面以更好地适应特定的测试工作流程。
说明,更多细节:
1. 关于脚本创建 GUI,你可以在此处选择常规设置。例如:
- 仅处理范围内的地址或所有域名地址。
- 是否隐藏特定的文件扩展名。
- 在 scope 部分定义的 URL 的颜色,位于第 3 组的第一部分。
- 已经测试过的 URL 的颜色,位于第 3 组的第二部分。
- 主要在第 2 组中定义的过滤器的颜色。
- 要显示的过去天数。
- 脚本要处理的过去天数。
2. 第二部分中的选项主要与处理 HTTP 请求和响应有关:
- 提供选项以指定搜索条件应应用于 URL、请求还是响应。选择其中任何一项将激活下方相应的选项。例如,如果你想搜索“易受攻击的 JavaScript 函数”,这只能在 HTTP 响应中实现。
- 隐藏特定 HTTP 方法的选项。
- “搜索 HTML 注释”、“可下载的文件扩展名”和“易受攻击的 JS 函数”通常在 HTTP 响应中搜索。
- “有价值的关键字”搜索可应用于 URL、请求和响应。
- “SQLi 可疑标识符、XSS 可疑标识符、LFI 可疑标识符、SSRF 可疑标识符、开放重定向可疑标识符和 RCE 可疑标识符”可以在 URL 或请求中搜索。与搜索自由文本的“有价值的关键字”不同,这些选项专门检测参数。
3. 第三部分中的选项主要用于定义 scope、已经测试过的 URL 以及你想要隐藏的 URL。
- 你可以在“Definition of testing scope”部分定义要测试的 URL。如果你输入 /,整个应用程序将被视为在范围内;如果你添加特定路径如 /users,则只有该目录及其内容才在范围内。“Color for testing scope”选项适用于此部分。
- “Already Tested URLs”部分包含已经测试过的 URL 列表。“Color for tested items”选项适用于此处。
- “Black-Listed URLs”部分包含你希望从代理历史记录中隐藏的 URL。
**定义示例**:
- /
- Root 路径 — 包含所有内容。
注意:除了测试和已测试的 scope 定义外,它还可以应用于 Black-Listed URLs 部分,在该部分中它排除所有内容,除非定义了匹配标准。
- /portal/users
- 特别包含此路径及其子路径,例如:
- /portal/users?id=1
- /portal/users/?id=1
- /portal/users/dashboard
- /admin/\*/users/\*/class
- 星号 (*) 作为 ID、UUID 等的占位符,路径的其余部分将被包含。
- /api/v\*/user
- 星号 (*) 作为通配符,匹配 **v** 之后直到下一个 '/' 的任何字符序列,例如:
- /api/v1/user
- /api/v2/user
- /health-check
- 特别包含此路径及其子路径,例如:
- /health-check
- /health-check/Monitor
- /health-check/?Level=Info
4. 最后,第四部分是显示通过点击“Run”按钮生成的脚本的地方,该脚本现在可以使用了。通常,此脚本可以通过两种不同的方式添加:
- 临时(基于项目):从应用菜单中,转到 Proxy > HTTP History > Bambda Mode > Apply & Close。
- 永久(应用全局):从应用菜单中,转到 Extensions > Bambda Library > New > Blank > View filter + HTTP history > Save & Close。
**请注意**:启用所有选项,特别是对于大型项目,可能会导致大量的系统资源使用和增加的处理时间。如果你创建的脚本未能在合理的时间内完成,修改它可能会有所帮助。
**选项优先级**:最高优先级是 'Color for tested items',其次是 'Color for testing scope',最后是 'Color for parameters/keywords'。
上图说明了以下内容:
- **粉色**表示测试 scope(第 3 组的第一部分)。
- **黄色**表示已测试的 scope(第 3 组的第二部分)。
- **青色**突出显示搜索条件的匹配项(第 2 组)。此外,你可以在每次 HTTP 调用的 'Notes' 部分看到匹配的条件。
如果你以后更新或修改已经创建的脚本,有几个重要的点需要记住:
- 如果你将脚本设置为永久(应用全局),你将需要按照以下步骤重新加载它:
Bambda Script mode > Load
- 如果你将脚本用作临时(基于项目),通常有两个选项:
1. 如果你希望修改后的脚本从该点起处于活动状态,则无需执行任何额外步骤——只需点击 Apply。
2. 如果你希望修改后的脚本处理整个代理历史记录,你必须重新启用 Bambda Mode,或者在脚本内部切换布尔 resetScreen 参数:
// 'true' 清除颜色/注释
// 'false' 执行脚本
boolean resetScreen = false; // 或 true
[另一个教程链接](https://www.linkedin.com/pulse/agartha-lfi-rce-auth-sqli-http-js-volkan-dindar)
标签:Burp Suite插件, CISA项目, Payload生成, Web安全, 安全测试, 攻击性安全, 蓝队分析, 逆向工具