BurpSuite-即时入门(全)

BurpSuite 即时入门(全)

原文:annas-archive.org/md5/B07FFA5BD37B3994CD3B558CBA80DDF8

译者:飞龙

协议:CC BY-NC-SA 4.0

第一章:即时 Burp Suite 入门指南

欢迎来到即时 Burp Suite 入门指南。本书特别为您提供了所有您需要设置 Burp Suite 的信息。您将学习 Burp Suite 的基础知识,开始测试您的第一个应用程序,并发现一些使用 Burp Suite 的技巧和窍门。

本文档包含以下部分:

那么,Burp Suite 是什么? - 了解 Burp Suite 实际上是什么,您可以用它做什么,以及为什么它如此出色。

安装 - 学习如何下载和设置 Burp Suite,以便您尽快使用它。

快速开始 - 本节将向您展示如何执行 Burp Suite 的核心任务之一;拦截 HTTP/S 请求并进行篡改。按照步骤拦截、检查和修改客户端和服务器之间的 HTTP/S 流量。

您需要了解的前 8 个功能 - 在这里,您将学习如何使用 Burp Suite 的最重要功能执行八项任务。在本节结束时,您将能够使用目标站点地图功能,爬行 Web 应用程序,启动扫描以检测安全漏洞,自动化定制攻击,操纵和迭代 Web 请求,分析应用程序数据的随机性,解码和编码多种格式的数据,并比较站点地图以检测授权错误。

您应该了解的人和地方 - 每个安全项目都围绕着一个社区。本节为您提供了许多有用的链接到项目页面和论坛,以及关于 Burp Suite 的许多有用文章、教程和博客。

那么,Burp Suite 是什么?

Burp Suite 是一个易于使用的集成平台,用于 Web 应用程序安全。Burp 包括多个工具,它们无缝集成,允许您测试现代 Web 应用程序的每个组件和方面。无论您需要验证身份验证机制的健壮性、会话令牌的可预测性,还是应用程序中存在的输入验证检查点,Burp 都是安全从业人员的瑞士军刀。它不仅允许深入的手动评估,还结合了自动化技术来枚举和分析 Web 应用程序资源。

Burp 由 PortSwigger Ltd. 开发,并分为两个版本:

  • Burp 免费版

  • Burp 专业版

注意

尽管专业版包含自动 Web 应用程序扫描程序和许多增强功能,但免费版本是完美的起点,因为它包含了您发现第一个漏洞所需的所有基本工具。如果您想了解两个版本之间的区别以及专业许可证的成本,请访问工具的官方网站 www.portswigger.net

在其本质上,Burp 是一个本地 Web 代理,允许拦截、检查和修改用户浏览器和目标网站之间的 HTTP/S 请求和响应。当用户浏览 Web 应用程序时,该工具会获取有关所有访问页面、脚本、参数和其他组件的详细信息。浏览器和服务器之间的流量最终可以被可视化、分析、修改和多次重复。Burp Suite 中包含的不同工具可以通过上方的标签轻松区分:

  • 目标:此工具允许聚合所有 Web 应用程序资源,从而引导用户进行安全测试。

  • 代理:这是工具的核心组件,允许拦截和修改所有 Web 流量。

  • 蜘蛛:可以用于发现新页面和参数的自动爬虫。

  • 扫描器:仅在专业版中提供的完整 Web 应用程序安全扫描器。

  • 入侵者:Burp Intruder 允许自定义和自动化 Web 请求。多次重复相同的请求并使用不同的内容可以执行模糊测试。Web 模糊测试通常包括向目标应用程序发送意外的输入。这个过程可能有助于识别安全漏洞。

  • 重发器:一个简单但功能强大的工具,可用于手动修改和重新发出 Web 请求。

  • 顺序器:Burp Sequencer 是验证安全令牌、Cookie 等随机性和可预测性的完美工具。

  • 解码器:它允许使用多种编码方案(例如 URL 编码)或常见哈希函数(例如 MD5)对数据进行编码和解码

  • 比较器:一个可视的diff工具,可用于检测网页之间的变化。

Burp 的主窗口显示在以下截图中:

那么,Burp Suite 是什么?

安装

通过几个简单的步骤,您可以设置 Burp Suite 和您的浏览器。

第 1 步 - 我需要什么?

在开始之前,您需要检查系统要求,如下所列:

  • 磁盘空间:至少 100MB 可用。磁盘空间用于临时文件、保存配置和 Burp 的状态文件。

  • 内存:至少 2GB。这个内存量通常足够了。如果您正在测试一个大型应用程序,可能需要更多。

  • 操作系统:Burp Suite 适用于 Windows、Mac OS X 和 Linux

  • 软件组件:运行 Burp Suite 需要更新的 Oracle Java 运行环境(v1.6 或更高版本)。也可以使用 OpenJDK,尽管它没有得到官方支持。另外,请确保安装最新版本的现代浏览器(Firefox、Internet Explorer、Chrome、Safari 或 Opera)。作者建议使用 Mozilla Firefox。

第 2 步 - 下载 Burp Suite

Burp Suite 可以从www.portswigger.net/burp/download.html下载为压缩包。

我建议您下载免费版本并开始评估软件的基本功能。最终,您可能决定购买专业版本的许可证,以获得所有高级功能。

下载并解压缩存档后,您将得到一个包含 Java 存档(JAR)文件的文件夹。

第 3 步 - 启动 Burp Suite

在撰写本文时,最新的免费版本中,Burp Suite 的 JAR 文件名为burpsuite_v1.4.01.jar。可以使用以下命令启动这个可执行的 Java 存档。

Windows

  1. 点击开始

  2. 点击运行

  3. 输入cmd并按Enter

  4. 使用命令cd(例如cd burpsuite_v1.4.01)移动到包含 Burp 的 JAR 的文件夹。

  5. 使用java -Xmx2g -jar burpsuite_v1.4.01.jar启动 Burp。

Linux 和 Mac OS X

  1. 打开终端。

  2. 使用命令cd(例如cd burpsuite_v1.4.01)移动到包含 Burp 的 JAR 的文件夹。

  3. 使用java -Xmx2g -jar burpsuite_v1.4.01.jar启动 Burp。

选项-Xmx2g用于增加分配给 Java 的最大内存达到 2GB。

请注意,在某些平台上(例如 Windows),可以通过双击 JAR 文件来启动 Burp Suite。但是,以这种方式执行 Burp 不允许您自定义工具的最大可用内存。

几秒钟后,主 Burp Suite 窗口将出现在屏幕中央。如果没有出现,我们建议仔细检查所有命令,并仔细阅读命令行中的任何错误消息。常见错误包括错误的权限或不正确的路径。

第 4 步 - 验证 Burp 代理配置

Burp 代理充当浏览器到目标 Web 应用程序的请求的中间人。因此,即使正确配置了,直到连接浏览器,这一点也不会立即显现。

第 4 步 - 验证 Burp 代理配置

Burp 代理如何与浏览器和目标网站交互

默认情况下,Burp 代理配置为监听端口8080/tcp。要验证计算机上没有其他软件干扰它(例如使用相同的 TCP 端口),可以在代理 | 选项选项卡中检查代理监听器。如果运行复选框被标记,Burp 代理已准备好接收来自浏览器的请求。如果出现错误,您将注意到警报选项卡中存在异常。在某些情况下,可能需要更改端口并重新启动监听器,只需单击运行复选框即可。

步骤 4-验证 Burp 代理配置

Burp 代理配置

可以通过选择代理项目并单击编辑来修改配置。例如,您可以通过在本地监听器端口文本框中输入新的端口号,然后单击更新来更改端口。最后,如果尚未选择,再次单击运行复选框以启动监听器。

如果选择了仅回环复选框,则 Burp 代理将仅允许来自本地计算机的连接。否则,如果其他计算机需要远程访问 Burp,则可以取消选择此选项。

注意

请注意,由于安全影响,不建议将 Burp 代理监听器暴露给网络中的其他主机。

如果您正在测试标准的 Web 应用程序,可以跳过步骤 5-配置浏览器。在大多数情况下,这些是 Burp 代理所需的唯一配置。

