Skip to content

Latest commit

 

History

History
454 lines (240 loc) · 27.7 KB

File metadata and controls

454 lines (240 loc) · 27.7 KB

七、使用 BurpSuite

Burp Suite 是一种广泛使用的基于 Java 体系结构的 web 应用渗透测试工具,有免费和付费两种版本。它可以在多种平台上使用,如 Windows、Linux 和 macOS。Burp 套件用于识别漏洞和验证 web 应用攻击向量。它具有丰富的功能,是一个非常受欢迎的综合工具,有许多关于它的书籍。

在本章中,您将了解 Burp 套件和现有的各种版本。我们将重点介绍各版本之间的差异,以及您如何获得专业版的试用许可证,该版本用于本章中的演示。您将准备好您的环境,以便在您自己的实验室中复制演示。最后,我们将检查 Burp Suite 提供的工具,并了解渗透测试人员如何使用这些工具。通过使用易于理解的实用示例,您将很好地理解这些工具。

在本章中,我们将介绍以下主题:

  • Burp套房简介
  • 准备您的环境
  • Burp 套件的螺母和螺栓

技术要求

要遵循本章中的示例和说明,请检查您是否具有以下内容:

  • Kali Linux 2019.1
  • BurpSuite专业版(撰写本文时为 v1.7.37)
  • 开放式 Web 应用安全项目*OWASP破网应用BWA项目版本 1.2.7* ** 表 2*

*# 理解BurpSuite

Burp 套件类似于拦截代理。在对目标 web 应用执行渗透测试时,可以配置 Burp 套件,以便通过其代理服务器路由所有流量。这使得 Burp Suite 通过捕获和分析与 web 应用之间的每个 web 请求来充当中间人攻击。这使渗透测试人员能够利用暂停、操纵和重放请求等功能,以便发现目标 web 应用中的潜在注入点。可以手动或通过自动模糊技术定义这些注入点。

Fuzzing 或 fuzz 测试是一种软件技术,包括以自动化方式使用格式错误或半格式错误的数据包发现实现错误。

