# 带外应用程序安全测试（OAST）

## 什么是OAST安全测试？

带外应用程序安全测试（OAST）利用外部服务器来发现本不可见的漏洞。它的引入是为了进一步改进DAST模型。PortSwigger通过Burp Collaborator成为了OAST的先驱。它将OAST功能添加到Burp Suite中，使这种方法更易于使用。

## OAST测试有什么其他方法无法做到的？

一个Web应用程序可能包含任意数量的安全漏洞。其中许多漏洞广为人知，但漏洞经常会在新旧软件中被发现。更复杂的是，Web应用程序以及它们所使用的编码语言往往处于持续开发之中。没有什么东西可以一成不变。

这种动态性质的情况使事情变得棘手。意味着，无论进行多少测试，也无论采用何种技术组合，都不可能发现应用程序中的每一个潜在漏洞。即便能做到，这种情况也不会持续太久。安全专业人员与网络犯罪分子处于不断竞争之中，失败的后果可能是毁灭性的。

### 隐形漏洞 - DAST

DAST的主要卖点一直是它能产生高质量的结果。如果你浏览的是用这种方法生成的报告，那么几乎可以肯定你看到的就是真实的漏洞。这些信息可以直接交给开发团队进行修复。

但是当单独使用DAST时，动态测试很难检测到某些类型的安全漏洞。比如很容易错过不可见的或异步的漏洞。正如你将在下文看到的，使用OAST来增强动态测试可以很好地解决这个问题。

### 误报 - SAST

SAST是另一种常见的安全测试方法。它采用与动态测试完全相反的方法。DAST从外部对应用程序进行攻击，而SAST则着眼于代码本身。这种方法具有一系列不同的优点和缺点。

这里的主要问题是，由于SAST实际上并不执行任何代码，它只能看到**可能**发生的事情。意味着通常情况下，SAST将产生比DAST更大、更有噪音的结果集。这种噪音以误报的形式出现。其中会有真正的漏洞，但确定它们是哪些是需要花费时间和金钱的。

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

## OAST的工作原理

OAST改进了DAST安全测试的结果。在很多方面，它本身就是一种动态的方法，尽管它可以看到“转角”。因为**动态应用程序安全测试**实际上只是表示一种无法看到应用程序内部运作的测试。这也可以作为OAST的描述。

### 从外部进攻

传统的动态测试因其简单而优雅。从本质上讲，它向目标应用程序发送有效载荷并分析返回的响应，就像真正的攻击者一样。

![](https://2165487371-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfahSMMYUzmqmE8SfCaax%2Fuploads%2Fgit-blob-415899b3969d6aa0a929ac7341df2a56b0905569%2Fdast-security-testing-diagram.svg?alt=media)

当你发送一个DAST有效载荷，并且目标返回给你一个表明存在漏洞的响应时，你可以很肯定它是真实的。动态测试之所以取得成功，是因为它在这些情况下运作良好。

但如果一个目标应用程序没有对有效载荷返回响应，即使该目标实际上是存在漏洞的，又该怎么办？当一个应用程序异步工作时，这是一个特殊的问题。仅靠传统的DAST技术是无法解决的。

### 看到地平线

这就是OAST的用武之地。当PortSwigger推出Burp Collaborator时，OAST是该领域的一个革命性的补充。它使Burp Suite能够检测到大量新的漏洞，包括许多盲SQL注入、盲跨站脚本和盲操作系统命令注入漏洞。

Burp Collaborator通过在动态测试过程中引入一个新的通信渠道来执行OAST。

![](https://2165487371-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfahSMMYUzmqmE8SfCaax%2Fuploads%2Fgit-blob-5076b7a40a80535c86bde40c58c94372f070eac7%2Fburp-collaborator-graphic.svg?alt=media)

那么，这里究竟发生了什么？正如我们上面提到的，Burp Collaborator可以搜索大量在DAST测试中曾是不可见的漏洞。

如果一个漏洞是不可见的，那么当我们发送测试攻击时，它不会向我们返回任何有用的响应，即使该攻击是成功的。我们需要一种方法来绕过这一点。带外测试方法就是这种绕过方法。它通过发送攻击有效载荷，使目标与我们控制的外部系统发生交互，这个外部系统位于目标域之外。

### OAST的简易方法

有了Burp Collaborator，即使你没有控制的外部系统，也很容易做到OAST。Burp Suite企业版和Burp Suite Professional都可以与Burp Collaborator服务器通信，以达到测试的目的。如果你愿意，还可以配置一个私人服务器来做同样的事情。

Burp Collaborator可以识别出导致每次交互的确切Burp Scanner有效负载。因此，如果某个目标返回了有用的信息，你就能准确地知道是什么触发了它。这个过程主要是为了实现自动化而设计的，它位于Burp Scanner内部。对于高级用户，Burp Suite Professional还包括手动OAST工具。

## 带外测试的优势

![](https://2165487371-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FfahSMMYUzmqmE8SfCaax%2Fuploads%2Fgit-blob-afb2db858f8fbda2bd9cb806351959a4718028c7%2Foast-venn-diagram.svg?alt=media)

正如你可能看到的，自动化OAST是一种强大的技术，可以添加到安全测试人员的武器库中。上面的维恩图显示了OAST如何大大增加了DAST可以识别的安全问题的数量。其中一些也可能被SAST工具发现，但在许多情况下，这种可能性不大。

OAST具有与传统动态测试相同的优势。它很少产生误报，意味着它的报告是值得信赖的。

与DAST一样，OAST对应用程序所编写的语言并不关心。即使你想扫描多个Web应用程序，也无需多个软件。这与Burp Suite企业版的巨大可扩展性相得益彰。现在，你的整个网络组合只需一个软件就能够扫描。

## OAST测试有什么缺点吗？

如果说OAST使测试变得完美，那就是在撒谎。没有任何一种方法是完美的。总会有DAST和OAST无法发现的漏洞，正如SAST会漏掉其他漏洞一样。

自动化Web安全扫描并不是解决安全漏洞的灵丹妙药。它应始终与定期的人工手动渗透测试结合使用。这种方法将有助于保持你的Web应用既安全又合规。

PortSwigger在引入Burp Collaborator时是OAST测试的先驱。这一功能集成在Burp Suite企业版和Burp Suite Professional中。有关Burp Suite的更多信息，以及它如何适合你特定的使用场景，请参阅下面的资源：

<https://portswigger.net/customers>
