# 带外应用程序安全测试（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应用程序安全测试**](/wsa/wast/application-security-testing.md)**的信息？**

## OAST的工作原理

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

### 从外部进攻

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

![](/files/2P2NRJEUxfYTkHsEG4EK)

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

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

### 看到地平线

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

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

![](/files/spSPD2I8iAoxNVfgYyVX)

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

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

### OAST的简易方法

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

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

## 带外测试的优势

![](/files/hpNP8B6D8rmjUhRgawX7)

正如你可能看到的，自动化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>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://web-sec.gitbook.io/wsa/wast/oast.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
