【THM】Burp Suite:The Basics(Burp Suite-基础)-学习

注意:本文章内容已经与较新版本的Burp Suite不适配,请谨慎参考。

本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/burpsuitebasics

本文相关内容:关于使用Burp Suite进行Web应用程序渗透测试的入门级介绍。

image

简介

本文将介绍关于Burp Suite 的入门级基础知识。

具体来说,在本文中我们将关注以下内容:

  • 什么是Burp Suite;
  • 概述Burp Suite中的一些可用工具;
  • 安装Burp Suite(正版安装手段);
  • 导航和配置Burp Suite。

我们还将介绍BurpSuite的核心:Burp Proxy(Burp 代理)。

本文所涉及的内容主要只是为了提供Burp套件的基础知识,所以文中的理论知识部分会更多一点。

什么是Burp Suite?

简单地说:Burp Suite是一个用Java编写的框架,旨在为针对web应用程序进行渗透测试提供一站式服务,在许多方面,这一目标是易于实现的,因为Burp是一种手动进行web应用程序安全评估的行业标准工具。此外,在评估移动端应用程序安全时,Burp Suite也经常可被使用,因为Burp suite中用于测试web应用程序的那些功能,可以几乎完美地运用于 测试为大多数移动应用程序提供支持的APIs(应用程序编程接口)。

Burp Suite可以捕获和操作攻击者和web服务器之间的所有流量:这是Burp Suite框架的核心。在成功捕获到web请求(requests )之后,我们可以选择将它们发送到Burp Suite框架的各个其他部分;这种拦截、查看和修改web请求(requests)的能力,发生在这些请求(requests)被发送到目标服务器之前(或者,在某些情况下,发生在responses被我们的浏览器接收之前),这使得Burp Suite能够适合任何类型的手动web应用程序测试。

有各种不同版本的Burp Suite,在本文中我们将使用Burp Suite社区版,因为它可以免费用于任何(合法的)非商业用途。Burp Suite专业版和企业版都需要昂贵的许可费用,但同时它们也拥有一些强大的额外功能:

  • Burp Suite专业版——我们可以把Burp Suite专业版理解为不受限制的Burp Suite社区版本,它具有以下功能:

    • 能够作为一个自动化的漏洞扫描器(拥有Scanner功能模块);
    • 能够作为一个不受速率限制的模糊器(fuzzer)/暴力破解攻击器(bruteforcer);
    • 能够保存项目供以后使用,能够生成报告;
    • 拥有允许与其他工具集成的内置API;
    • 能够不受限制地访问并添加新的扩展模块,从而获得更多的功能;
    • 可以访问Burp Suite Collaborator(协作器),从而能够有效地提供一个自托管或运行在Portswigger所拥有的服务器上的独特请求捕获器。

    简而言之,Burp Pro是一个非常强大的工具,这就是为什么它的一年订阅费为319英镑/ 399美元;Burp Pro通常只供专业人士使用(工具许可证由渗透测试者的雇主提供)。

  • Burp Suite企业版——与社区版和专业版不同,Burp 企业版主要用于持续扫描,它提供了一个自动扫描器,从而可以定期扫描目标web应用程序的漏洞,这就像使用Nessus软件来执行自动基础设施扫描一样;其他版本的Burp Suite通常是允许用户在自己的电脑上执行手动渗透测试,而企业版的Burp Suite则不同,它位于服务器上,能够不断地扫描目标web应用程序的漏洞。

答题

通过阅读本小节内容,可帮助我们回答以下问题。

image

Burp Suite社区版的功能