Burp Suite 目前有三个版本:

  • 社区:这是免费版本,默认随 Kali Linux 一起提供
  • 专业版:这是付费版,在撰写本文时,每位用户每年的费用为 399 美元。
  • 企业本版面向企业。根据 PortSwigger 的网站(https://portswigger.net/ ),在撰写本文时,起价为每年 3999.00 美元。这个版本不在本书的范围之内。

**在本书中,我们将使用专业版。PortSwigger 免费试用 Burp Suite Professional。您只需提供有效的公司名称和公司电子邮件地址,即可申请试用许可证

社区版和专业版之间的差异归根结底在于功能。Community Edition 通过强制限制线程来限制入侵者的功能。社区版不包括任何扫描功能或任何内置有效载荷。当然,您可以将自己的有效负载加载到社区版中。需要专业版的插件在社区版中不起作用。Community Edition 仅允许您创建临时项目,因此无法将项目保存到磁盘。社区版仅包含基本手册工具*、*,而专业版包含基本和高级手册工具。

有关不同版本之间差异的完整列表,请访问https://portswigger.net/burp ,将解释差异并显示各版本的当前价格。

准备您的环境

为了测试 Burp 套件的功能,我们需要准备我们的环境。有许多 web 应用在设计上容易受到攻击。这些是专门为学习目的而创建的,它们非常棒。当您掌握 Burp Suite 的技能时,我鼓励您查看创建和发布的各种易受攻击的 web 应用。OWASP 是查找易受攻击 web 应用软件的在线和离线版本的一个很好的资源。

OWASP 维护一个易受攻击的 Web 应用目录项目,可在找到该项目 https://www.owasp.org/index.php/OWASP_Vulnerable_Web_Applications_Directory_Project#tab=Main

安装BurpSuite专业版

在开始渗透测试之前,我们需要安装 Burp 套件。默认情况下,Kali Linux 2019.1 附带 Burp 套件的社区版。在本书中,我们将使用专业版的免费试用版。

请注意,在撰写本文时,最新的稳定版本是 v1.7.37。如果您使用任何测试版,界面将与您在本书中看到的屏幕截图不同。

让我们走一步,为获得Burp套房的专业许可证所需的步骤:

  1. 导航至https://portswigger.net/requestfreetrial/pro

  2. 按照表格要求填写您的详细信息。请注意,您需要输入公司电子邮件地址,因此来自 Gmail、Outlook 和其他网站的个人电子邮件地址将不起作用。

  3. 您将收到一封包含登录详细信息的电子邮件,用于登录下载门户。登录到帐户后,可以继续下载许可证文件。我使用的是普通的jar文件,因为我可以运行这个独立的应用,而无需安装它,如下面的屏幕截图所示:

图 1:Burp Suite Professional 的下载选项

  1. 下载完文件后,可以从 Kali Linux 终端窗口使用java -jar [filename]命令启动 Burp Suite Professional。在首次启动期间,它将要求您提供许可证密钥并继续激活许可证。

如果要配置分配给 Burp Suite 的内存量,可以使用-Xmx命令开关,例如java -jar -Xmx2048m [filename]

建立 OWASP BWA

BWA 项目创建一个虚拟机,该虚拟机由许多具有已知漏洞的应用组成。该项目是为那些有兴趣学习以下内容的人创建的:

  • web 应用的安全性
  • 各种手动测试技术
  • 各种自动化测试技术
  • 如何使用工具执行源代码分析
  • 了解 web 攻击的影响
  • 如何测试 web 应用防火墙和类似工具

OWASP BWA 项目的直接链接为https://www.owasp.org/index.php/OWASP_Juice_Shop_Project

下载 BWA 虚拟机后,需要使用 7-Zip 等程序将其解压缩。下图所示的 BWA 文件是虚拟机文件,可以导入到 VMware Workstation 或 VirtualBox 中:

图 2:BWA 提取的文件

将文件导入 VMware Workstation 非常简单。您只需打开或导入.vmx文件。对于 VirtualBox,我们需要执行一些附加步骤:

  1. 打开 VirtualBox 并创建新的虚拟机。定义虚拟机的名称,然后选择操作系统类型为 Linux Ubuntu(32 位)。

  2. 继续向导,但在涉及硬盘驱动器组件时,请选择“使用现有虚拟硬盘文件”,而不是创建新硬盘驱动器。在这里,您将根据以下屏幕截图选择 BWA 虚拟硬盘(OWASP Broken Web Apps-cl1.vmdk):

图 3:导入 BWA 虚拟硬盘

  1. 单击 Create 创建虚拟机。您可以随意调整处理能力和内存,但默认值应该足够了。

  2. 确保您正在为此虚拟机使用仅主机或网络地址转换NAT网络配置。不要将其直接暴露在公共互联网上,因为虚拟机在设计上容易受到攻击

  3. 一旦虚拟机启动,它将为您提供可用于访问它的 IP 地址,如以下屏幕截图所示:

图 4:BWA 虚拟机信息

一旦启动 BWA,您会注意到它为您提供了有关如何通过 web 浏览器和 SSH 访问它的信息

配置浏览器

由于 Burp Suite 的所有功能都依赖于使用代理工具,因此您需要将浏览器配置为使用代理。在 Kali Linux 2019.1 中,默认包含 Firefox扩展支持版本ESR)。配置浏览器的代理设置很简单,但每次都必须手动更改代理设置可能会令人沮丧。