在特定情况下,例如测试独立客户端或通过 HTTP/S 通信的移动应用程序时,您可能需要选择支持不可见代理的客户端复选框,并手动在适当的字段中输入目标主机和端口。这样,Burp 将处理所有非代理样式的请求,允许您将所有流量重定向到目标主机。

步骤 5-配置浏览器

在这个阶段,只需要配置您喜欢的浏览器,以便通过 Burp 代理重定向所有 HTTP/S 请求,而不是实际的目标网站。如果在上一步中没有更改 Burp 的默认配置,则需要将代理主机地址设置为127.0.0.1,将代理端口设置为8080,分别用于 HTTP 和 HTTPS。

为两种最常见的浏览器提供了逐步配置:Mozilla Firefox 和 Internet Explorer。对于其他浏览器,如 Safari、Chrome 和 Opera,请参考官方浏览器文档。我建议您使用 Mozilla Firefox,因为它非常灵活。此外,在撰写本文时,Mozilla Firefox 不包含任何可能干扰您测试的嵌入式反跨站脚本XSS)过滤器。

Mozilla Firefox

  1. 转到 Firefox 菜单,然后单击首选项

  2. 高级选项中,在网络选项卡下,单击连接设置。

  3. 选择手动代理配置

  4. 输入代理主机地址(例如127.0.0.1)和代理端口(例如8080),如步骤 4-验证 Burp 代理配置中配置的那样。

  5. 选择为所有协议使用此代理服务器

  6. 确保从“不使用代理服务器的地址”字段中删除所有异常。

  7. 单击确定并关闭所有窗口。Mozilla Firefox

Mozilla Firefox 中的代理配置

Microsoft Internet Explorer

  1. 转到工具菜单,然后单击Internet 选项

  2. 连接选项卡下,单击LAN 设置

  3. 选择为您的局域网使用代理

  4. 单击高级

  5. 在“HTTP”字段中,输入代理主机地址(例如127.0.0.1)和代理端口(例如8080)。

  6. 选择对所有协议使用相同的代理服务器

  7. 确保从“不使用代理服务器的地址”字段中删除所有异常。

  8. 单击确定并关闭所有窗口。

Microsoft Internet Explorer

Internet Explorer 中的代理配置

无论使用的具体浏览器是什么,都要确保禁用所有可能干扰 Burp Suite 的扩展和附加功能。这些包括第三方代理插件和安全增强功能(例如,反 XSS 过滤器,NoScript 等)。如果可能的话,为测试目的创建一个专用配置文件。

就是这样!

到目前为止,您应该已经安装了 Burp Suite,并且您的浏览器应该被正确配置以拦截所有请求。

转到浏览器,输入www.packtpub.com/在地址栏中并按Enter。如果一切都配置正确,Burp 代理应该拦截您的请求。在 Burp Suite 中,转到代理 | 拦截标签,并验证网页请求是否在等待您的批准。

拦截开按钮应该被突出显示;点击它并允许请求通过 Burp。回到浏览器,您应该看到 Packt Publishing 页面像往常一样显示。此外,您可以观察到,在目标 | 站点地图标签下,正在填充资源树。

注意

确保不时验证 Burp 代理拦截配置。如果您正在浏览一个应用程序,而您的浏览器没有加载页面,那么 Burp 可能正在停止请求或响应。

如果您的浏览器行为不同,或者事情不像描述的那样工作,请重复之前的步骤,确保 Burp 代理正在正确监听,并且浏览器已经配置好以连接到 Burp。

假设您已经成功设置了 Burp Suite,现在是时候开始测试您的应用程序了。

还有一件事...

正如您已经知道的,Burp Suite 支持 HTTP 和 HTTPS。后者是一种广泛使用的用于浏览器和服务器之间安全通信的协议。如今,HTTPS 是保护在线购物、互联网银行和其他敏感操作的标准。使用这个协议,HTTP 被封装在 SSL/TLS 层上。HTTPS 保护数据传输免受网络嗅探和所谓的中间人MitM)攻击。

在我们的设置中,Burp Suite 被准确配置为中间人,因为它应该窃听所有请求和响应。作为一个副作用,通过访问 HTTPS 网页(例如,www.twitter.com),您会注意到浏览器最初显示一个安全警告。例如,在 Firefox 中,您会看到一个此连接不受信任页面。在这些情况下,您需要通过点击我了解风险,然后添加例外...,再次确认安全例外来手动批准连接。为了确保 Burp 代理实际上引起了警告,您可能想要点击证书状态查看...并验证证书是否属于 PortSwigger CA。

还有一件事...

Mozilla Firefox 中的无效证书警告

同样地,使用 Internet Explorer 或其他浏览器,可以绕过安全警告并继续导航。例如,在 Google Chrome 中,您可以在警告页面上简单地点击继续

注意

请注意,我们是有意地调整浏览器以允许流量窃听。因此,强烈建议在使用 Burp Suite 时不要进行在线购物、查看电子邮件、访问银行门户或其他敏感活动。事实上,强烈建议只在专门为测试目的配置的浏览器上使用 Burp。

快速开始 - 使用 Burp 代理

Burp 代理是整个 Burp Suite 的关键组件。这个工具允许您拦截浏览器(客户端)和目标应用程序(服务器)之间的网络流量。由于在前一节中描述的设置,我们现在能够深入了解网络应用程序的工作原理。

在 Burp 代理的顶部,您会注意到以下三个标签:

  • 拦截:可以从此窗口检查和修改传输中的 HTTP 请求和响应

  • 选项:可以从此窗口调整代理配置和高级首选项

  • 历史记录:所有拦截的流量可以从此窗口快速分析

注意

如果您不熟悉 HTTP 协议,或者想要复习您的知识,HTTP Made Really Easy, A Practical Guide to Writing Clients and Servers,可以在www.jmarshall.com/easy/http/找到一个简洁的参考资料。

第 1 步 - 拦截网络请求

启动 Burp 并配置浏览器后,让我们拦截我们的第一个 HTTP 请求。在这个练习中,我们将拦截对发布者网站的简单请求:

  1. 拦截选项卡中,确保 Burp 代理通过检查拦截按钮正确停止所有传输中的请求。这应该标记为拦截已开启

  2. 在浏览器中,键入www.packtpub.com/,然后按Enter

回到 Burp 代理,您应该能够看到浏览器发出的 HTTP 请求。在这个阶段,请求暂时停在 Burp 代理中,等待用户要么转发要么停止它。

例如,按下前进并返回到浏览器。您应该看到 Packt Publishing 的主页,就像您通常与网站交互一样。

  1. 同样,在 URL 栏中键入www.packtpub.com/,然后按Enter

  2. 这次让我们按下丢弃

回到浏览器,页面将包含警告Burp 代理错误:消息被用户丢弃。我们已经丢弃了请求,因此 Burp 代理没有将请求转发给服务器。结果,浏览器收到了一个临时的 HTML 页面,其中包含了 Burp 生成的警告消息,而不是原始的 HTML 内容。

  1. 让我们再试一次。在浏览器的 URL 栏中键入www.packtpub.com/,然后按Enter

一旦 Burp 代理正确捕获了请求,操作按钮就会变为活动状态。单击它以显示上下文菜单。这是一个重要的功能,因为它允许您将当前的网络请求导入到其他 Burp 工具中。

您已经可以想象到拥有一套集成工具的潜力,可以让您如此轻松地操纵和分析网络请求。例如,如果我们想解码请求,我们可以简单地点击发送到解码器

第 1 步 - 拦截网络请求

Burp 代理

在 Burp 代理中,我们还可以决定自动转发所有请求,而不必等待用户转发或丢弃通信。通过点击拦截按钮,可以从拦截已开启切换到拦截已关闭。然而,代理将记录所有传输中的请求。

此外,Burp 代理还允许您自动拦截所有符合特定特征的响应。从 Burp 代理选项选项卡中的拦截服务器响应部分查看可用的众多选项。例如,如果客户端的请求被拦截,就可以拦截服务器的响应。这在测试输入验证漏洞时非常有帮助,因为我们通常对所有篡改的请求评估服务器的响应感兴趣。或者,您可能只想拦截和检查具有特定返回代码的响应(例如,200 OK)。