虽然与Burp Suite专业版对比,Burp Suite社区版的功能集相对有限,但它仍然包含了很多可用的优秀功能模块,主要有:

  • Proxy模块:Proxy(代理)允许我们在与web应用程序交互时拦截、查看和修改web请求/响应(requests/responses);它是一个能够拦截 HTTP/HTTPS消息的代理服务器,能够作为一个在浏览器和目标应用程序之间的中间人。
  • Repeater模块:Repeater允许我们在捕获、修改web请求之后,实现多次重新发送相同的web请求;这个模块的功能绝对是无价的,特别是当我们需要通过反复试验来构建payload(例如测试SQL注入漏洞)或者在测试端点的功能缺陷时。
  • Intruder模块:虽然在Burp Suite社区版中严格限制了发送请求的速率,但Intruder允许我们在速率限制内 向目标端点喷洒大量请求;这个功能通常用于暴力破解攻击或者对端点进行模糊测试。
  • Decoder模块:这个模块能够充当一个解码器以帮助转换数据格式,Decoder既可以解码Burp Suite所捕获的信息,又能在将payload发送到目标之前对其进行编码;虽然其他的在线工具也可以完成数据格式转换,但直接在Burp Suite中完成这项工作会更加高效。
  • Comparer模块:这个模块可以充当一个比较器,Comparer允许我们在字符级别上或者字节级别上比较两个数据片段;这项工作也能通过使用其他工具来完成,但是使用Burp Suite的Comparer模块完成 数据比较 会更加高效。
  • Sequencer模块:这个模块能够充当定序器,我们通常使用Sequencer来评估令牌(tokens)的随机值,比如会话的cookie值或者其他随机生成的数据值;如果目标应用程序所使用的算法不能生成安全的随机值,那么就可能会存在一些毁灭性的攻击途径。
  • Spider模块:Spider能够充当网络爬虫,它能用于爬取目标应用程序的内容信息和功能信息。

除了内置功能模块之外,我们还可以编写一些扩展来增加Burp Suite框架的功能,我们通常可以用Java、Python(使用Java Jython解释器)、Ruby(使用Java JRuby解释器)来编写Burp Suite扩展。

通过Burp Suite的Extender模块可以快速轻松地将扩展加载到Burp Suite框架中,Extender模块还提供了一个可以下载第三方模块的商店(被称为BApp Store)。虽然许多扩展都需要Burp Suite专业版的许可证才能进行下载和添加,但仍有相当数量的扩展可以与Burp Suite社区版免费集成,例如,我们可以使用Logger++扩展来强化Burp Suite的内置日志功能。

答题

通过阅读本小节内容,可帮助我们回答以下问题。

image

安装Burp Suite(正版安装手段)

Burp Suite是一个非常有用的工具,无论你是使用Burp Suite评估web应用程序或者移动应用程序的安全性,还是只想用Burp Suite测试你正在开发的web应用程序中的一个新功能。因此,了解如何在各种操作系统上安装Burp Suite非常重要,我们不仅会在Kali或Parrot等渗透测试操作系统中使用Burp Suite工具,也可能会在Windows、macOS上使用它。

幸运的是,访问PortSwigger官网可以让Burp Suite在Linux、macOS和Windows上的安装过程变得非常容易,该官网能为以上三种系统提供专用的Burp Suite安装程序。因为Burp Suite是一个Java应用程序,所以它还可以作为JAR归档文件被下载,并且能够在任何支持Java运行时环境的计算机上有效运行。

在Kali Linux中Burp Suite是预先安装的工具之一,如果由于某种原因,你的Kali中没有Burp Suite,你可以轻松地从Kali apt存储库中安装它。

对于其他操作系统,我们可以访问PortSwigger官网的相关页面,以便开始Burp Suite的安装过程,如下图所示:

image

一旦我们验证了下载文件的完整性,我们就可以按照正常的方式安装Burp Suite(例如,在Windows中运行可执行文件,或者在Linux中使用sudo从终端执行脚本)。

注意:如果在Linux系统中安装Burp Suite,你可以自主选择使用或者不使用root用户权限来进行安装;如果你决定在执行脚本时不使用sudo, 那么Burp Suite将安装在你的主目录~/BurpSuiteCommunity/BurpSuiteCommunity中,并且相关的安装路径不会被添加到系统的PATH变量中。

