# 动态应用程序安全测试（DAST）

## 什么是DAST安全测试？

动态应用程序安全测试（DAST）从Web应用程序的外部进行安全测试。一个很好的比喻就是通过攻击银行保险库来测试它的安全性。DAST要求安全测试人员对应用程序的内部结构一无所知。这被称为**黑盒**测试方法，因为测试人员无法看到“盒子”内部。它的目的是模拟真实的攻击。

Burp Suite诞生于DAST思维模式。如今，它可以通过其他测试方法来增强和改进其扫描，但本质上仍是一个黑盒工具。

## DAST是自动还是手动方法？

答案是**两者皆有**。例如，Burp Suite核心的自动扫描器功能就植根于DAST。但手动渗透测试通常也是DAST，需要具备只有人才能的横向思维。它的很大一部分根本无法自动化。

因此，DAST的范围很广泛，足以包括自动化和手动技术。它只要求你对要测试的系统的内部一无所知。

## 动态安全测试的工作原理

### 自动化DAST

正如我们所知，DAST背后的概念是模仿真实的攻击。就像银行劫匪一样，真正的网络攻击者首先会侦察目标环境。Burp Suite的扫描器通过**爬取**你正在查看的Web应用程序来模拟这一点。

爬虫是一种机器人，可以自动访问和记录Web应用程序的每个页面。有了这些内容，它就可以创建地图。考虑到许多现代Web应用程序的动态和易变性，构建爬虫实际上比听起来要复杂得多。

接下来，Burp Suite将审计应用程序的漏洞。这可能涉及到任何事情，从使用类似模糊测试的代码注入爆破技术，到搜索以不安全方式处理用户登录信息的实例。

