浏览器供电扫描

由于浏览器的发布供电扫描回来Burp Suite Professional 2020.8.1我们有很多客户要求我们选择我们选择与Chromium集成的动机,并有关该功能如何工作的更多信息。

在这篇文章中,我的目标是钻取我们在构建此功能时面临的一些技术挑战,分享有关集成在引擎盖下的内容以及突出我们计划在来年建立的一些酷炫功能的详细信息。

找到攻击表面

15年前,当Netscape Navigator仍然是一件事时,Web很大程度上是同步的。beplay体育能用吗单个HTTP请求通常会导致包含所有传出链接的HTML响应,并且一旦将响应发送到客户端,它就非常漫长。使用此模型,查找和映射攻击表面相对容易,因为应用程序中的每个位置通常映射到单个HTTP请求和响应。由于DOM通常在服务器端完全构建,查找要访问的新位置与从DOM缩短所有链接并将其添加到未来访问的列表中。

传统网络1.0架构beplay体育能用吗
传统的Web 1.0应用beplay体育能用吗程序架构。

XHR,Ajax和MicroServices来了

由于客户端计算功率增加和Web浏览器获得了一个更丰富的功能集,与XMLHTTPRbeplay体育能用吗EQUEST(XHR)的引入和建立Web应用程序的异步JavaScript和XML(AJAX)模式耦合,越来越多的构建DOM的责任被推入浏览器。微服务的普遍率是另一个推动浏览器的建筑。

现代Web 2beplay体育能用吗.0应用架构
现代Web 2beplay体育能用吗.0应用程序架构。
beplay体育能用吗Web开发框架趋势
前端JavaScript框架的兴起。

虽然这种趋势在制作Web应用程序的响应性和觉得如一流的现代应用时,它在自动试图发现攻击面时引入了重大挑战。beplay体育能用吗如前所述,在传统的Web架构中,攻击表面主要限于主文档HTTP请求。beplay体育能用吗在新世界中,攻击表面被分解并展开了所有个人API调用和客户端JavaScript,使得找到更难。

这种转变如何影响爬行物?

One of the main guiding principles behind Burp’s new crawler is that we should always attempt to navigate around the web applications behaving as much as possible like a human user.. This means only clicking on links that can actually be seen in the DOM and strictly following the navigational paths around the application (not randomly jumping from page to page).Before we had browser-powered scanning, the crawler (and the old spider) essentially pretended to be a web browser. It was responsible for constructing the requests that are sent to the server, parsing the HTML in the responses, and looking for new links that could be followed in the raw response we observed being sent to the client. This model worked well in the Web 1.0 world, where generally the DOM would be fully constructed on the server before being sent over the wire to the browser. You could be fairly certain that the DOM observed in an HTTP response was almost exactly as it would be displayed in the browser. As such, it was relatively easy to observe all the possible new links that could be followed from there.Things start to break down with this approach in the modern world. Often the main HTML document returned when navigating to an application is a simple container, waiting for some JavaScript to run to populate the DOM - as shown in the example below.

反应DOM容器
示例Reactjs容器。
示例Reactjs脚本。
示例Reactjs脚本。
示例呈现Reactjs我们的应用程序。
示例呈现Reactjs我们的应用程序。

在浏览器供电扫描之前,Web爬虫通常只需请求主文档,解析DOM,得beplay体育能用吗出结论,没有可以遵循的链接,并将此页面视为死端。要正确导航围绕上面的简单示例,需要发生几件事。我们必须加载初始DOM,获取React.js脚本,执行脚本,并等待新的链接出现在DOM中。

修复了什么?

我们基本上有两种选择如何解决这个问题,我们可以直接在爬网程序内嵌入JavaScript引擎,并以尝试将DOM作为浏览器构建DOM,或者我们可以利用现有浏览器来执行脚本沉重的举重。这些都不是轻松选择,但最终我们选择利用铬的力量,建立了谷歌浏览器的开源基础。

为什么铬?