Burp Suite的安装向导非常直观,无论你所使用的操作系统是什么,接受默认的安装建议通常会是安全的选择,而且仔细阅读安装程序说明也仍然是明智之举。

Burp Suite Dashboard(仪表面板)

当我们打开Burp Suite并接受相应的默认条款时,我们会看到一个项目选择窗口:在Burp Pro中,此窗口将允许我们将新项目保存到磁盘,或者选择加载先前已保存的项目;然而,在Burp Suite社区版中,我们在这里所能做的就是点击"下一步"按钮。

image

接下来的窗口将允许我们为Burp Suite选择配置,在大多数情况下,保持默认配置值即可。

image

接着我们点击上图中的"Start Burp",等待一段时间后将自动打开Burp Suite的主界面,然后我们就可以看到Burp Suite Dashboard(仪表面板):

image

简而言之,Dashboard界面分为四个象限区域:

image

  1. 左上角的Tasks菜单允许我们定义后台任务,这样Burp Suite将在我们使用其他应用程序时在后台执行任务(Pro版本还允许我们在Task菜单中创建按需扫描任务);在Tasks菜单界面中,我们通常会使用默认的"Live passive crawl-动态被动抓取"(自动记录我们访问的web页面)设置。

  2. 左下角的Event log(事件日志)部分会告诉我们Burp Suite正在做什么(例如启动代理,即Proxy),以及关于我们通过Burp所进行的任何连接的信息。

  3. 右上角的Issue Activity部分专属于pro版本,当我们使用Burp Suite社区版时,我们将无法使用该部分;在Burp Suite专业版本中,Issue Activity部分会列出自动扫描器发现的所有漏洞,这些漏洞会根据严重程度进行排序,并会根据Burp Suite对"目标组件易受攻击"的确定程度进行过滤。

  4. 右下角的Advisory部分提供了关于所发现的漏洞的更多信息,包括可参考、可建议的漏洞修复措施;我们可以将这些数据导出到一个报告中。

我们可以点击Issue Activity部分中的一个示例漏洞,然后Advisory部分就会出现一些和示例漏洞相关的信息:

image

在Burp Suite的各个选项卡和窗口中,你会发现有一个帮助图标:内含一个问号的圆圈标志。

image

点击这些帮助图标将打开一个包含对应部分帮助的新窗口,例如:

image

如果你不知道Burp Suite中某个功能是干什么的,查看相关的帮助信息可能非常有用。

Burp Suite界面导航

默认情况下,在Burp Suite的GUI中进行导航 完全可以通过顶部菜单栏来完成:

image

通过点击顶部菜单栏中的按钮,我们能够在不同功能模块之间进行切换;如果我们当前所选的功能模块有多个子选项卡,那么我们还可以使用子菜单栏来切换子选项卡(子菜单栏会出现在原始菜单栏的下方),这些子选项卡通常会提供特定于当前功能模块的设置。

如果你希望单独查看多个选项卡,可以选择将选项卡弹出到单独的窗口中;这需要我们单击屏幕顶部的应用程序菜单中的"Windows",然后选择要分离的某个功能模块("Detach xxxx"):

image

image

除了菜单栏之外,在Burp Suite中还可以 使用快捷键快速导航到关键选项卡:

image

Burp Suite 设置选项

在开始学习Burp Proxy之前,让我们看一下可用于配置Burp Suite的选项。

  • 全局设置可以在"用户选项-User options"中找到;
  • 项目特定的设置可以在"项目选项-Project options"中找到。

tips:在新版本的Burp Suite中,用户选项和项目选项都在顶部菜单栏的Settings选项卡下。

在User options(用户选项)将适用于我们每次打开Burp Suite时,而Project options(项目选项)则只能应用于某个Burp项目;鉴于我们并不能保存Burp Suite 社区版中的项目,我们的所设置的Project options将在每次关闭Burp Suite时自动重置。