第 2 步 - 检查网络请求

一旦请求被正确拦截,就可以使用四个 Burp 代理消息分析选项卡之一来检查整个内容、标头和参数:

  • 原始:此视图允许您在简单的文本编辑器中以原始格式显示网络请求。这是一个非常方便的可视化工具,因为它可以为进一步更改内容提供最大的灵活性。

  • 参数:在这个视图中,重点是用户提供的参数(GET/POST 参数,cookies)。在复杂请求的情况下,这是特别重要的,因为它允许考虑潜在漏洞的所有入口点。在适用的情况下,Burp 代理还将自动执行 URL 解码。此外,Burp 代理还将尝试解析常用格式,包括 JSON。

  • 标题:同样,这个视图以表格形式显示 HTTP 头部的名称和值。

  • 十六进制:对于二进制内容,检查资源的十六进制表示是有用的。这个视图允许以传统十六进制编辑器的形式显示请求。

历史选项卡使您能够分析通过代理传输的所有 web 请求:

  1. 点击历史选项卡。在顶部,Burp 代理显示捆绑包中的所有请求。在底部,它显示与特定选择对应的请求和响应的内容。如果您之前修改了请求,Burp 代理历史也会显示修改后的版本。第 2 步-检查 web 请求

显示 Burp 代理拦截的 HTTP 请求和响应

  1. 双击其中一个请求,Burp 将自动打开一个包含特定内容的新窗口。从这个窗口,可以使用“上一个”和“下一个”按钮浏览所有捕获的通信。

  2. 回到历史选项卡,Burp 代理为每个项目显示了一些细节,包括请求方法、URL、响应代码和长度。每个请求都通过左侧列中可见的编号唯一标识。

  3. 点击请求标识符。Burp 代理允许为特定项目设置颜色。这对于突出重要的请求或响应非常有帮助。例如,在初始应用程序枚举期间,您可能会注意到一个有趣的请求;您可以标记它,稍后进行进一步测试。当您必须评估一系列请求以重现特定应用程序行为时,Burp 代理历史也是有用的。

  4. 点击显示过滤器,在历史列表的顶部,隐藏不相关的内容。如果您想分析至少包含一个参数的所有 HTTP 请求,请选择“仅显示参数化”复选框。如果您想显示具有特定响应的请求,只需在“按状态代码过滤”选择中选择适当的响应代码。在这一点上,您可能已经了解了工具过滤和显示有趣流量的潜力。

注意

此外,使用 Burp Suite Professional 时,您还可以使用“按搜索词过滤”的选项。当您需要分析数百个请求或响应时,这个功能特别重要,因为您可以通过使用正则表达式或简单匹配特定字符串来仅过滤相关流量。使用此功能,您还可以发现嵌入在拦截页面中的敏感信息(例如凭据)。

第 3 步-篡改 web 请求

作为典型安全评估的一部分,您需要修改 HTTP 请求并分析 web 应用程序的响应。例如,为了识别 SQL 注入漏洞,重要的是在所有用户提供的输入中(包括 HTTP 头部、cookies 和 GET/POST 参数)注入常见的攻击向量(例如单引号)。

注意

如果您想刷新关于常见 web 应用程序漏洞的知识,OWASP 十大项目文章www.owasp.org/index.php/Category:OWASP_Top_Ten_Project是一个很好的起点。

使用 Burp 篡改 web 请求就像在文本编辑器中编辑字符串一样简单:

  1. 拦截至少包含一个 HTTP 参数的请求。例如,您可以将浏览器指向www.packtpub.com/books/all?keys=ASP

  2. 转到Burp 代理 | 拦截。此时,你应该看到相应的 HTTP 请求。

  3. 原始视图中,你可以简单地编辑传输中的 Web 请求的任何方面。例如,你可以将GET参数的keys值从ASP更改为PHP。编辑请求,使其看起来像下面这样:

GET /books/all?keys=PHP HTTP/1.1 
Host: www.packtpub.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Proxy-Connection: keep-alive
  1. 点击转发,然后返回浏览器。这应该导致使用字符串PHP执行搜索查询。你可以通过简单地检查 HTML 页面中的结果来验证它。

虽然我们使用原始视图来更改以前的 HTTP 请求,但实际上可以使用 Burp 代理的任何视图。例如,在params视图中,可以按照以下步骤添加一个新参数:

  1. 从 Burp 代理params视图中点击(右侧)。

  2. 选择适当的参数类型(URLbodycookie)。URL应该用于 GET 参数,而body表示 POST 参数。

  3. 输入新创建参数的名称和值。

高级功能

通过使用 Burp 代理提供的基本功能进行实践后,你几乎可以开始尝试更高级的配置。

匹配和替换

假设你正在测试一个专为移动设备设计的应用程序,使用计算机上的标准浏览器。在大多数情况下,Web 服务器会检查浏览器提供的用户代理,以识别特定平台,并响应适合移动电话和平板电脑的定制资源。在这种情况下,你会发现 Burp 代理提供的匹配和替换功能非常有用。让我们配置 Burp 代理以篡改用户代理 HTTP 头字段:

  1. 在 Burp 代理的选项选项卡中,向下滚动到匹配和替换部分。

  2. 匹配和替换表下,一个下拉列表和两个文本字段允许创建自定义规则。从下拉列表中选择请求头,因为我们想创建与 HTTP 请求相关的匹配条件。

  3. 在第一个文本字段中输入^User-Agent.*$。这个字段代表 HTTP 请求中的匹配。Burp 代理的匹配和替换功能允许你使用简单的字符串以及复杂的正则表达式。

注意

如果你不熟悉正则表达式,请查看www.regular-expressions.info/quickstart.html

  1. 在第二个文本字段中,输入Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/4h20+ (KHTML, like Gecko) Version/3.0 Mobile/1C25 Safari/419.3或任何其他你想要模拟的虚假用户代理。

  2. 点击添加,并验证新的匹配是否已添加到列表中;这个按钮显示在这里:匹配和替换

Burp 代理匹配和替换列表

  1. 拦截一个请求,让它通过代理,然后验证它是否被工具自动修改。匹配和替换

在 Burp 代理中自动修改的 HTTP 头

HTML 修改

Burp 代理的另一个有趣功能是自动 HTML 修改,可以在Burp 代理 | 选项中的适当部分激活和配置。通过使用这个功能,你可以自动删除 JavaScript 或修改所有接收到的 HTTP 响应的 HTML 表单。

一些应用程序在禁用的 HTML 表单字段或 JavaScript 代码中部署客户端验证。如果你想验证强制特定数据格式的服务器端控件的存在,你需要篡改带有无效数据的请求。在这种情况下,你可以手动篡改代理中的请求,或者启用 HTML 修改以删除任何客户端验证,并使用浏览器提交无效数据。这个功能也可以用来显示隐藏的表单字段。

让我们看看实际上如何激活这个功能:

  1. 在 Burp 代理中,转到选项,向下滚动到HTML 修改部分。

  2. 在此部分有许多选项:取消隐藏的表单字段以显示隐藏的 HTML 表单字段,启用禁用的表单字段以提交 HTML 页面中存在的所有输入表单,删除输入字段长度限制以允许文本字段中的超长字符串,删除 JavaScript 表单验证以使 Burp 代理所有 HTML 表单中的onsubmit处理程序 JavaScript 函数,删除所有 JavaScript以完全删除所有 JS 脚本和删除对象标记以删除 HTML 文档中的嵌入对象。

  3. 选择所需的复选框以激活自动 HTML 修改。

使用此功能,您将能够了解 Web 应用程序是否强制执行服务器端验证。例如,一些不安全的应用程序仅使用客户端验证(例如,通过 JavaScript 函数)。您可以通过选择删除 JavaScript 表单验证复选框来激活自动 HTML 修改功能,以便直接从浏览器执行输入验证测试。

您需要了解的前 8 个功能

