Web安全学院
Web安全学院
  • 首页
  • 译序
  • 学习路线
  • 前篇
    • Web应用程序安全测试
    • 动态应用程序安全测试(DAST)
    • 带外应用程序安全测试(OAST)
  • 服务器端主题
    • SQL注入
      • SQL注入
      • SQL注入UNION攻击
      • 在SQL注入攻击中检索数据库
      • SQL盲注
      • SQL注入速查表
    • 认证
      • 认证漏洞
      • 基于密码登录中的漏洞
      • 多因素认证中的漏洞
      • 其他认证机制中的漏洞
      • 如何保护你的认证机制
    • 目录遍历
      • 目录遍历
    • 命令注入
      • OS命令注入
    • 业务逻辑漏洞
      • 业务逻辑漏洞
      • 业务逻辑漏洞示例
    • 信息泄露
      • 信息泄露漏洞
      • 如何发现并利用信息泄露漏洞
    • 访问控制
      • 访问控制漏洞与权限提升
      • 不安全的直接对象引用(IDOR)
      • 访问控制安全模型
    • 文件上传漏洞
      • 文件上传漏洞
    • 条件竞争
      • 条件竞争
    • 服务器端请求伪造(SSRF)
      • 服务器端请求伪造(SSRF)
      • 盲SSRF漏洞
    • XXE注入
      • XML外部实体(XXE)注入
      • XML实体
      • 发现并利用盲XXE漏洞
  • 客户端主题
    • 跨站脚本(XSS)
      • 跨站脚本
      • 反射型XSS
      • 存储型XSS
      • 基于DOM的XSS
      • XSS上下文
        • 跨站脚本上下文
        • 客户端模版注入
      • 利用跨站脚本漏洞
      • 内容安全策略
      • 悬空标记注入
      • 如何防范XSS漏洞
      • 跨站脚本(XSS)速查表
    • 跨站请求伪造(CSRF)
      • 跨站请求伪造(CSRF)
      • XSS与CSRF
      • 绕过CSRF令牌验证
      • 绕过SameSite Cookie限制
      • 绕过基于Referer的CSRF防御
      • 如何防范CSRF漏洞
    • 跨域资源共享(CORS)
      • 跨域资源共享(CORS)
      • 同源策略(SOP)
      • CORS和Access-Control-Allow-Origin响应标头
    • 点击劫持
      • 点击劫持(UI伪装)
    • 基于DOM的漏洞
      • 基于DOM的漏洞
      • 控制Web消息源
      • 基于DOM的开放重定向
      • 基于DOM的Cookie操纵
      • 基于DOM的JavaScript注入
      • 基于DOM的document-domain操纵
      • 基于DOM的WebSocket URL投毒
      • 基于DOM的链接操纵
      • Web消息操纵
      • 基于DOM的Ajax请求标头操纵
      • 基于DOM的本地文件路径操纵
      • 基于DOM的客户端SQL注入
      • 基于DOM的HTML5 Storage操纵
      • 基于DOM的客户端XPath注入
      • 基于DOM的客户端JSON注入
      • DOM-data操纵
      • 基于DOM的拒绝服务
      • DOM破坏
    • WebSocket
      • 测试WebSocket安全漏洞
      • 什么是WebSocket?
      • 跨站WebSocket劫持
  • 进阶主题
    • 不安全的反序列化
      • 不安全的反序列化
      • 利用不安全的反序列化漏洞
    • 测试GraphQL API
      • 测试GraphQL API
      • 什么是GraphQL?
    • 服务器端模板注入
      • 服务器端模板注入
      • 利用服务器端模板注入漏洞
    • Web缓存投毒
      • Web缓存投毒
      • 缓存设计缺陷的利用
      • 缓存实现缺陷的利用
    • HTTP Host标头攻击
      • HTTP Host标头攻击
      • 如何识别和利用HTTP Host头的漏洞
      • 密码重置投毒
    • HTTP请求走私
      • HTTP请求走私
      • 查找HTTP请求走私漏洞
      • 利用HTTP请求走私漏洞
      • 高级请求走私
        • 高级请求走私
        • HTTP/2降级
        • 响应队列投毒
        • HTTP/2专属载体
        • HTTP请求隧道
      • 浏览器驱动的请求伪造
        • 浏览器驱动的请求伪造
        • CL.0请求走私
        • 客户端异步攻击
        • 基于暂停的异步攻击
    • OAuth认证
      • OAuth 2.0认证漏洞
      • OAuth授权类型
      • OpenID Connect
      • 如何防范OAuth认证漏洞
    • JWT攻击
      • JWT攻击
      • 在Burp Suite中使用JWT
      • 算法混淆攻击
    • 原型污染
      • 什么是原型污染?
      • JavaScript原型和继承
      • 客户端
        • 客户端原型污染漏洞
        • 通过浏览器API进行原型污染
      • 服务器端
        • 服务器端原型污染
      • 预防原型污染漏洞
    • 基本技能
      • 基本技能
      • 使用编码混淆攻击
      • 在手动测试中使用Burp Scanner
Powered by GitBook
On this page
  • 什么是DAST安全测试?
  • DAST是自动还是手动方法?
  • 动态安全测试的工作原理
  • 自动化DAST
  • 手动DAST
  • DAST方法的优势
  • 准确性
  • 适应性
  • 可增强的测试
  • DAST方法有什么缺点吗?
  • 不可见的和异步的漏洞
  • 未暴露的输入
  • 难以执行的路径
  • DAST是适合你的方法吗?
  1. 前篇

动态应用程序安全测试(DAST)

PreviousWeb应用程序安全测试Next带外应用程序安全测试(OAST)

Last updated 1 year ago

什么是DAST安全测试?

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

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

DAST是自动还是手动方法?

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

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

动态安全测试的工作原理

自动化DAST

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

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

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

Burp Suite的自动扫描器能够检测,其中很多类型的漏洞不会被传统的DAST单独报告。这些增强的功能得益于IAST(交互式应用程序安全测试)和OAST(带外应用程序安全测试)技术的输入。

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

手动DAST

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

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

截断代理是一个相当简单的概念。就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提供支持的漏洞扫描包中。

未暴露的输入

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

难以执行的路径

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

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

DAST是适合你的方法吗?

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

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

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

译者注:

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

想要了解更多关于的信息?

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

大量的安全漏洞
Web应用程序安全测试
Param Miner