本文所使用的是Burp Suite社区版,在本小节中,我们将主要介绍User Options中的一些重要选项:

image

User Options(用户选项)中的设置适用于全局(即这些设置能作用于整个Burp Suite——而不仅仅是某个Burp项目),但是User Options(用户选项)中的许多设置可以被Project options(项目选项)中的对应设置所覆盖。

User Options中有四个主要的选项卡(在新版本的Burp Suite中不止这些):

  • Connections选项卡:这个选项卡中的选项允许我们控制Burp Suite如何连接到目标,例如,我们可以为Burp Suite设置一个代理来连接目标。
  • TLS选项卡:这个选项卡允许我们启用和禁用各种TLS(传输层安全)选项,并且能够给我们提供一个可以上传客户端证书的地方(如果某个web应用程序需要我们使用证书来建立连接)。
  • Display选项卡:这个选项卡允许我们改变Burp Suite的外观,此处的设置包括更改字体、更改缩放比例、为Burp Suite设置主题(例如黑暗模式)以及配置各种选项。
  • Misc选项卡:这个选项卡包含了很多设置,如键绑定列表(热键),这将允许我们查看和更改Burp Suite所使用的键盘快捷键;熟悉这些设置是明智的,因为使用键绑定可以大大加快我们的工作流程。

接下来,让我们继续查看Project options中特定于项目的配置。

Project options中有五个主要的选项卡(在新版本的Burp Suite中不止这些):

  • Connections选项卡:这个选项卡的作用和User Options中的对应设置类似,但是这个选项卡中的设置可以覆盖User Options中的对应设置,例如你可以仅为当前项目设置一个代理,这能够覆盖你在User options中的任何代理设置;此外,这个选项卡中还有一些额外选项,例如它包含了"Hostname Resolution-主机名解析"选项(允许你在Burp Suite中将域名映射为IP地址),还包含了"Out-of-Scope Requests-范围外请求"选项(能让我们决定Burp Suite是否将发送请求到其他未明确指定的地方)。
  • HTTP选项卡:这个选项卡定义了Burp Suite将如何处理HTTP协议的各个方面,例如,是否会跟随重定向或者如何处理不寻常的响应代码。
  • TLS选项卡:这个选项卡中的设置能够覆盖Burp应用程序范围内的TLS设置,并且可以展示用于我们访问过的站点的一个公共服务器证书列表。
  • Sessions选项卡:这个选项卡为我们提供了处理会话的选项,它允许我们定义Burp Suite如何获取、保存和使用它从目标站点接收到的会话cookie,它还允许我们定义宏,我们可以用这些宏来自动化一些事情(比如登录到web应用程序)。
  • Misc选项卡:这个选项卡中的选项比User Options部分的等效选项卡中的选项要少,它的许多选项只有在你使用Burp Suite专业版时才可用(例如那些配置Collaborator的选项);另外,此选项卡中有几个与日志和嵌入式浏览器相关的选项非常值得我们研究。

答题

在本地Kali机上查看BurpSuite界面:

问题1:你可以在哪个项目选项的子选项卡中找到对"Cookie jar"的引用?

image

问题2:你可以在哪个用户选项的子选项卡中更改 Burp Suite 更新行为?

image

问题3:用户选项的Misc子选项卡中允许你更改 Burp Suite 键绑定的部分的名称是什么?

image

image

Burp Proxy(代理)介绍

Burp Proxy(代理)是BurpSuite中最基本也是最重要的工具,它允许我们捕捉我们和目标之间的请求消息和响应消息,然后,我们就可以对这些数据进行操作或将其发送到其他工具模块做进一步处理,最后我们再允许将这些数据继续发往目的地。

例如,如果我们通过Burp Proxy(代理)向https://tryhackme.com发出请求,然后我们的请求将被捕获,在我们明确允许请求消息通过之前,该请求将无法继续发送到TryHackMe服务器(我们也可以选择对来自服务器的响应消息执行类似的操作)。