当您开始使用 Burp Suite 时,您很快就会意识到您可以用它做各种各样的事情。本节将教您所有关于 Burp 工具中最常见的任务和最有用的功能。

注意

免责声明:不要试图使用 Burp 发现未经授权的网站的安全漏洞。在许多司法管辖区,未经授权访问或攻击计算机系统是非法的。

1-使用目标站点地图功能

在 Web 应用程序安全评估期间的第一个活动是探索应用程序,以枚举资源和端点。使用 Burp Suite,您可以简单地浏览应用程序,并像在浏览器中一样使用所有功能。Burp Suite 跟踪所有 HTTP 请求和响应,并使用目标站点地图功能显示所有数据。

1-使用目标站点地图功能

Burp 目标站点地图

Burp Target选项卡显示了方便的分层表示中的所有端点和参数。这个视图通常被称为站点地图。映射所有应用程序资源的过程至关重要,Burp 站点地图允许您快速分析应用程序的攻击面。

从站点地图树中,可以选择我们评估的目标,并减少所有内置工具的范围。这是一个重要的功能,因为它允许 Burp 的用户专注于相关资源,并防止与第三方网站的任何交互。让我们看看如何做到这一点:

  1. 在 Burp 目标的站点地图选项卡中,通过单击包含域名的根节点(例如,www.packtpub.com/)来选择您的应用程序。

  2. 右键单击并单击添加到范围以减少整个 Burp Suite 的范围。默认情况下,Burp 的范围内项目列表为空,并且所有域都被视为审核的一部分

  3. 此外,还可以通过单击 Burp Target | site map | Filter区域来过滤与其他域相关的资源。然后从按请求类型过滤部分中选择仅显示范围内项目

  4. 此时,您的站点地图应仅显示属于所选域的资源。还可以通过检查 Burp Target | scope选项卡中的包含范围表来验证此设置。

1-使用目标站点地图功能

Burp 目标范围内的项目

从此表单中,还可以手动添加、编辑或删除范围内项目。例如,如果要包含新域,可以按照以下方式进行:

  1. 包含范围表下,选择相应的协议(任何httphttps

  2. 在左侧的第一个文本字段中,指定一个正则表达式,用于识别要添加到范围的域或子域(例如,^www.authors.packtpub.com$),如前图所示。Burp 中的正则表达式语法与 Perl 中的语法最相似。

  3. 在中间的文本字段中,指定一个正则表达式,用于识别适当的端口号(例如,通常为⁸⁰$用于http⁴⁴³$用于https)。

  4. 可选地,可以在第三个文本字段中指定文件和文件夹的正则表达式。如果打算分析和测试整个应用程序域,请将此字段留空。

  5. 最后,单击添加,并验证包含在范围内表中的复选框是否已自动选中。

注意

重要!请注意,将工具的范围缩小到正在分析的应用程序至关重要。此设置将防止对第三方应用程序的任何无意请求和攻击。

同样,通过使用排除范围表,可以定义工具不应检查的资源。此功能允许为禁止端点定义黑名单,特别适用于使 Burp 避免注销功能、重置按钮或其他破坏性操作。

在站点地图中,可以通过右键单击特定项目来调用上下文菜单,从任何域和任何项目(端点或参数)。

1-使用目标站点地图功能

Burp 目标上下文菜单

此机制允许您通过选择以下项目之一,快速将请求/响应导入到所有 Burp Suite 工具中:

  • 爬虫此分支以激活 Burp Spider

  • 主动/被动扫描此分支以使用 Burp Scanner 启动自动扫描(仅在专业版中可用)

  • 发送到入侵者以启动定制攻击

  • 发送到重复器以修改和重复相同的请求

  • 发送到顺序器以分析应用程序数据的可预测性

  • 发送到比较器(请求/响应)以可视化比较多个请求或响应

这些功能将在本章的后续部分中描述。

此外,上下文菜单允许在浏览器中重现 HTTP 请求和响应。这对于验证特定浏览器在分析客户端攻击(例如,跨站脚本,UI 伪装等)期间的行为特别有用。

  1. 从站点地图树中选择一个请求。

  2. 右键单击并选择在浏览器中请求

  3. 选择使用当前浏览器会话原始会话选项,这将使 Burp(使用会话令牌)在保存的请求中可用(如果适用)。

  4. 弹出窗口将显示一个虚拟 URL(例如。burp/repeat/0)。单击复制

  5. 在浏览器中,通过按下Ctrl + V或使用工具栏菜单中的相应命令来粘贴 URL。

  6. 最后,按下Enter在浏览器中模拟请求

在进行安全测试期间,请查看站点地图以验证是否已分析了所有应用程序入口点。Burp 工具(如 Burp Spider)将帮助您自动填充站点地图。工具已请求的资源标记为黑色,而由其他资源链接但尚未被 Burp 检索的端点标记为灰色。

2 - 使用 Burp Spider 爬行 Web 应用程序

Burp Spider 允许自动爬行 Web 应用程序并检索可见和隐藏的资源。该工具使用多种技术组合以最大化结果,包括跟踪先前保存的 HTTP 响应中发现的链接,并自动提交 Web 表单。

第一步需要使用 Burp Spider 的选项选项卡设置爬虫。尽管在大多数情况下,默认选项足以获得良好的结果,但您可能希望自定义一些爬虫的偏好设置。

  • 对于大型网站,可能需要修改最大链接深度,它表示要遵循的资源的最大重定向次数。

  • 对于资源有限的脆弱主机,您可能需要通过更改爬虫引擎部分的线程计数文本框中的数字来减少线程数。此外,您可以在网络故障时增加重试次数和每次尝试之前的暂停时间。

  • 如果要让 Burp Spider 自动提交凭据,可以在应用登录部分定义用户名和密码。

Burp Spider 的另一个有趣功能是定义工具用于自动提交 HTML 表单的名称字段的可能性。在爬行过程中,爬虫可能会遇到必须用语义有效内容填写的 Web 表单。例如,假设一个注册表单有一个电子邮件字段;在这种情况下,爬虫必须能够识别特定字段并提交有效的电子邮件。Burp Spider 允许您定义自定义正则表达式以匹配字段名称:

  1. 在 Burp Spider 中,转到选项 | 表单

  2. 假设您希望 Burp Spider 提交表单,请选择使用以下规则自动提交以分配参数值选项。

  3. 以下屏幕截图中显示的表格包括工具用于填充字段的所有名称-值对。与其他 Burp 工具一样,可以添加、删除或修改条目。例如,如果要创建一个提交由关键字PacktUserID指定的用户 ID 的规则,可以首先从下拉列表中选择regex

  4. 然后,在左侧的第一个文本框中键入PacktUserID。这是自定义规则的字段名称,并且工具将其解释为正则表达式^PacktUserID$

  5. 插入相应的字段值。这是我们要为特定字段分配的实际值。

  6. 最后,单击添加,并确保复选框已正确选择。通过观察以下屏幕截图,可以更好地理解所有这些步骤:

2 – 使用 Burp Spider 爬行 Web 应用程序

Burp Spider 中的自动表单提交配置

此时,工具已准备就绪。Burp Spider 可以通过 Burp Target 中的上下文菜单或通过在 Burp Spider 的控制选项卡中标记爬虫运行复选框来激活。

建议从站点地图树中选择一个节点,右键单击并选择从这里开始爬行。Burp Spider 将从该域中特定分支下选择的资源开始爬行。默认情况下,Burp Spider 使用目标选项卡中定义的范围,这种行为确保工具不会调用目标之外域上的资源。

从 Burp Spider 的控制选项卡中,还可以通过显示的信息验证工具的进度。详细信息包括爬虫发送的 HTTP 请求总数以及尚未调用的资源的剩余数量。发现的所有结果都会自动添加到目标 | 站点地图中。

2 – 使用 Burp Spider 爬行 Web 应用程序

Burp Spider 在操作中

除了使用 Burp Spider 进行自动爬行之外,通过手动浏览网站正确映射所有应用程序资源非常重要。在扫描应用程序或手动测试端点之前,枚举所有资源是至关重要的。

3 – 使用 Burp Scanner 启动自动扫描

Burp Scanner 是 Burp Suite 专业版中包含的动态 Web 应用程序扫描程序。该工具允许您自动扫描网站并检测常见的安全漏洞,包括但不限于 SQL 注入,跨站脚本,XML 注入,缺少 cookie 标志(例如,HttpOnlySecure)等。

该工具允许两种扫描模式:

  • 主动扫描:在此模式下,通过发送包含常见攻击模式的 HTTP 请求并使用模式匹配启发式分析响应来执行漏洞检测

  • 被动扫描:使用此模式,Burp Scanner 使用存储的请求和响应来识别可以离线分析并且不需要主动探测的缺陷。

为了测试此功能,建议您使用Google Gruyeregoogle-gruyere.appspot.com/),这是一个故意不安全的 Web 应用程序。Gruyere 可以在线访问:

  1. 访问google-gruyere.appspot.com/part1并仔细阅读说明和免责声明。

  2. 转到google-gruyere.appspot.com/start

  3. 单击同意并开始

  4. 单击注册并创建一个测试帐户。

  5. 单击登录并使用先前创建的帐户登录。此时,配置 Burp 以拦截所有请求。您的浏览器应如下所示:

3-使用 Burp Scanner 启动自动扫描

Google Gruyere 主页屏幕

Burp Scanner 可以在浏览网站时自动扫描资源,也可以从 Burp 目标站点地图的上下文菜单中激活。

默认情况下,Burp Scanner 配置为对所有域执行被动扫描,而禁用主动扫描。在 Burp 的扫描器选项卡中,选择实时扫描,然后在主动扫描被动扫描部分中都选择使用套件范围,以自动扫描通过 Burp 代理传递的应用程序的所有资源。这种模式通常称为即时扫描。

或者,您可以在站点地图选项卡中选择目标的特定分支,然后根据所需的模式单击主动扫描此主机被动扫描此主机

3-使用 Burp Scanner 启动自动扫描

从 Burp 目标站点地图启动 Burp Scanner

如果选择启动主动扫描,Burp Suite 将显示一个名为主动扫描向导的新窗口,这是 Burp Scanner 的简单配置工具:

  1. 配置过程中的第一步允许您删除特定类型的资源,包括图像,JavaScript 或样式表。在大多数情况下,默认设置是足够的,只需单击下一步即可。

  2. 在第二步中,该工具将显示一个包含 Burp Scanner 将在扫描期间包括的所有端点和参数的表格。仔细审查此列表并删除不相关或可能导致故障的端点(例如,删除用户,重置应用程序功能等)非常重要。在端点表的底部,该工具还显示了项目的总数。完成选择后,单击确定开始扫描。

3-使用 Burp Scanner 启动自动扫描

Burp Scanner 主动扫描向导

Burp Scanner 的默认配置适用于大多数用例。但是,如果您想进一步调整扫描程序,可以通过转到 Burp Scanner 中的选项选项卡来自定义所有配置。此选项卡包含许多选项,包括启用/禁用插入点的可能性:

  • URL 参数值:对所有 HTTP GET 参数执行篡改

  • Body 参数值:对所有 HTTP POST 参数执行篡改

  • Cookie 参数值:将所有会话令牌视为可能的入口点

  • 参数名称:考虑将 HTTP GET/POST 参数的名称视为可能的入口点

  • HTTP 头:对所有请求头执行篡改,包括标准和自定义头

  • AMF 字符串参数:对于使用 Adobe Flex 开发的应用程序,Burp Scanner 将解析 Action Message Format 二进制协议并对所有字符串参数执行篡改。

  • REST 风格的 URL 参数:对于实现 REST 接口的应用程序,Burp Scanner 将篡改 URL 的一部分,这部分通常用于标识操作和参数

如果您正在寻找特定类别的漏洞,可以通过在“主动扫描区域”部分和“被动扫描区域”部分中选择/取消选择相应的复选框来启用/禁用工具执行的每个单个检查。例如,如果您正在测试一个无法访问 LDAP 子系统的应用程序,可以通过取消选择“LDAP 注入”复选框来优化您的扫描。

此外,Burp Scanner 中的“选项”选项卡允许限制工具使用的线程数量或增加连续请求之间的时间。根据服务器上可用的系统资源,您可以通过调整“主动扫描引擎”部分中的所有选项来决定加快或减慢扫描速度。

注意

重要!不要尝试使用 Burp Scanner 或其他 Burp 工具在未经授权的网站上查找安全漏洞。尽管所有 Burp Scanner 检查都经过设计以避免故障,但它们可能会导致严重故障甚至不可逆转的损害。即使您被授权,也要考虑在测试之前对系统和数据进行备份。始终要小心并不断监视扫描的进度和服务器的状态。

一旦启动了扫描,您可以通过检查 Burp Scanner 中的扫描队列选项卡来监视进度。该表格提供了有关已完成和进行中的扫描请求的信息。此外,它通过显示每个端点发现的问题数量来提供结果的概述。从这个表格中,您还可以通过选择这些资源,右键单击表格,然后单击“删除项目”来删除项目。此外,您可以通过右键单击表格并选择“暂停扫描仪”或“恢复扫描仪”来暂停和重新启动整个扫描仪。

3-使用 Burp Scanner 启动自动扫描

Burp Scanner 扫描队列

扫描整个 Web 应用程序可能需要几分钟,有时甚至几个小时。然而,您可以随时通过检查 Burp Scanner 的“结果”选项卡中的发现树来分析结果。就像在站点地图中一样,这种可视化将漏洞按端点和类别进行分组,以便进行方便的树形表示。

3-使用 Burp Scanner 启动自动扫描

Burp Scanner 结果

如果单击特定项目,则会显示所选安全漏洞的建议。显示了漏洞的精确描述,包括以下细节:

  • 问题:漏洞类别(例如,跨站脚本)。

  • 严重性:对受影响系统的影响的估计。违反最佳实践通常被归类为“信息”或“低”,而可能促使系统妥协的漏洞被标记为“高”。

  • 置信度:工具置信度的估计(确定、坚定和暂定)。对于某些类别的漏洞,需要手动干预来验证结果并确认安全漏洞的存在。在其他情况下,工具能够在没有错误范围的情况下检测和确认漏洞。

  • 主机:受安全漏洞影响的系统。

  • 路径:受安全漏洞影响的特定端点。

结果窗口的上下文菜单允许删除问题(删除所选问题)或分配不同的严重性(设置严重性)和信心水平(设置信心)。

资源分析完成并且扫描完成后,您可以导出结果。Burp Scanner 允许您创建基本的 HTML 或 XML 报告,用于跟踪发现的漏洞。此外,其他安全工具(例如 Rapid7 Metasploit)允许您导入这些结果以执行进一步的任务。以下步骤将解释如何导出结果:

  1. 在 Burp Scanner 的结果选项卡中,选择要导出的所有项目。在发现树中,您还可以选择根节点以导出所有发现。

  2. 右键单击以显示上下文菜单。选择报告所选问题

  3. 一个名为Burp Scanner 报告向导的新窗口将指导您完成报告的格式。第一步是选择报告类型,即适合屏幕的 HTML适合打印的 HTMLXML报告。

  4. 接下来,您可以个性化报告中包含的详细信息级别。例如,您可以通过选择所有复选框来决定具有最大详细信息和冗长度。然后,单击下一步

  5. 有时提供受影响的 HTTP 请求和响应的快照是有用的,您还可以决定在最终报告中包含相关摘录。选择适当的复选框,然后单击下一步

  6. 在下一步中,Burp Scanner 报告向导允许您选择/取消选择要导出的问题类别。做出决定并选择适当的复选框。然后,单击下一步

  7. 最后,在最后一步中,您需要指定报告的文件名。单击选择文件...并浏览您的文件系统以找到要保存报告的文件夹。输入文件名,包括文件扩展名。例如,如果您将结果导出为 HTML 报告,请输入BurpScannerReport.html。单击保存

  8. 此外,您可以通过更改内容的顺序,选择问题组织目录级别滚动列表来个性化文档的布局。此外,您还可以通过填写报告标题报告副标题文本字段来指定报告的标题和副标题。单击下一步

  9. 在向导结束时,进度条将为您提供报告生成的反馈。完成后,单击确定关闭此窗口。

