利用简易Burp宏自动化测试敏感信息泄露

本文详细介绍了如何使用Burp Suite的宏功能自动化测试Web应用中的敏感信息泄露漏洞,包括配置会话处理规则、设置负载位置和提取响应数据,适用于渗透测试人员提升测试效率。

利用简易Burp宏自动化测试

David Fletcher //

最近,在评估一个Web应用时,我注意到某个页面上的内容似乎源自网站用户配置文件中的敏感信息。为了评估此功能并说明敏感信息泄露的潜在风险,我需要:

  • 枚举个人资料页面上的值,以建立敏感信息与衍生值之间的具体关联。
  • 收集并映射公共用户资料目录中的敏感信息,以展示直接关联可以轻松建立。

在测试过程中,我尝试使用Burp Intruder的默认功能来评估此功能,但由于更改反映的方式,我无法轻松枚举值。这主要是由于资料更新页面与内容页面之间的关系。当资料更新时,内容会在应用的另一部分显示。默认情况下,Burp Intruder会更改请求中标识位置的内容并分析响应结果,可选地在指示时跟随重定向。这不足以收集我目标的信息。事后看来,我本可以通过在Burp之外编写请求、响应和重定向脚本来完成此任务。然而,我决心弄清楚如何用Web应用测试人员的首选工具复制此功能。无论如何,为什么不学习如何更有效地使用可用工具呢?

引入Burp宏功能

Burp宏允许您基于会话处理规则任意执行一组操作,该规则可以绑定到Burp的其他集成工具。在这种情况下,我们希望:

  1. 从Burp Intruder提交请求以更新用户资料。
  2. 检查更新是否导致HTTP 200状态码。
  3. 执行后续请求到目标页面以获取衍生内容。
  4. 将响应发送回Burp Intruder。
  5. 分析结果,从页面提取目标信息。

相同场景可应用于其他操作,如发现存储型跨站脚本漏洞(XSS)。扩展功能,宏能够转换请求生成的响应数据,这在分析多步功能(如网站注册功能)时非常有用。

为了说明概念,一个简单网站被模拟以包含等效功能。用户资料编辑页面用于提交用户的生日到应用。相应的用户资料查看页面用于显示衍生信息。两个页面如下图所示。

用户资料更新页面

用户资料查看页面

我们将使用Burp宏功能解析此衍生信息到用户资料中的敏感信息。要找到Burp的宏功能,您需要导航到Options选项卡,然后选择Sessions选项卡。

Burp宏功能位于Options > Session。

结果表单包括我们将用于提取所需信息的两个功能。首先,我们需要定义一个宏来处理表单提交并触发后续请求。其次,我们需要定义一个会话处理规则,以基于Burp Intruder攻击触发宏。

要添加宏,滚动到表单底部,点击Macro对话框中的Add按钮以添加新宏。

添加Burp宏。

历史窗口将出现,以便选择适当的请求。所选请求将在每次宏执行时触发。对于我们的示例网站,当Burp Intruder触发资料更新时,我们希望获取资料查看页面并分析响应。因此,我们选择对ProfileView.aspx页面的调用。

Burp宏请求选择

在这个简单示例中,除了命名宏外,我们不需要做其他事情。完成的宏表单如下所示。提供描述并点击OK完成过程。

完成的Burp宏表单

注意:宏属性可以包括多个请求和响应,这些传递参数从一个表单到下一个,并执行中间转换。这在完成多步过程时非常有用,您可能只想在第一个表单注入内容,并基于中间响应衍生响应。

现在我们的宏已完成,我们需要创建一个会话规则,在看到匹配我们条件的请求时执行宏。在Options > Sessions页面顶部,我们可以找到Session Handling Rules对话框。点击Add创建新的Session Handling Rule。

上图:添加会话处理规则。

Session Handling Rule Editor将出现,Details选项卡默认选中。给处理规则命名并开始添加规则操作。

会话处理规则编辑器

可以添加多个规则以按顺序执行多个操作。对于我们的目的,我们只想执行宏,并在Burp Intruder请求处理后执行。点击Add按钮,选择“Run a post-request macro”选项。

添加后请求宏

Session Handling Action Editor对话框将出现。选择您创建的宏以启动目标页面,取消选择“Update the first macro….”选项,并确保在“Pass back to the invoking tool”下选中“The final response from the macro”选项。由于我们在宏中不处理任何参数,这是不必要的。