Burp Suite这种能够拦截请求和响应的能力 意味着我们可以完全控制我们的网络流量——当涉及到测试web应用程序时,这是一种非常宝贵的能力。

在使用Proxy(代理)之前,我们还需要进行一些配置,让我们从查看Proxy(代理)界面开始。

当我们第一次打开Proxy(代理)选项卡时,Burp为我们提供了一堆有用的信息和背景以供阅读,这些信息非常值得一读,然而,真正有趣的事情发生在我们捕获请求之后:

image

在Proxy(代理)激活并开启拦截功能之后,我们接着使用浏览器向TryHackMe网站发出一个请求,此时,发出请求的浏览器将会挂起,该请求消息则将出现在Proxy选项卡的界面中,我们可以看到如上图所示的画面。

接下来,我们可以选择丢弃或转发请求消息(可以先对请求消息进行编辑),我们还可以在Proxy选项卡界面做其他事情,比如将请求发送到其他Burp功能模块,或者将请求的内容复制为cURL命令,并将其保存到文件中,等等。

当我们完成Proxy(代理)中的操作后,我们可以单击"Intercept is on-拦截正开启"按钮来 禁用Proxy的拦截功能,这将允许之后的请求消息 能够成功通过代理而不被拦截。

当Proxy的拦截功能关闭时,BurpSuite在默认情况下仍然会记录 通过代理发出的请求消息,这对于我们回顾和分析历史请求消息非常有用(即使我们没有在这些历史请求发出时 特别捕捉它们);Burp Proxy还会捕获和记录WebSocket通信消息,这在分析web应用程序时非常有用。

当我们选择Proxy选项卡中的"HTTP历史"和"WebSockets历史"子选项卡时,我们可以查看到相关的日志信息(从而能够分析历史请求或者响应):

image

值得注意的是,在Proxy中捕获的任何请求都可以通过右键单击它们并选择"发送到…"来发送到Burp Suite框架中的其他工具模块;例如,我们可以将之前已经代理到目标的HTTP请求转发给Burp Suite中的Repeater功能模块。

最后,在Proxy选项卡中还有一个Option子选项卡,通过此处的Option子选项卡——我们可以更改特定于Proxy模块的设置选项。

附加到Proxy模块的Option子选项卡中的选项,能够使我们更好地控制Proxy(代理)的操作方式:例如,在默认情况下,Proxy(代理)不会主动拦截服务器所发出的响应消息,除非我们明确要求Proxy在每个请求的基础上拦截相关的响应;所以,我们可以通过选择"基于以下规则截取响应"复选框并选择一个或多个规则来覆盖默认设置,具体而言,我们可以配置"Or Request Was interrupted"规则,此规则可用于捕获被代理拦截的所有请求的相关响应。

image

除了上图的配置规则外,你也可以制定自己的规则来控制Proxy的操作方式。

这个Option子选项卡的另一个特别有用的部分是"匹配和替换"部分,这部分允许你对传入和传出请求执行正则表达式匹配;例如,你可以自动更改用户代理以在传出请求中模拟不同的web浏览器,或者删除传入请求中设置的所有cookie,同样,你也可以在这里自由地制定自己的规则。

image

答题

阅读本小节内容并在本地Kali机上查看BurpSuite界面:

image

配置流量代理(FoxyProxy)

有两种方法可以通过 Burp Suite 代理我们的流量:

  1. 使用Burp Suite的内置嵌入式浏览器(本小节对此不做赘述);
  2. 配置本地web浏览器,然后通过Burp代理我们的流量(此方法更加常用,本小节主要介绍这种方法)。

在本地Kali机中,Burp Proxy(代理)默认会通过在127.0.0.1:8080上打开web界面来开展相关工作,所以,我们需要通过8080端口重定向所有的本地浏览器流量,然后才能开始使用Burp拦截流量;我们可以通过改变浏览器设置来做到这一点,或者使用一个名为FoxyProxy的浏览器扩展进行配置,FoxyProxy插件允许我们保存代理配置文件,这意味着我们可以很方便地切换到我们的"Burp Suite"配置文件——通过点击勾选配置文件,就能快速启用Burp代理或者关闭Burp代理。