Burp Suite的自动扫描器能够检测[大量的安全漏洞](https://portswigger.net/kb/issues)，其中很多类型的漏洞不会被传统的DAST单独报告。这些增强的功能得益于IAST（交互式应用程序安全测试）和OAST（带外应用程序安全测试）技术的输入。

如果一个组织管理着众多Web应用程序，或者开发人员正在使用DevSecOps方法，则通常需要持续进行自动化DAST扫描。Burp Suite企业版专为企业安全而设计，可与开发软件无缝集成，并提供极高的可扩展性。

### 手动DAST

没有任何一种自动化漏洞扫描器能发现每一个漏洞。虽然自动化软件为渗透测试人员和漏洞赏金猎人节省了大量时间，但在某些情况下，人的创造力和横向思维是不可替代的。

通常，测试人员会先使用自动化的DAST解决方案，以收获“唾手可得的果实”。这种方法为他们腾出了额外的时间来处理更加有趣的漏洞。这就是为什么除了Burp Scanner之外，Burp Suite Professional还包含一个强大的截断代理，专为手动Web安全测试人员的需求量身定制。

![](https://2165487371-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfahSMMYUzmqmE8SfCaax%2Fuploads%2Fgit-blob-a8573ac199c515d2b004022078eaeb64eca21191%2Fhow-an-intercepting-proxy-works.svg?alt=media)

截断代理是一个相当简单的概念。就Burp Suite而言，它意味着一个软件来拦截测试人员的浏览器和他们的目标Web应用程序之间的所有HTTP流量。Burp Suite甚至可以拦截HTTPS加密流量。读取Web应用程序和浏览器之间发送的所有通信的能力在DAST背景下是无价的。

使用截断代理方法，测试人员可以改变浏览器发送到服务器的响应，为探索漏洞提供了大量机会。这就是Burp Suite Pro被誉为道德黑客的瑞士军刀，并成为行业标准渗透测试软件的原因之一。

## DAST方法的优势

### 准确性

DAST的概念在许多方面都是具有优势的，而且通常比SAST等其他**白盒**方法更实用。SAST通过调查应用程序的源代码以发现漏洞，虽然这在理论上是一个好主意，但在实践中它往往会产生很多误报。DAST则不存在这种倾向。

这并不是说DAST永远不会产生误报，因为这种情况确实时有发生。但与SAST相比，误报的数量是微不足道的。就误报而言，这是DAST的一个巨大胜利。误报既浪费时间又浪费金钱。

### 适应性

在适应性方面，DAST与SAST相比也更胜一筹。SAST在这方面存在不足，因为它依赖于能够读取特定的编程语言才能发挥作用。但由于DAST在设计上与语言无关，因此它不需要像SAST那样对不同类型的代码进行多次实现。

现代Web应用程序很复杂，往往使用多个框架和抽象层。在这种情况下，一个不可知论方法\[1]是一个巨大的优势。更不用说，几乎不断的更新意味着编程语言经常会发生变化。使用DAST，你知道你的扫描器始终为此做好了准备。简单地说，就是**一刀切**。

如果你有很多Web应用程序需要扫描，DAST的不可知论方法也将带来好处。由于其可扩展性，Burp Suite企业版被拥有数以万计实时应用程序的组织所使用。这些用户可以自由地以他们选择的任何语言开发应用程序。

### 可增强的测试

这并不是说SAST毫无用处：远非如此。但在现实世界的场景中，我们认为DAST是更优越的基础方法。而且，DAST的优越性还得到了Burp Suite Professional和Burp Suite企业版中包含的额外测试方法的增强。

下文将讨论OAST等方法如何有助于消除DAST概念中固有的一些缺点。

## DAST方法有什么缺点吗？

### 不可见的和异步的漏洞

没有任何一种测试方法是完美的，DAST在某些方面的表现也不尽如人意。例如，单独使用它会漏掉许多不可见的或异步的漏洞。这些涉及应用程序易受到攻击，但在发送攻击后却没有给出明显不同响应的情况。

但通过将DAST与OAST结合部署，这个问题在很大程度上就迎刃而解了。OAST是PortSwigger与Burp Collaborator首创的一项技术，已完全集成到为Burp Suite提供支持的漏洞扫描包中。

**想要了解更多关于**[**Web应用程序安全测试**](https://web-sec.gitbook.io/wsa/wast/application-security-testing)**的信息？**

### 未暴露的输入

在涉及未暴露的应用程序输入时，也存在类似的情况。DAST无法识别此类漏洞，因为它只能看到来自Web应用程序外部的东西。当然，真正的攻击者在这里也会处于同样的情况。

就Burp Suite而言，使用扩展功能可以在一定程度上缓解这一缺陷。例如，[Param Miner](https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943)可以在涉及未暴露输入的情况下，显著增强Burp Suite Professional的暴力破解能力。不过，在这个领域，经验丰富的渗透测试人员的直觉对于推断应用程序的运作方式也是非常宝贵的。

### 难以执行的路径

在某些输入路径难以执行的情况下，DAST可能会漏掉一些漏洞。一个例子是，一个高级漏洞利用依赖于多个输入变量的组合才能起作用。虽然SAST方法应该会发现这一点，就像一个优秀的手动渗透测试人员一样，但仅靠DAST扫描是无法发现的。

这里的权衡是，虽然SAST可能会报告这个漏洞，但它往往会将其作为一长串误报的一部分返回。然后就需要测试人员手动审查代码以找到真正的漏洞。这种情况远非理想。审查代码的成本很高的，实际上你可能会发现SAST工具给出的常规警报会被直接忽略。

## DAST是适合你的方法吗？

PortSwigger是DAST工具Burp Suite的制造商。我们认为它是许多场景的最佳解决方案，它包含世界上使用最广泛的漏洞扫描程序。但它适合你吗？

首先，我们应该指出，没有任何一种自动化方法可以完全取代手动渗透测试。有一些漏洞是需要人去发现的。因此，网络安全合规标准通常要求同时进行渗透测试和漏洞扫描。

无论你管理的应用程序是多是少，像Burp Suite这样的自动化DAST扫描器都能够帮助你保护在线资产。从开发阶段到部署及以后，它都可以做到这一点。如果你是一名渗透测试人员，你一定会喜欢Burp Suite Pro先进的手动工具，它可以帮助你达到新的高度。

> **译者注：**
>
> \[1] agnostic approach翻译为不可知论方法。在基于计算机的环境中，不可知论方法是跨系统可互操作的方法，并且对使用特定技术、模型、方法或数据没有偏见。