Firefox ESR 有几个代理管理插件。我个人喜欢使用 FoxyProxy(https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/ ,因为它提供了定义多个代理的功能,并通过使用 Firefox 中附加按钮的开关来更改它们:

*

图 5:配置了多个代理的 FoxyProxy

添加新代理非常简单,只需单击“选项”并添加新代理即可。在下一节中,我们将介绍如何添加代理。

探索和配置 Burp 套件组件

Burp Suite 提供了一系列工具,帮助渗透测试人员完成整个 web 应用测试过程。这些工具使渗透测试人员能够映射环境、执行漏洞扫描和利用漏洞。

Burp Suite 有一个简单的图形界面,其中包含两行选项卡和各种面板(图 6*。*第一行选项卡(1是当前安装的工具。第二行选项卡是主工具的子组件(2),在该子组件中,您有各种面板(3):

图 6:Burp 套件的界面

图 6中的示例显示选择了 Target 的主工具,并选择了 Site map 的子组件。在该子组件中,有多个面板,例如内容和问题*。*

BurpSuite工具

现在让我们使用 Burp 套件中的各种工具,并将它们用于攻击我们在上一节中部署的 OWASP BWA 项目

当您启动 Burp Suite Professional 时,在磁盘上创建一个新项目(图 7,这样您就可以随时查看结果。您可以对配置文件使用 Burp 套件默认值:

图 7:Burp Suite 的新项目

现在我们的项目已经开始了,我们可以深入研究这些工具并学习如何使用它们。

代理

这是 Burp 套件的核心部分,允许您创建一个在浏览器和目标 web 应用之间运行的拦截代理。您可以使用此工具拦截、检查和修改所有请求和应答。

要配置代理选项,您需要访问代理工具并选择选项选项卡,如以下屏幕截图所示:

图 8:代理工具中的代理侦听器选项

代理侦听器部分是定义代理详细信息的地方。默认配置将满足我们将执行的活动。值得启用的另一个配置项位于代理选项的响应修改部分下。此设置的标题为“取消隐藏隐藏表单字段”,如以下屏幕截图所示:

图 9:启用取消隐藏隐藏表单字段

隐藏的 HTML 表单是通过客户端进行表面的、不变的数据传输的常见机制。如果该字段被标记为隐藏,则该字段不会显示在屏幕上。但是,字段的名称和值存储在表单中,并在用户提交表单时返回给应用。Burp Proxy 可用于拦截提交表单的应用并更改值

在 Firefox ESR 中配置此功能可以按如下方式完成:

  1. 打开 Firefox ESR 并导航到首选项:

图 10:导航到 Firefox 首选项

导航到首选项的更快方法是导航到 Firefox ESR 中的about:preferencesURL。

**2. 进入首选项后,搜索proxy并单击Settings按钮。

  1. 进入代理设置后,您可以根据以下屏幕截图定义 Burp Suite 代理:

图 11:在 FirefoxESR 中定义 Burp 套件代理

在上一节中,我们提到了这种方法可能会令人沮丧,因为有时您需要在不使用 Burp 套件代理的情况下进行浏览。

要在附加组件(如 FoxyProxy)中配置 Burp Suite 代理,我们只需定义代理设置(图 12),保存配置后,您就可以在代理设置之间切换:

图 12:将 Burp 套件代理添加到 FoxyProxy

现在我们已经设置和配置了代理,让我们进入下一个工具,在这里我们将定义目标并执行诸如绘制站点的活动。

因为 Burp 套件中的代理充当拦截代理,所以在浏览 URL 时必须转发请求。如果不转发请求,则不会在浏览器中加载 URL。

目标

此工具提供有关目标应用的内容和工作流的详细信息。它帮助您领导测试过程。在此工具中,可以映射目标站点(手动或使用集成爬虫),并且可以在映射应用后修改范围。

我们将把目标定义为 BWA 虚拟机的主 IP 地址。例如,根据上一节中的屏幕截图,我的 BWA 虚拟机的 IP 地址为192.168.34.152

可以使用以下步骤定义目标:

  1. 点击目标工具,选择范围**。**
  2. 单击 Target Scope 部分下的 Add,输入您的 BWA 虚拟机的 IP 地址。
  3. Burp Suite 将提示您注销范围项目。在这种情况下,我们不想记录它们,因此选择“是”,以便 Burp Suite 不会将超出范围的项目发送到其他工具:

图 13:在 Burp 套件中定义目标

  1. 将目标范围定义为 BWA 虚拟机 IP 地址后,打开 Firefox 并导航到 BWA 虚拟机的 URL,例如,http://192.168.34.152。您会注意到,如果不在代理工具中转发请求(图 14,网页将不会加载:

图 14:使用代理工具转发请求

  1. 转发请求后,将加载 BWA 主页。在 Site map(图 15下的目标工具中,您现在将拥有目标 web 应用的完整站点地图:

图 15:根据定义的目标填充站点地图

左侧树状视图中包含内容的分层表示,URL 被划分为域、目录、文件和参数化请求。要查看更多详细信息,可以展开感兴趣的分支。如果选择树的一个或多个部分,则右侧视图中的子分支中的所有项目都将显示相关详细信息。右侧视图包含从树视图中选择的分支内容的详细信息以及与分支相关的任何问题。

扫描仪

此工具在 Burp Suite 的专业版中提供。它提供高级 web 漏洞扫描功能,并具有自动爬网功能以发现内容

利用扫描仪功能非常简单,只需右键单击要扫描的分支,然后选择主动或被动扫描功能,如图 16所示:

图 16:启动扫描仪功能

可以执行两种类型的扫描:主动扫描和被动扫描。以下详细说明了两者之间的区别:

  • 被动扫描:这种扫描只是分析和检测现有请求和响应内容中的漏洞。使用此扫描,您将能够限制 web 应用的噪声量。这种类型的扫描能够检测到许多漏洞,因为许多漏洞可以使用被动技术检测到。
  • 主动扫描这类扫描会提交大量定制请求,并分析搜索漏洞的结果。主动扫描可以识别范围更广的漏洞,对于执行完整的应用测试至关重要。请记住,此扫描将导致向应用发送更多的噪声。

**下图显示了扫描仪检测到的问题的输出:

图 17:活动扫描检测到的问题

打开问题提供了有关问题的更多信息,包括受影响的主机、路径、严重性和可信度,如图 18所示:

图 18:问题细节

扫描的每个结果都包含详细的建议,通常包含与特定漏洞相关的定制信息和适当的补救措施。每个结果还将包括报告问题的完整请求和响应,并突出显示相关部分。这些请求可以像往常一样传输到其他 Burp 工具,以检查问题或执行进一步的测试

中继器

这用于手动操作和重新发出 HTTP 请求。发送这些手动请求后,您可以分析响应。您可以从 Burp 套件中的任何位置向 Repeater 发送请求

让我们使用 Repeater 执行登录操作:

  1. 关闭 Burp Suite 代理 Firefox ESR,导航到 BWA 主页,然后单击 OWASP Mutillidae II。
  2. 在左侧导航中,选择 OWASP 2007 | OWASP 2007 A6–错误处理不当|登录(图 19*。*这将带您进入登录页面:

图 19:OWASP A6–错误处理不当

  1. 启用 Burp 套件代理拦截。启用后,尝试使用任意随机凭据登录。在 Burp 套件中的代理工具上,您将看到登录请求被拦截。右键点击请求并选择发送到中继器*。在我的示例中,您会看到我使用了testing的随机usernametest-userpassword,如图 20*所示:

图 20:使用 Burp 套件代理工具截获的登录请求

  1. 单击中继器工具,在左侧,您将收到截获的登录请求。单击 Go 并观察结果。请注意,Loggin In User 字段为空,如下面的屏幕截图所示。如果单击“渲染”选项卡,将看到没有用户登录。这说明我们使用的随机username不存在:

图 21:使用 Repeater 重播 HTTP 请求

从这里开始,我们可以修改初始请求中的任何参数。您可以尝试各种usernamepassword并观察结果。出于演示目的,我们将使用一种常见的 SQL 注入技术(SQL 注入将在第 8 章【攻击 Web 应用】中详细介绍)。

  1. username=字段中,删除您最初使用的随机用户名并放入' or 1=1 --SQL 注入命令。点击 Go,观察输出(图 22*。*注意Set-Cookie参数现在设置为username=admin,登录用户设置为admin。这告诉我们,通过使用' or 1=1 --用户名和任何密码,我们可以执行 SQL 注入攻击并以管理员身份登录:

图 22:使用 Repeater 执行 SQL 注入攻击查询

如果使用“渲染”选项卡,您将看到登录的用户是admin

Repeater 在处理请求和测试 web 应用如何处理各种请求方面提供了很多功能。

入侵者

这使得针对 web 应用的定制攻击能够实现强大的自动化。它使您能够配置各种有效负载、有效负载选项和攻击选项

让我们使用入侵者在 Multillidae 中查找隐藏的网页:

  1. 导航至 BWA 主页应用,选择 OWAP Multillidae II。确保已将 Burp Proxy 设置为拦截模式。单击页面顶部的登录/注册链接。找到被拦截的请求,右键点击,选择发送到入侵者,如图 23所示:

图 23:向入侵者发送截获的请求

  1. 单击入侵者选项卡。入侵者自动标记有效载荷位置。在我们的例子中,我们对POST消息感兴趣。单击清除§将清除所有自动放置的位置。双击POST请求上的login.php并点击添加§,如*图 24**所示。*我们将使用狙击手攻击类型:

图 24:定义有效负载位置

狙击手攻击类型允许您在选择的每个输入字段中指定一个要尝试的有效载荷。如果您想使用可能的选项列表强制执行单个输入字段,那么它确实很有用。

重击内存攻击试图在所有选择的输入字段中同时创建单词列表。当您认为凭据可能具有相同的用户名和密码时,这非常有用。

Pitchfork攻击使用了一个额外的单词列表。这将使它能够使用一个字列表作为用户名,第二个字列表作为密码。Pitchfork 将用户名单词列表中的第一个单词与密码单词列表中的第一个单词相匹配,因此它不能提供广泛的覆盖范围。

集束炸弹攻击是最全面的攻击,也是最耗时的攻击。此攻击尝试用户名字列表的每个组合和密码字列表的每个组合。

  1. 点击有效载荷,我们将使用的有效载荷类型是一个简单的列表。在有效载荷选项中,我们将定义一些众所周知的隐藏页面,如admin.phpsecret.php_admin.php_private.php。一旦定义了有效负载选项(图 25),就可以使用开始攻击按钮开始攻击:

***

图 25:定义有效负载选项

一旦攻击开始,将出现一个新窗口,其结果如图 26所示:

图 26:入侵者攻击结果

从结果中,我们可以得出所有结果都返回了相同的状态代码。这些都是可访问的,我们可以通过查看“响应”选项卡和“渲染”选项来确认这一点。

入侵者可以使用定义的单词或单词列表来强制登录进程。执行简单的集束炸弹攻击可按如下方式进行:

  1. 使用随机的usernamepassword登录到 Multillidae。当请求被拦截时,发送给入侵者,如图 27所示:

图 27:向入侵者发送登录请求

  1. 在入侵者工具中,将攻击类型定义为集束炸弹,并将有效载荷位置定义为您使用的usernamepassword。在下面的例子中,我使用了testingusernametestpassword,如图 28所示:

图 28:确定集束炸弹攻击中的有效载荷位置。

  1. 单击有效载荷选项卡,并使用简单列表为每个有效载荷集定义usernamepassword

  2. 单击有效负载选项选项卡,并记下请求引擎下的选项。在这里,您可以控制攻击,例如调整重试和节流之间的暂停。这使您能够将暴力尝试与正常流量混合在一起,最终避免因过度无效登录尝试而引发标志的风险。查看设置后,切换回“有效载荷”选项卡并开始攻击。

  3. 一旦攻击完成,您将看到有效凭据返回 HTTP 302 请求。我们可以通过 Render 选项卡确认这一点,该选项卡显示了admin的登录用户,如以下屏幕截图所示:

图 29:使用入侵者找到的有效凭据

入侵者有很多可以在渗透测试中使用的功能。

测序器

这使得能够分析目标应用重要数据项中的随机性质量。这些项目可以是会话令牌、密码重置令牌等。这种类型的数据是不可预测的,可以发现导致漏洞被发现的缺陷。

常见的攻击称为会话固定攻击。这是一种允许攻击者检索有效用户会话的攻击。该攻击着眼于易受攻击的 web 应用管理会话 ID 的方式的限制。web 应用没有分配新的会话 ID,或者会话 ID 的随机性很弱。这使攻击者能够使用现有用户的现有会话 ID

Sequencer 的工作方式是基于令牌是随机产生的假设。当 Sequencer 执行测试时,计算可能出现的某些特征的概率。定义了显著性水平,如果这些特征的概率低于该水平,则标记为非随机。

让我们使用该死的易受攻击的 Web 应用DVWA)执行一个测试,该应用默认安装在 Metasploitable 2 中:

  1. 确保已将目标作用域修改为 Metasploitable 2 虚拟机的 IP 地址。修改范围并将代理设置为拦截流量后,使用标准 HTTP 协议导航到虚拟机的 IP 地址。点击 DVWA 链接。记下您将截获的两个请求。第一个是 HTTP GET 请求,如图 30所示:

图 30:DVWAGET 请求

第二个请求是设置唯一 cookie 和个人主页PHP会话 ID 的请求,如下所示:

图 31:DVWA 设置的 PHP 会话 ID 和 Cookie

  1. 我们将在系统上设置的 cookie 上使用 Sequencer 执行测试。右键单击第一个 GET 请求并选择 Send to Sequencer 选项。Sequencer 选项卡将亮起,您应该选择此选项。在响应内的令牌位置部分下,选择 PHPSESSID=值,如以下屏幕截图所示:

图 32:定义令牌位置

  1. 点击开始实时捕获按钮,让它运行几秒钟。捕获到 200 多个请求后,可以暂停或停止捕获,然后选择“立即分析”。观察结果:

*

图 33:Sequencer 的结果

在本例中,我们可以看到总体结果非常好。根据我们捕获的请求数量,web 应用生成的会话令牌非常强大。

译码器

这可用于执行应用数据的各种类型的编码或解码。数据的各个部分可以转换为代码,例如 Base64、十六进制和二进制。

使用解码器非常简单。您可以将文本编码或解码为各种输出。例如,在*图 34 中,*一个简单的明文字符串可以编码到 Base64 中

图 34:使用解码器将明文编码为 Base64

在渗透测试中,您可能会发现 web 应用公开了可以解码为可读文本的信息。或者,您可能需要利用需要编码为 HTML 或 URL 的漏洞,并将该代码转发回 web 应用以获得响应。

比较器

当您需要查看两项数据之间的视觉差异时,这非常方便;例如,当您查看有效和无效用户凭据之间的响应或检查会话令牌是否随机时。

当我们使用 Sequencer 工具时,我们讨论了会话固定攻击。让我们使用比较器工具在 Mutillidae 中执行一个测试,看看可以发现什么。在这里,我们将不使用Sequencer工具,因为我们将执行一个简单的测试:

  1. 确保已将目标定义为 OWASP BWA 虚拟机,并将代理设置为拦截。配置目标后,使用 HTTP 协议导航到 BWA 应用的主页面。
  2. 选择 Mutillidae II 链路,转发接收到的请求。接下来,点击登录/注册链接,确保请求被转发。然后使用adminusernameadminpassword登录。登录后,进入代理工具的HTTP 历史记录选项卡。找到两个请求,即 GET 和 POST 请求。 ** 选择 GET 请求,它是在我们点击登录/注册链接时捕获的。右键单击请求并选择 Send to Comparer,如以下屏幕截图所示:*

*

图 35:向 Comparer 发送相关请求

  1. 对 POST 请求重复步骤 3,显示登录成功。

  2. 单击 Comparer 选项卡,确保选择两个不同的请求进行比较,如图 36所示:

图 36:选择要比较的请求

  1. 点击词语按钮,观察结果,如下图所示:

图 37:比较请求的结果

请注意,两个请求的 PHPSESSID 是相同的。这意味着 web 应用不会生成唯一的会话 ID,因为经过身份验证和未经身份验证的请求的 ID 相同。因此,web 应用容易受到会话固定攻击。

扩展器

在这里,您可以通过使用 BApp 商店的扩展或使用第三方代码来扩展 Burp 套件的功能。这些扩展使您能够自定义程序的功能,例如用户界面用户界面)更改和添加自定义扫描仪检查。

使用 Extender 工具,我们可以使用 BApp 存储添加其他扩展。例如,添加软件漏洞扫描程序(如下图所示)扩展了内置漏洞扫描程序的功能:

图 38:使用 BApp 存储来扩展插件

一些扩展被详细描述为 Pro 扩展,这意味着它们只适用于 Burp Suite Professional。在 Extensions 选项卡下,您可以加载商店中未列出的扩展。

总结

在本章中,您已经了解了 Burp Suite 及其各种版本。您已经完成了环境设置工作,并学习了如何利用 internet 上免费提供的易受攻击的 web 应用来准备实验室。您已经很好地了解了 Burp 套件中存在的各种工具,以及如何通过在自己的实验室环境中使用实际示例来使用它们。

在下一章第 8 章攻击 Web 应用中,我们将研究 Web 应用中存在的各种漏洞,并了解它们的存在方式和原因。我们将使用各种工具,包括 Burp Suite,对易受攻击的 web 应用执行各种攻击。

问题

  1. Burp套装的核心是什么?
  2. 什么时候使用被动扫描合适?
  3. 中继器的用途是什么?
  4. 入侵者工具中最全面的攻击方法是什么?
  5. 如何扩展 Burp Suite 的功能?*************