FoxyProxy浏览器插件有两个版本:基础版和标准版。这两个版本都允许你更改代理设置,然而,FoxyProxy标准版能够更好地控制什么流量可通过代理发送;例如,标准版的FoxyProxy将允许你设置模式匹配规则 来确定请求是否应该被代理——这比FoxyProxy基础版提供的简单代理要复杂得多。

使用FoxyProxy基础版对我们来说绰绰有余,FoxyProxy是通过Firefox浏览器来安装和配置的,相关的插件下载链接如下:

https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-basic/

在Firefox浏览器中完成插件安装之后,浏览器的右上方会出现一个插件图标按钮,这将允许你访问代理配置(先点击右上角的按钮,才能看到如下界面):

image

FoxyProxy中没有默认配置(如上图所示,没有可供选择的配置),我们可以点击"Options"按钮来创建我们的Burp代理配置,这将打开一个新的浏览器选项卡:

image

接着我们点击上图中的"Add-添加"按钮,并填写以下值(填写完成后点击保存即可):

  • Title:Burp(或者填写其他你想设置的名称)
  • Proxy IP:127.0.0.1
  • Port:8080

image

现在,当你点击浏览器顶部的FoxyProxy插件图标时,你就会看到有一个可用于Burp的配置:

image

如果我们单击上图中的"Burp"配置,本地浏览器将开始通过127.0.0.1:8080定向所有流量。

注意:如果Burp Suite应用程序并未启动运行,本地浏览器将无法在插件中的"Burp"代理配置激活时发出任何web请求。

成功激活插件中的Burp代理设置之后,让我们切换到Burp Suite中,我们要确保拦截选项是打开的:

image

现在,当你尝试在本地Firefox浏览器中访问 http://MACHINE_IP/ 的主页时(这会向目标站点发出一个请求),你的浏览器会被自动挂起,并且你的代理将填充相关的请求头,最终你在浏览器中发出的请求会被Burp Suite所拦截。

你已经成功拦截了本地浏览器所发出的请求消息,此时在Burp Proxy选项卡界面中,你可以选择转发或丢弃请求消息,也可以选择将请求消息发送到另一个Burp功能模块中,你还可以通过右键单击请求消息并且从右键菜单中选择特定选项来执行一些特定操作。

注意:当我们激活浏览器插件中的Burp代理配置并开启Burp Proxy的拦截功能时,我们的浏览器将在用户发出请求时自动挂起。

答题

在本地Kali机上查看BurpSuite界面:

image

image

配置HTTPS流量代理

通过上一小节中的配置,我们已经可以拦截HTTP流量——下一步我们需要尝试拦截HTTPS流量。

在我们使用Burp Suite拦截HTTP流量时,如果我们导航到启用了TLS(也就是使用HTTPS协议)的站点会发生什么?例如 https://google.com/

image

如上图所示,我们会得到一个错误提示,具体而言,Firefox会通过上图告诉我们Portswigger证书颁发机构(CA)没有被授权保护此连接。

针对以上情况,Burp为我们提供了一种简单的解决方法:我们需要让Firefox浏览器信任Portswigger证书有权保护HTTPS连接,因此我们可以手动将此CA证书添加到受信任的证书颁发机构列表中。

首先,在Burp代理配置激活(未开启拦截功能)的时候直接访问 http://burp/cert ,下载一个名为cacert.der的文件——并将其保存在你的机器的某个地方。

image

接下来,在Firefox搜索栏中输入about:preferences并按下Enter键,这将把我们带到FireFox的设置页面,在设置页面中搜索"certificates",我们会找到"View certificates"选项:

image

点击上图中"View Certificates" 按钮,这将允许我们查看所有受信任的CA证书。