报告应该在之前选择的文件夹中可用。如果将其保存为 HTML,您可以使用浏览器打开并分析您的发现。

4 - 使用 Burp Intruder 自动化定制攻击

尽管 Burp Scanner 是一个自动检测漏洞的有用工具,但它不允许您为每个特定请求定制攻击向量。一旦您了解了 Web 应用程序安全的基础知识,您将感到有必要对测试进行全面控制。Web 应用程序扫描器并非 Web 安全的灵丹妙药,因此建议进行手动测试。

在高层次上,Web 应用程序安全评估包括使用常见攻击模式测试所有入口点(GET/POST 参数、Cookie、标头等),并评估服务器的响应以识别安全漏洞。例如,如果您怀疑某个端点容易受到 SQL 注入攻击,您可能希望通过为每个参数提供不同的攻击向量(例如单引号、单引号和括号等)来反复迭代相同的请求。这是一项非常耗时的任务,需要不断的监督。幸运的是,Burp Intruder 可以通过在几秒钟内设置攻击、发送所有请求并收集所有响应来显著加快该过程。

使用 Burp Intruder 的第一步是在工具中导入 web 请求。从整个 Burp Suite 中,您可以使用标准上下文菜单将请求发送到 Burp Intruder。例如,如果您在 Burp Proxy 的history选项卡中浏览请求,右键单击特定项并选择send to intruder。Burp 的intruder选项卡应立即闪烁红色。在启动攻击之前,需要进行四个步骤的配置。

4 – 使用 Burp Intruder 自定义攻击

在 Burp Intruder 中导入 web 请求

配置目标

转到 Burp Intruder 中的目标选项卡。从这个选项卡,可以指定目标主机和端口。在大多数情况下,不需要更改任何内容,因此您只需仔细检查预填的内容并转到下一个选项卡。

配置攻击类型和位置

在 Burp Intruder 的位置选项卡中,您需要选择负载位置,从而为攻击定义一个请求模板。默认情况下,Burp Intruder 将自动标记所有 GET/POST 参数和 cookie 值。但是,鼓励您通过添加或删除位置来个性化攻击。例如,让我们看看如何选择 HTTP GET 请求中的第一个参数:

  1. 导入一个 web 请求(例如,从 Burp Proxy)至少包含一个 GET 参数,通过右键单击该项并选择send to intruder。例如,当使用 Google Gruyere 时,您可以使用登录请求。

  2. 在 Burp Intruder 的位置选项卡中,点击clear §以删除所有标记。

  3. 将鼠标指针定位在 URL 中第一个参数值的第一个字符之前(例如,在GET /<Your Gruyere Instance ID>/login?uid=luca&pw=aa中,鼠标指针应该放置在字符=和字母l之间)。

  4. 通过点击add §添加第一个标记。

  5. 将鼠标指针移动到相同参数值的最后一个字符之后,并通过再次点击add §来完成选择。

生成的请求模板应该看起来像下面的截图所示的那样:

配置攻击类型和位置

在 Burp Scanner 中选择第一个位置

在这个阶段,我们已经成功标记了我们的第一个入口点。您可以继续并创建更多位置。通过点击auto §,可以恢复到所有 GET/POST 参数和 cookie 值都被选择的初始设置。

在 Burp Intruder 的位置选项卡中,还需要使用下拉列表定义特定的攻击类型。此设置定义了工具用来用攻击有效负载替换先前标记位置的启发式。

攻击类型下拉菜单包括以下四种模式:

  • 狙击手:通过使用这种类型,Burp 将使用来自单个负载列表的字符串替换所有位置。特别是,它将逐个迭代所有有效负载,对所有位置进行替换。这允许您对攻击有效负载和模板请求中的原始值的所有组合进行排列。
请求 位置 负载
#1 1 Item_1_List_1
#2 1 Item_2_List_1
#3 2 Item_1_List_1
#4 2 Item_2_List_1
  • 破坏槌:类似于狙击手攻击,这种启发式使用单个负载列表。在这种情况下,所有位置同时用相同的攻击有效负载替换。
请求 位置 负载
#1 1, 2 Item_1_List_1
#2 1, 2 Item_2_List_1
  • 叉子:在这种攻击类型中,Burp Intruder 将使用两个或更多负载列表,取决于标记位置的数量。在第一次迭代期间,Burp 将使用每个列表的相应第一个攻击有效负载替换标记位置。换句话说,它将使用第一个列表的第一个单词来替换第一个位置,依此类推。
请求 位置 负载
#1 1, 2 项目 1 列表 _1,项目 1 列表 _2
#2 1, 2 项目 2 列表 _1,项目 2 列表 _2
  • 集束炸弹:类似于叉子攻击,这种启发式方法使用多个列表。但在这种情况下,Burp Intruder 将遍历所有可能的组合。
请求 位置 有效载荷
--- --- ---
#1 1, 2 项目 1 列表 _1,项目 1 列表 _2
#2 1, 2 项目 2 列表 _1,项目 1 列表 _2
#3 1, 2 项目 1 列表 _1,项目 2 列表 _2
#4 1, 2 项目 2 列表 _1,项目 2 列表 _2

配置有效载荷

在选择了所有位置和攻击类型之后,需要定义实际的有效载荷。在 Burp Intruder 的有效载荷选项卡中,可以定义自定义列表。作者 Burp 所说的“攻击有效载荷”一词指的是常见攻击模式的列表,换句话说,如果在易受攻击的参数中注入这些字符串,可能会发现安全漏洞。

如前所述,有些攻击需要多个有效载荷列表。通过从有效载荷集下拉列表中选择不同的列表编号,可以逐个配置所有有效载荷集。第二个下拉列表允许您定义有效载荷类型。

尽管存在许多类型,但最常见的是:

  • 预设列表:通过使用预设列表,用户可以从外部文本文件加载攻击向量(字典)。或者,也可以手动插入新单词。Burp 专业版用户还可以从预加载的列表中受益。

  • 数字:通过使用数字列表,Burp Intruder 将根据特定的配置自动生成数字。用户需要定义起始和结束数字,以及步数。

  • 日期:Burp Intruder 允许指定日期格式,并自动生成从特定日期到特定日期的日期。

  • 暴力破解:通过使用此选项,Burp Intruder 将根据字符集和生成的字符串的最小/最大长度生成所有可能的字符串排列。