选择会话处理操作

点击OK保存规则操作,然后选择Session Handling Rule Editor对话框的Scope选项卡。这允许我们指定此会话处理规则适用的工具、URL和参数。对于此示例,我们只使用Burp Intruder,因此可以安全地取消选择其他工具。我们将URL Scope设置为套件范围(我们应该已经将范围限制到目标网站)。最后,由于我们将使用Burp Intruder处理特定参数,不需要指定参数范围。点击OK保存此Session Handling Rule,我们的宏设置完成。

设置会话处理范围

会话处理规则和宏完成后,我们可以使用Burp Intruder测试配置。首先,选择Proxy > HTTP History选项卡以选择我们要操作的基础请求。在我们的示例网站上,我们寻找包含post参数的ProfileEdit.aspx页面。在请求中,我们应该看到我们要操作的参数(ddlDay、ddlMonth和ddlYear)。

选择目标请求

一旦识别出可接受的请求,将条目发送到Burp Intruder。只需右键点击项目并选择“Send to Intruder”选项。

发送请求到Intruder

选择Intruder > Positions选项卡以配置适当的负载位置。确保只选择Intruder将操作的参数。对于此示例,只有日和月列在产生唯一输出时重要。由于有多个负载位置和多个负载长度,我们需要选择Cluster Bomb攻击类型。Cluster Bomb接受多个负载,并将迭代所有负载组合的排列。由于我们想要多个负载,不能选择Sniper或Battering Ram攻击。同样,由于日和月之间没有一对一关系,不应选择Pitchfork。完成的负载位置表单如下所示。

Intruder Cluster Bomb攻击设置

选择适当的负载位置后,必须定义实际负载。在这种情况下,我们需要简单的整数分别表示日和月。每个负载位置的设置如下所示。我们不关心月份中不同天数的错误处理。我们将简单地忽略应用的任何错误输出。

日负载设置

月负载设置

最后,我们可以通过设置Burp Intruder的选项来完成攻击设置。由于每个请求必须顺序完成,我们不能利用多线程。这意味着Number of Threads必须调整为1。

Intruder攻击选项请求引擎设置

我们还希望在结果窗格中看到枚举值。因此,我们需要设置Grep – Extract规则。选择“Extract the following items from responses”复选框,并点击Add按钮添加提取规则。

添加Grep – Extract规则

此步骤有些棘手。Burp Intruder期望我们在随操作请求转发的响应中找到要提取的内容。由于我们的宏,我们将收到完全不同的响应。因此,我们不能使用内置工具识别提取位置。有助于加载HTTP History或另一个带有资料查看请求的Intruder会话。

返回到Proxy > HTTP History选项卡,将ProfileView.aspx的一个请求发送到Burp Intruder。

发送ProfileView.aspx请求到Intruder

一旦此请求发送到Intruder,选择Intruder > Options选项卡,滚动到Grep – Extract选项,并点击Add按钮。现在,我们正在处理我们期望在原始Intruder攻击中收到的请求。选择您感兴趣匹配的文本(在这种情况下,可能是文本中或内联样式中标识的颜色)。Burp将创建唯一的匹配表达式以找到此文本位置。将每个表达式复制到文本文件中,以便可以输入到正确的Grep – Extract表单中。ProfileView.aspx的Grep – Extract表单和我们真实攻击的已完成Grep – Extract表单如下所示。

源Grep – Extract表单

目标Grep – Extract表单

所有其他Burp Intruder选项可以保留默认值。现在,设置完成后,唯一要做的就是启动攻击。点击Start Attack按钮,并观察Intruder Attack窗口中的详细信息。以下输出标识了日(Payload1)、月(Payload2)和相应值(“lblColorName”>)。此数据现在可以通过使用Save > Results Table选项用作查找表。

枚举的敏感数据关系

使用另一个Intruder攻击,可以查看网站用户的公共资料,并使用后续的Grep – Match或Grep – Extract来标识其生日的日和月。

希望本文说明了Burp宏的简单威力。虽然此示例本可以通过脚本同等很好地执行,但我们现在有一个Burp状态文件来伴随我们的方法描述。此外,此Burp宏介绍应该让您思考如何使用此功能执行涉及将参数从一个阶段传递到下一个阶段的更高级攻击。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计