我们继续点击"Import",然后选择我们刚才所下载的cacert.der文件来为Portswigger机构注册一个新的证书,接下来,在弹出的菜单中,选择"Trust this CA to identify websites"并点击确定即可:

image

image

image

我们现在应该可以在激活了Burp代理(未开启拦截功能)的情况下,自由访问任何启用了TLS(也就是使用HTTPS协议)的网站。

image

Burp Suite内置浏览器

除了可以选择修改我们的本地web浏览器来使用Burp代理,Burp Suite还包括了一个内置的Chromium浏览器,这个浏览器是预先配置的,直接就可以使用Burp代理,而不需要我们做任何修改。

我们可以通过Proxy(代理)模块的"Intercept"子选项卡中的"Open Browser-打开浏览器"按钮来启动Burp浏览器:

image

现在会弹出一个Chromium窗口,我们在这里发出的任何请求都将通过Burp代理。

image

注意:在项目选项和用户选项中有许多关于Burp Suite内置浏览器的设置。

如果我们在Linux上以root用户运行Burp Suite,Burp Suite可能会无法创建一个沙盒环境来启动Burp浏览器,这将导致抛出一个错误并死亡:

image

针对上述情况,有两个简单的解决方案:

  • 明智的选择:我们可以创建一个新用户,并在低权限帐户下运行Burp Suite。

  • 简单的选择:我们可以进入"项目选项"->"杂项"->"Burp浏览器",并勾选"允许嵌入式浏览器在没有沙箱的情况下运行",选中此选项将允许Burp浏览器在root用户权限下启动,但请注意,出于安全原因,默认情况下该选项是被禁用的。

image

Target-Scope

本小节我们将查看使用Burp Proxy时的一个很重要的部分——Scope(它是Target选项卡的子选项卡)。

我们可能不需要使用Burp代理来记录浏览器上的所有流量,当选择让Burp记录所有流量内容时(会包含很多和目标网站无关的流量信息),可能会混淆我们在Burp Suite中所记录的日志内容;简而言之,我们应该让Burp代理记录一定范围内的流量而并非全部流量。

因此,在必要的情况下,我们需要使用Scope来控制Burp代理对于流量的记录范围。

通过设置Scope可以允许我们定义Burp代理所记录的内容,我们能够限制Burp Suite只针对我们想要测试的web应用程序进行流量记录。例如:我们可以先切换到Target选项卡,再从Site map列表中右键单击选中某个目标站点,并点击"Add To scope(范围)",然后,Burp Suite就会询问我们是否希望停止记录范围(scope)之外的任何内容——我们选择"yes"即可。

image

image

现在我们可以切换到Target选项卡下的"scope"子选项卡,然后我们就可以检查流量记录范围(可以看到我们刚才添加的站点):

image

如上图所示:Scope子选项卡允许我们通过包含或者排除 域名/ip地址 来控制Burp Proxy(代理)所记录的流量范围。

我们刚才只是选择禁用范围外流量的日志记录,但是当我们启用Burp代理的拦截功能时,仍然会拦截浏览器中的所有流量;如果要关闭拦截全部流量的功能,我们需要进入到Proxy选项卡的Options子选项卡,并从"Intercept Client Requests-拦截客户端请求"选项中配置"And URL Is in target scope"规则。

image

按照上图选项成功配置规则之后,Burp代理将完全忽略范围之外的任何流量内容(既不记录范围外的流量日志,也不拦截范围外的浏览器请求),从而能够极大地清理通过Burp Proxy(代理)的流量。

Target-Site Map和Target-Issue Definitions

使用Scope子选项卡可以控制Burp代理的流量,这可能是Target选项卡中最有用的部分,但Scope并不是Target选项卡中唯一有用的部分。