假设我们想要从头开始创建一个攻击向量列表,以检测 SQL 注入漏洞:

  1. 在 Burp Intruder 的有效载荷选项卡中,选择1有效载荷集下拉菜单中,并确保它标记为预设列表

  2. 在下面的文本字段中输入一个新的向量,然后单击添加。例如,您可以以单引号(')开头,这是在基于数据库的应用程序中触发 SQL 异常的非常常见的字符串。

  3. 继续添加新字符串。如果要删除一个字符串,请在表中选择该项目,然后单击删除。否则,如果要删除所有字符串,请单击清除。请参考以下截图:

配置有效载荷

在 Burp Intruder 中定义有效载荷

有效载荷选项卡的底部,请注意请求中的有效载荷编码部分。默认情况下,Burp Intruder 将对该文本字段中指定的所有字符进行 URL 编码。例如,字符'将被替换为相应的%27 URL 编码。如果不想对特定字符进行编码,请从列表中删除它。

附加的 Burp Intruder 选项

Burp Intruder 是一个非常多功能的工具,因此它具有广泛的配置选项。鼓励您尝试并自行实验,以了解每个配置选项的影响。

例如,在 Burp Intruder 的选项选项卡中,您可以配置工具使用的线程数以及重试之间的时间。还可以指定请求之间的固定或可变节流时间。

另一个有趣的设置是grep部分。该工具允许指定要在 Web 响应中搜索的字符串或正则表达式。这对于检测异常和常见错误字符串以突出潜在漏洞非常有用。

附加的 Burp Intruder 选项

在 Burp Intruder 响应中定义搜索表达式

提示

Burp Intruder 的grep功能可用于通过搜索特定关键字来识别应用程序行为。假设您正在尝试访问未经授权的资源,请搜索errorinvalidunauthorizedincorrect等关键字。如果注意到没有这些关键字的请求,可能已成功猜测到一个有效且可访问的资源。

发动攻击

此时,一切都已配置好,我们准备发动攻击。在 Burp 的顶部菜单中,转到intruder | start attack。Burp 将首先验证配置,并在出现问题时通过弹出警报框向用户发出警告。然后,它将打开一个结果窗口并开始实际攻击。

注意

在免费版本中,Burp Intruder 不包括专业版本中提供的所有高级配置选项。最重要的是,它通过在每个请求后呈指数增加时间来限制攻击的速度。

在攻击过程中,您可以在结果表窗口中观察结果。根据配置,Burp 将显示不同的列,包括请求 ID、使用的有效负载、Web 响应的 HTTP 状态代码、响应时间以及(如果已启用grep功能)指定字符串的存在。所有这些列都可以重新排序和排序。此外,Burp Intruder 允许将结果导出为平面文件。

注意

发现安全漏洞主要取决于奉献精神、耐心和大量动力。一旦开始执行安全评估,您将发现响应中的微小变化如何帮助识别缺陷。始终注意所有 Web 响应的不同长度和不同的 HTTP 状态代码。还要使用grep功能来识别导致错误消息和应用程序异常的错误。

5 – 使用 Burp Repeater 操纵和迭代 Web 请求

在上一节中,我们已经看到如何自动化和以编程方式生成具有不同有效负载的多个请求。

如果您已经发现了安全漏洞,或者想要确保特定端点是安全的,有时需要手动重复请求并仔细调整攻击向量。这是一种需要耐心和经验的反复试验方法。

Burp Repeater 允许修改 HTTP 请求的每个方面并多次发送。首先,通过使用传统的上下文菜单从 Burp Suite 工具中导入 Web 请求:

  1. 从任何工具(例如,Burp Proxy 历史记录)中选择特定的 Web 请求,然后右键单击它。然后,选择发送到 repeater

  2. 转到 Burp Repeater。您应该看到所选请求的整个内容。此外,Burp Repeater 将自动填充主机和端口号。

  3. 此时,您可以修改此 Web 请求的每个方面。让我们从将 GET 请求转换为 POST 或反之开始。在请求窗口中,右键单击并选择更改请求方法5 – 使用 Burp Repeater 操纵和迭代 Web 请求

使用 Burp Repeater 更改请求方法

  1. 另外,通过在 URL 末尾添加字符串&debug=true来添加一个虚假参数。

  2. 最后,单击go发送请求。几秒钟后,Burp Repeater 应该能够显示响应。与往常一样,您可以可视化原始响应,隔离参数或标头,审计 HTML 代码,甚至呈现页面。

尽管 Burp Repeater 似乎是一个非常简单的工具,但实际上非常有用,并且包含一些高级功能。如果单击repeater菜单,如下截图所示,您可以看到这些功能的列表:

5 – 使用 Burp Repeater 操纵和迭代 Web 请求

Burp Repeater 选项

更新 Content-Length复选框允许动态更新 HTTP 请求中的Content-Length头字段。这样,Burp Repeater 在发送请求之前将自动计算修改后的请求的大小。

跟随重定向选项允许选择 Burp Repeater 是否应显示实际的 Web 响应,还是跟随所有重定向(302 重定向状态代码)并显示着陆页面。

通过选择在重定向中处理 cookie复选框,可以在应用程序重定向期间操作请求的会话令牌。

最后,Burp Repeater 允许创建、删除或重命名选项卡。如果您发现了漏洞并尝试构建一个有效的利用程序,创建新选项卡并使用重命名功能为每个尝试分配一个有意义的标题非常有用,以避免混淆。

此外,如果您正在分析跨站请求伪造CSRF)漏洞或开发跨站脚本攻击,您可以通过右键单击请求并选择参与工具 | 生成 CSRF PoC来自动生成概念验证。此功能允许您生成一个触发漏洞的 HTML 页面。

6 - 使用 Burp Sequencer 分析应用程序数据的随机性

Burp Sequencer允许您分析应用程序数据的可预测性,例如会话 cookie 和反 CSRF 令牌。该工具允许您轻松收集和分析数据。让我们看看这个工具如何在一个真实的例子中使用:

  1. 配置好 Burp 代理后,将浏览器指向www.packtpub.com/login

注意

免责声明!虽然 Burp Sequencer 不执行任何注入攻击,但向远程 Web 服务器发送大量请求可能会减慢服务速度并可能中断应用程序。我建议您在自己的目标上使用 Burp Sequencer 进行实验。此示例仅供参考。

  1. 在 Burp 代理的历史选项卡中,选择登录请求。右键单击并选择发送到 Sequencer

  2. 我们已经将请求导入到 Burp Sequencer 中,现在可以进行设置。选择请求表显示工具中导入的所有 Web 请求。由于只有一个请求,此项应该已经被选中。如果没有,请单击表中的请求。

  3. 实时捕获选项卡的识别响应中的令牌部分中,有必要配置 Burp Sequencer 如何识别我们想要在响应页面中分析的令牌或其他数据。为了加快过程,在cookie表单字段下拉列表中,工具将显示页面中存在的所有 cookie 或表单参数。此外,还可以手动选择数据位置。

  4. 单击手动选择。在响应内容中,查找edit-captcha-token。此令牌特定于正在分析的 Web 应用程序。您还可以使用表单底部的搜索文本框轻松找到令牌位置。

  5. 如您所见,edit-captcha-token元素的值包含一个伪随机令牌。让我们研究一下这个字符串的熵。将鼠标光标移动到整个字符串上。Burp Sequencer 将自动填充右侧的after expressionat delimiter文本字段。实际上,该工具有助于识别可用于从响应页面中提取令牌的分隔符。

  6. 完成后,单击开始以收集样本。Burp Sequencer 将多次重复相同的请求,并自动提取先前定义的选择。该工具还将打开一个新窗口来监视该过程。

配置 Burp Sequencer 实时捕获

或者,也可以通过手动从文本文件导入令牌和应用数据,或者通过粘贴剪贴板的内容来导入。如果您更喜欢以这种方式加载令牌,请转到 Burp Sequencer 的手动加载选项卡。

在收集足够的数据,至少 100 个样本后,可以通过单击暂停按钮暂停样本检索过程。您还会注意到立即分析按钮是活动的。单击它开始分析阶段。以下屏幕截图显示了一个暂停的实时捕获:

6 - 使用 Burp Sequencer 分析应用数据的随机性

Burp Sequencer 结果

几秒钟后,Burp Sequencer 应该能够显示结果。如果要验证收集的数据,请单击复制令牌,并将内容粘贴到您喜欢的文本编辑器中。此外,如果您意识到自己没有收集足够的令牌,可以通过单击恢复按钮来恢复该过程。

Burp Sequencer 的结果显示在以下三个部分中:

  • 摘要选项卡

  • 字符级分析选项卡

  • 比特级分析选项卡

摘要选项卡提供了对分析的通用概述。通常,这个视图足以理解令牌是否真的是伪随机的。在我们的例子中,工具报告了以下消息:

样本内随机性的整体质量估计为:优秀

此外,该选项卡根据收集的样本数量评估了分析的可靠性。

尝试评估非伪随机令牌的随机性将导致以下警告:

样本内随机性的整体质量估计为:极差

总的来说,Burp Sequencer 将提供对随机性整体质量的估计。虽然结果通常是正确的,但该工具并不总是可靠的。高级用户可以从字符级比特级测试中受益,以了解数据的实际可预测性。字符级分析选项卡包括多个图表和比较表,以了解令牌内字符、位置和字符转换之间的相关性。比特级分析选项卡特别有用,因为它包括一个图表,指示每个比特位置的随机性置信度。

7 - 使用 Burp Decoder 解码和编码数据