铬是巨大的开发工作的结果,比任何公司都有更多的公司大小可以鼓起。beplay官网可以赌浏览器基本上定义了Web技术的现代播放状态,并将Burp Suite连接到Chromium确保Burp是未来的,无论网络beplay体育能用吗如何投掷我们。如果我们选择了替代方案,我们将永远玩追捕,并使用开发铬的小军和建造的许多其他图书馆的小军队支持新的网络技术。beplay体育能用吗更不用说创建一个javascript渲染引擎的复杂性,这本身就是易受问题的影响。

铬代码库以惊人的速度演变,作为一个较小的独立公司,我们无法及时了解正在添加的所有新功能 - 即使是微软在浏览器战争中承认失败及其最新的化身边缘浏览器本质上仅仅是铬顶部的皮肤。

样本致力于铬
2021年期间,在一周内致铬代码群的样本

Burp Suite的铬集成

将铬与Burp Suite集成远离琐碎的任务。将浏览器直接嵌入Burp不起作用:任何浏览器崩溃都会崩溃Burp。整合使构建过程不可接受的复杂。安全性也是一个问题:Burp需要安全,并及时应用安全补丁是不可能的。

为了解决这些缺点,我们提出了不同的方法。我们决定,而不是尝试直接在Burp内嵌入浏览器,而不是我们试图将其远程控制使用devtools.协议,这是与Chromium Inspector选项卡中使用的相同技术,可用于控制浏览器的几乎每个方面。

这种方法显着简化了建立过程。我们现在可以立即自动触发嵌入式浏览器的新版本,因为它们的发布通常可以在Burp套件中更新它们同一天。我们还定期构建了铬的测试版和开发版本,以便我们可以获得早期警告,如果DevTools协议有任何破坏。

浏览器供电扫描

现在我们可以轻松及时了解铬的最新稳定构建,我们设置了将其集成在爬网中。DevTools协议本身与设置和连接相对简单。它由JSON命令组成,可以通过WebSocket发送到浏览器,以及浏览器正在做的响应事件:所有熟悉的技术。beplay体育能用吗

我们在Burp Scanner中的集成看起来类似于:

Burp Suite的铬集成
Burp Suite的铬集成

  1. 一旦我们启动了铬实例并通过WebSocket连接到DevTools,我们会指示浏览器导航到目标Web应用程序。beplay体育能用吗
  2. Chromium构造它会给目标的HTTP请求构造,并将其发送回到Burp套件的Webso.1。beplay体育能用吗
  3. 该请求通过Burp Suite的常规网络堆栈发送到目标,视为正常的范围和限制规则。
  4. Burp套件收到了响应。
  5. 并将其转回WebSocket到Chromium。beplay体育能用吗
    步骤2到4重复页面上加载的所有资源重复。
  6. Chromium通过该网站告诉我们页面完全加载的Webeplay体育能用吗bSocket。(大致相当于'onload'DOM事件)。
  7. Chromium通过WebSocket告诉我们DOMbeplay体育能用吗已准备就绪。(大致等同于DomContentLoaded事件)。
  8. 一旦Burp套件认为DOM已稳定下来,并且不再突变我们通过WebSocket询问DOM的快照。beplay体育能用吗这完全简化了实际证明是一个非常具有挑战性的问题。我可能会填写整个博客文章谈论我们在这里的一些问题。在软件工程中常见,这更复杂,花了很多比预期更长!
  9. Chromium返回当前在浏览器中显示为Burp的确切DOM。

一旦我们有一个DOM的快照,就会进入爬行物并以与非浏览器供电的扫描相同的方式处理。当爬虫已经决定下一个链接时,它希望遵循该过程重复一个轻微的差异。而不是指示浏览器导航到下一个页面(如将URL直接键入地址栏),我们使用DevTools模拟单击链接的用户,以这种方式,我们确保在向任何请求发送任何请求之前调用任何onClick处理程序目标。

下一步

现在我们已经有了整合工作的基础知识,我们都真正兴奋地对此开放的可能性。我们有雄心勃勃的计划,可以为现代单页应用的爬行和审计覆盖而大大提高API端点整个2021年突出显示公共路线图。我们还希望进一步利用我们的浏览器集成的能力与一些新的手动工具,以及继续博客更多关于Burp扫描仪功能。

了解更多bepaly下载 ,和我们的JavaScript扫描能力