在Target选项卡下有三个子选项卡(包括了上一小节提到的Scope):

  • Site map: 这个子选项卡允许我们以树形结构绘制目标应用程序(通常是web应用程序,即网站),我们访问的每个页面都会显示在Site map中,因此,我们可以通过浏览web应用程序来自动生成目标网站地图;在Burp Suite专业版中,该子选项卡将允许我们通过爬虫自动抓取目标(即查看每个页面的链接并使用它们绘制出尽可能多的网站内容),而在Burp Suite社区版中,我们也可以在执行初始枚举步骤时使用Site map来积累数据。

    Site map还能够帮助我们映射API,当我们访问一个页面时,在页面加载过程中 用于检索数据的任何API端点都会显示在Site map界面。

  • Scope:在上一小节中,我们已经介绍了这个子选项卡,它能允许我们控制Burp代理的目标范围;

  • Issue Definitions:在Burp Suite社区版中,虽然我们无法访问Burp漏洞扫描器,但是我们仍然可以访问扫描器所能够扫描的所有漏洞列表;这个子选项卡能够为我们提供一个web漏洞列表(包括漏洞的描述和引用),如果我们需要书写漏洞报告或者描述漏洞信息,我们就可以从中获得参考。

tips:以上三个子选项卡名称所对应的英文翻译——Site map(站点地图),Scope(范围),Issue Definitions(问题定义)。

答题

启动目标机器,在攻击机上激活Burp代理并且不启用拦截功能,使用本地浏览器访问目标站点( http://10.10.53.186/ )的每个页面,然后检查Burp Suite中的Target选项卡下的Site map界面(找到一个可疑端点并查看其响应消息):

image

image

找到的flag为:THM{NmNlZTliNGE1MWU1ZTQzMzgzNmFiNWVk} 。

查看Burp Suite中的Issue Definitions列表(它是Target选项卡下的子选项卡),找到 易受攻击的JavaScript依赖项(Vulnerable JavaScript dependency) 所对应的漏洞严重性:

image

严重性为:Low

image

实例练习

在现实世界的web应用程序中,我们会测试目标站点 是否存在各种各样的漏洞,其中一个漏洞就是跨站点脚本(或XSS)漏洞。

你可以简单地把XSS漏洞理解为:如果我们能将一个客户端脚本(通常是Javascript)注入到目标网站页面中,并可以通过这种方式执行脚本,那么目标网站就存在XSS漏洞。

XSS漏洞有很多种——我们在本小节测试的XSS类型被称为“反射型”XSS,因为它只会影响发出web请求的用户。

操作

查看目标站点的support页面: http://10.10.53.186/ticket/

image

在上图中的"Contact Email"输入框中,输入以下内容:

<script>alert("Succ3ssful XSS")</script>

你会发现此处有一个过滤器在限制你的输入内容,该过滤器可以阻止你添加 任何不允许在电子邮件地址中使用的特殊字符。

幸运的是,客户端过滤器非常容易绕过,有多种方法可以禁用过滤器脚本,或者在一开始就阻止过滤器脚本加载。

接下来让我们使用Burp Suite来绕过上述客户端过滤器。

我们打开Burp并启动Burp代理,然后开启拦截功能(尝试捕获浏览器中针对目标页面的请求消息),先在浏览器中通过目标站点的Support页面发送请求:

image

成功捕获到请求后,修改email 字段为 <script>alert("Succ3ssful XSS")</script>,然后使用Ctrl + U快捷键对修改之后的内容进行一次URL编码,以使其稍后可以安全地被发送:

image

我们点击上图中的"Forward"按钮,这将转发修改之后的请求到目标网站,如果我们在浏览器页面中得到一个js弹框(代表我们插入的js脚本成功被执行)则说明目标站点存在XSS漏洞:

image

小结&Pro版下载链接

通过学习本文内容,能够很好地掌握Burp Suite的主要界面内容和选项配置,并可以了解Burp Proxy(代理)的基本工作流程。
关于Burp Suite专业版的第三方获取链接如下(验证:52pj):

posted @ 2023-04-08 11:29  Hekeatsll  阅读(1725)  评论(1编辑  收藏  举报