Burp Decoder是一个简单但实用的工具,用于以多种格式对字符串进行编码和解码。在 Web 应用程序的安全审计中,通常需要评估输入验证安全机制的健壮性。以多种格式对字符串进行编码是绕过安全控制和过滤器的常见技术。

从任何工具,您可以使用标准上下文菜单项在 Burp Decoder 中导入部分请求和响应:

  1. 使用鼠标光标选择一个字符串,右键单击它,然后选择发送到解码器

  2. 导入字符串后,可以通过从解码为...编码为...滚动列表中选择适当的编码模式来对其进行编码或解码。输出显示在下方的文本形式中。

用户可以通过分别选择十六进制文本复选框来以十六进制或文本格式可视化数据。Burp 支持的编码模式包括URL 编码HTML 实体编码、Base64、十六进制转换和GZIP压缩编码。

7 - 使用 Burp Decoder 解码和编码数据

Burp Decoder

此外,Burp Decoder 允许为常见的哈希函数创建消息摘要,包括 MD2、MD5、SHA、SHA256 和 SHA512。

以前的转换输出可以用作新转换的输入。这种机制允许连接多种编码技术。

此外,通过使用智能解码按钮,Burp 将尝试通过查找可识别的格式来解码字符串的内容。尽管启发式并不总是产生正确的结果,但它们可以在识别混淆内容时提供帮助。要了解可能的编码机制,请查看在线提供的XSS Filter Evasion Cheat Sheet www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet

8 – 比较站点地图

在大型应用程序上发现访问控制漏洞是一项艰巨的任务。Burp Suite 的比较站点地图功能允许比较两个站点地图并突出显示差异。简而言之,这个不可替代的功能提供了一种使用具有不同访问权限的帐户来映射应用程序资源,并随后比较 Web 响应的简便方法。

例如,您可以使用标准用户帐户浏览应用程序,然后使用管理员用户重复所有请求。这种方法可能有助于突出特权升级漏洞,通常称为垂直特权升级。或者,您可以使用两个权限级别相同的不同用户浏览应用程序,并验证对资源的访问控制。这种方法可能有助于突出水平特权升级漏洞。

这个功能在工具的专业版和免费版中都可用,尽管后者不允许您将 Burp 状态文件导入为比较的基线。让我们看看如何利用这个功能的一个具体例子。在这个练习中,我们将验证特定的 Web 应用程序端点是否只对经过身份验证的用户可用:

  1. 配置了 Burp 代理后,将浏览器指向www.packtpub.com/login。使用您的帐户登录并转到www.packtpub.com/account。请注意,帐户页面只对经过身份验证的用户可用。

注意

免责声明!虽然 Burp 的比较站点地图功能不执行任何注入攻击,但向远程 Web 服务器发送大量请求可能会减慢服务并可能中断应用程序。我建议您针对自己的目标对此功能进行实验。此示例仅供参考。

  1. 在 Burp 代理的站点地图选项卡中,搜索并选择帐户端点。

  2. 如下面的屏幕截图所示,右键单击端点并选择比较站点地图。确保只选择了帐户项目:8 – 比较站点地图

从站点地图上下文菜单中启动“比较站点地图”

  1. Burp 将打开一个包含比较站点地图向导的新窗口。第一步是定义站点地图 1的来源。这个站点地图将被用作我们比较的基线。如果您使用的是 Burp 的免费版本,则使用当前站点地图选项是您唯一可用的选项。选择它并单击下一步

  2. 在第二步中,您必须选择在比较过程中包括的特定项目。对于本示例,请选择仅使用选定的分支。此选项将限制比较站点功能到单个帐户端点。在测试应用程序时,您可能希望通过选择使用所有带响应的项目来评估所有端点。此外,您可能希望通过选择仅包括 Burp 的范围内站点来限制工具。然后,单击下一步8 – 比较站点地图

定义包括在 Burp 比较站点地图中的所有项目

  1. 在第三步中,您必须定义站点地图 2的来源。如果您使用的是 Burp 的免费版本,则在不同的会话上下文中再次请求地图 1选项是您唯一可用的可能性。选择它并单击下一步

  2. Burp 将使用当前会话(存储在 Burp 的cookie 罐中)来访问站点地图 1中定义的所有资源。在此练习中,我们要验证账户端点是否对经过身份验证和未经身份验证的用户都可用。在之前的步骤中,我们已经记录了经过身份验证用户所看到的账户端点。在这一点上,我们需要使我们的 cookie 失效,并使用站点地图 2的新会话。最小化比较站点地图向导,转到 Burp Suite 中的选项 | 会话。点击查看 cookie 罐。这是 Burp 使用的所有会话令牌的存储库。

打开 Burp 的 cookie 罐

  1. 由于我们想要模拟一个非经过身份验证的用户,我们可以简单地篡改与www.packtpub.com域相关的 cookie 罐中的所有 cookie。逐个点击编辑 cookie并通过添加随机字符串篡改值。通过点击完成确认每个操作。最后,使用关闭按钮关闭 cookie 罐。

  2. 此外,我们需要强制 Burp 目标站点地图使用这些篡改的 cookie 进行比较。在 Burp Suite 中,转到选项 | 会话。点击编辑,位于会话处理表的右侧。

  3. Burp 将打开一个名为会话处理规则编辑器的新窗口。转到范围选项卡,并在工具范围部分中选择目标复选框。这是一个非常重要的步骤,因此请确保正确配置会话处理,如下图所示。最后,点击完成,返回到比较站点地图向导窗口。8-比较站点地图

Burp 的会话处理规则编辑器

  1. 比较站点地图向导的第四步中,Burp 允许自定义分析过程中使用的线程数,以及其他时间选项。我们可以将所有选项保持不变,并通过点击下一步继续。

  2. 在第五步(请求匹配)中,建议使用默认设置,因为它们对大多数情况都有效。只需点击下一步

  3. 同样,在第六步(响应比较)中,建议使用默认设置。只需点击下一步

  4. 在这一点上,Burp 将开始使用修改后的会话请求站点地图 1资源,以构建站点地图 2。完成此过程后,Burp 将自动计算所有差异并将结果显示给用户。

8-比较站点地图

Burp 的比较站点地图结果

结果页面允许轻松比较来自站点地图 1站点地图 2的资源。通过使用同步选择复选框,Burp 将同步两个站点的资源,使您能够同时滚动两个面板和项目。在这种情况下,我们可以轻松验证使用未经身份验证的会话请求账户端点产生了不同的响应 - 用户被重定向到登录页面。正如预期的那样,这个端点对未经身份验证的用户不可用。

在真实的 Web 应用程序评估中,您可以使用此功能来测试应用程序的所有端点。例如,您可以最初验证经过身份验证和未经身份验证会话之间的差异。然后,您可以使用两个不同的用户创建站点地图 1站点地图 2,并验证所采用的访问控制机制。最后,您可能希望使用标准用户和管理员用户构建站点地图 1站点地图 2,以确保特权操作对低权限帐户不可用。

提示

页面之间的小差异可能是由一次性令牌和时间相关资源等动态组件引起的。一般建议将分析重点放在添加的资源和响应中的重大变化上。

你应该认识的人和地方

如果您需要帮助使用 Burp Suite,以下人员和地点将非常有价值:

官方网站

文章和教程

社区

特别是,请查看我该如何?Burp 扩展论坛,以了解如何执行高级任务并使用第三方附加组件扩展工具。

博客

  • 尽管 Burp Suite 已经存在了很多年,现在被认为是测试 Web 应用程序的事实标准,但专门致力于这个工具的博客并不多。 接收更新并学习如何使用新功能的最佳资源可能是官方博客:blog.portswigger.net/

Twitter

  • 在 Twitter 上关注 Burp Suite 的创作者 Dafydd Stuttard:twitter.com/PortSwigger

  • 在 Twitter 上关注本书的作者 Luca Carettoni:twitter.com/_ikki

  • 关注 Michal Melewski 在 Twitter 上。 他不时提供有关如何使用 Burp 的有用提示和技巧;他可以在以下网站找到

twitter.com/carste1n.

posted @ 2024-05-03 21:40  绝不原创的飞龙  阅读(71)  评论(0编辑  收藏  举报