Burp Scanner 使用指南:爬虫与漏洞检测全流程解析

前言

在 Web 渗透测试中,Burp Suite 不仅是一款功能强大的抓包工具,还内置了全面的漏洞扫描模块 ------ Burp Scanner。它通过内置的爬虫(Crawler)自动构建网站结构,并结合被动与主动扫描器(Scanner)对目标进行漏洞检测,是执行高效 Web 安全测试的重要利器。


目标范围(Scope)

Burp 的所有扫描操作都基于「范围控制」,即 Target → Scope 设置。只有被包含在范围内的目标,才会被爬虫或扫描器处理。


我们有两种方法将某个地址加入Scope

法一:在HTTP History中选中请求右键点击,选择 Add to scope

法二:所有经过 Burp Proxy 的 HTTP/HTTPS 请求,其对应的目标(域名+路径)都会自动出现在 Target → Site Map 里,这是 Burp 的核心功能之一。我们可以在Target → Site Map选中请求右键,然后选择Add to scope

如果扫描某些项目可能存在危险,或者可能会像注销功能一样结束会话,我们可能还需要将其从范围中排除。要从范围中排除某个项目,我们可以右键单击任何范围内的项目,然后选择Remove from scope

最后,我们可以转到 Target>Scope setting 查看Scope的详细信息。在这里,我们还可以添加/删除其他项目,并使用高级范围控制来指定要包含/排除的正则表达式模式。

爬虫(Crawl)

一旦我们准备好Scope,我们就可以转到Dashboard选项卡并单击New Scan来配置我们的扫描,它将自动填充我们的Scope内的项目:

我们看到 Burp 提供了两个扫描选项:Crawl and AuditCrawl

  • Crawl(网络爬虫)会通过访问网站页面中的任何链接、表单以及检查网站发出的任何请求来导航网站,从而构建网站的综合地图。最终,Burp 扫描器会向我们呈现目标地图,将所有可公开访问的数据集中显示,这将是本节的重点。
  • 如果我们选择Crawl and Audit,Burp 会在爬虫程序运行后运行扫描器,即实现爬虫、被动扫描、主动扫描的全过程,我们后面再介绍。

注意:爬取扫描仅跟踪并映射我们指定的页面及其上找到的任何页面中的链接。它不会像 dirbuster 或 ffuf 那样执行模糊测试扫描来识别从未被引用的页面。您可以使用 Burp Intruder 或 Content Discovery 来完成此操作,然后根据需要将其添加到范围中。


让我们选择Crawl,然后转到Scan configuration选项卡来配置我们的扫描。在这里,我们可以选择单击New"构建自定义配置",这将允许我们设置诸如抓取速度或限制之类的配置

为了简单起见,我们将单击按钮Select from library,这将为我们提供一些可供选择的预设配置(或我们之前定义的自定义配置):

继续到Application login选项卡。在此选项卡中,我们可以添加一组凭据,供 Burp 尝试在其找到的任何登录表单/字段中进行登录。我们还可以通过在预配置的浏览器中执行手动登录来记录一组步骤,以便 Burp 知道要执行哪些步骤才能获得登录会话。

如果我们使用经过身份验证的用户运行扫描,这一点至关重要,这将使我们能够覆盖 Burp 可能无法访问的 Web 应用程序部分。由于我们没有任何凭据,因此我们将它留空。

这样,我们就可以点击Ok按钮开始抓取扫描了。扫描开始后,我们可以在Dashboard以下选项卡中看到扫描进度Tasks

最后,扫描完成后,我们将在任务信息中看到Crawl Finished,然后返回 Target>Site map 查看更新后的站点地图:

被动扫描器(Passive Scanner)

现在站点地图已完全构建,我们可以选择扫描此目标以查找潜在漏洞。

与主动扫描不同,被动扫描不会发送任何新请求,而是分析目标/范围内已访问页面的来源,然后尝试识别potential漏洞。这对于快速分析特定目标非常有用,例如缺少 HTML 标签或潜在的基于 DOM 的 XSS 漏洞。然而,由于不发送任何请求来测试和验证这些漏洞,被动扫描只能提供潜在漏洞的列表。不过,Burp 被动扫描器会Confidence为每个已识别的漏洞提供相应的级别,这也有助于确定潜在漏洞的优先级。

让我们先尝试仅执行被动扫描。为此,我们可以再次在 Target>Site map 中选择目标,或在 Burp 代理历史记录(HTTP history)中选择请求,然后右键单击它并选择Passively scan this target

被动扫描将开始运行,其任务也可以在Dashboard选项卡中看到。扫描完成后,我们可以点击View Details查看已识别的漏洞。

或者,我们可以在Dashboard选项卡的窗格Issue activity中查看所有已识别的问题。如我们所见,它显示了潜在漏洞的列表、其严重程度及其置信度。通常,我们希望查找具有High严重程度和Certain置信度的漏洞。但是,对于非常敏感的 Web 应用程序,我们应该包含所有级别的严重程度和置信度,并特别关注High严重程度和Confident/Firm置信度。

主动扫描仪(Active Scanner)

主动漏洞扫描器是 Burp Scanner 最强大的部分。主动扫描比被动扫描更全面:

  1. 它首先运行爬网程序和 Web 模糊测试器(如 dirbuster/ffuf)来识别所有可能的页面
  2. 它对所有已识别的页面运行被动扫描
  3. 它检查被动扫描中识别出的每个漏洞,并发送请求来验证它们
  4. 它执行 JavaScript 分析来识别进一步的潜在漏洞
  5. 它模糊各种已识别的插入点和参数,以寻找常见漏洞,如 XSS、命令注入、SQL 注入和其他常见的 Web 漏洞

启动主动扫描器有两种方式

  • 法一:我们可以像启动被动扫描一样,在 Target>Site map 或在 Burp 代理历史记录(HTTP history)中选择请求,然后右键单击它并选择Do active scan
  • 法二:我们可以使用Dashboard选项卡中的New Scan按钮对Scope运行扫描,这将允许我们配置主动扫描。这次,我们将选择Crawl and Audit选项,它将执行上述所有操作以及我们迄今为止讨论的所有内容。

Scan configuration选项卡,我们可以设置爬虫配置(如前所述)和审计配置。审计配置使我们能够选择要扫描的漏洞类型(默认为全部),扫描器将尝试在其中插入其有效载荷,此外还有许多其他有用的配置。同样,我们可以使用Select from library按钮选择配置预设。对于我们的测试,由于我们关注的是可能允许我们控制后端服务器的漏洞,因此我们将选择此Audit checks - critical issues only选项。

最后,我们可以在Application login选项卡添加登录详细信息,就像我们之前在爬虫配置中看到的那样。

扫描完成后,我们可以在选项卡Issue activity中的窗格中查看Dashboard并过滤迄今为止已识别的所有问题。从结果上方的过滤器中,选择HighCertain查看过滤后的结果:

Burp 成功识别出一个 操作系统命令注入(OS Command Injection) 漏洞,并将其标记为 High 级别的严重性与 Firm 的置信度,表明该漏洞极有可能真实存在且具有较大危害。我们可以点击该条目,查看详细的说明,包括 Burp 发送的具体请求、服务器的响应内容,以及该漏洞的利用方式和影响范围。此外,"Path to issue" 功能还展示了从起始页面逐步访问至该漏洞页面的路径,帮助我们理解漏洞的触发流程与上下文位置。

报告导出

最后,所有扫描完成后,我们可以前往 ( Target>Site map),右键单击目标,然后选择 ( Issue>Report issues for this host)。系统将提示我们选择报告的导出类型以及要包含在报告中的信息。导出报告后,我们可以在任何 Web 浏览器中打开它来查看其详细信息。

Burp 的报告按照漏洞的严重性和可信度进行分类,还包含每个漏洞的详细描述、利用方式(PoC)以及修复建议,非常适合作为渗透测试过程中对外输出的参考材料。

参考资料与靶场

Burp Scanner
ZAP Scanner

宇宙安全声明

本博客所提供的内容仅供学习与交流,旨在提高网络安全技术水平,谨遵守国家相关法律法规,请勿用于违法用途,博主不对任何人因使用博客中提到的技术或工具而产生的任何后果负责。如果您对文章内容有疑问,可以留言私信。