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
  • 什么是认证?
  • 认证和授权之间的区别是什么?
  • 认证漏洞是如何产生的?
  • 认证漏洞有什么影响?
  • 认证机制中的漏洞
  • 第三方认证机制中的漏洞
  • 防范你自己的认证机制被攻击
  1. 服务器端主题
  2. 认证

认证漏洞

Previous认证Next基于密码登录中的漏洞

Last updated 1 year ago

概念上来讲,认证漏洞是最容易理解的问题之一。然而,由于认证与安全之间明显的关系,它们可能是最关键的问题之一。除了可能允许攻击者直接访问敏感数据和功能之外,它们还为进一步的攻击提供了额外的攻击面。因此,学习如何识别和利用认证漏洞,包括如何绕过常见的保护措施,是一项基本技能。

在本节中,我们将介绍网站常用的一些认证机制,并讨论其中可能存在的漏洞。我们将重点介绍不同认证机制中固有的漏洞,以及由于其不正确的实现而引入的一些典型漏洞。最后,我们将提供一些关于如何确保自己的认证机制尽可能健壮的基本指南。

Labs

如果你已经熟悉认证漏洞背后的基本概念,并且只想在一些现实的、故意易受攻击的目标上练习利用这些漏洞,你可以通过下面的链接访问本主题中的所有实验。

什么是认证?

认证是验证给定用户或客户端身份的过程。换句话说,它涉及确保他们确实是自己所声称的那个人。至少在某种程度上,网站在设计上是暴露给任何连接到互联网的人面前的。因此,强大的认证机制是有效Web安全的一个重要方面。

有三种认证因素,不同类型的认证可以被分类到这三种因素中:

  • 某种你所知道的东西,比如密码或安全问题的答案。有时被称为“知识因素”。

  • 某种你所拥有的东西,即像手机或安全令牌这样的实物。有时被称为“持有因素”。

  • 你是什么或做什么,例如你的生物特征或行为模式。有时被称为“固有因素”。

认证机制依赖于一系列技术来验证这些因素中的一个或多个。

认证和授权之间的区别是什么?

认证是验证一个用户是否真的是他们声称的那个人的过程,而授权则是验证用户是否被允许做某事。

在一个网站或Web应用程序中,认证确定试图使用用户名Carlos123访问网站的人是否确实是创建该账户的同一个人。

一旦Carlos123通过认证,他的权限就决定了他是否被授权,例如,访问其他用户的个人信息,或者执行删除其他用户账户等操作。

认证漏洞是如何产生的?

广义上讲,认证机制中的大多数漏洞都是通过以下两种方式之一产生的:

  • 认证机制薄弱,因为它们未能充分防御暴力攻击。

  • 在实现过程中存在逻辑缺陷或不良编码,允许攻击者完全绕过认证机制。这有时被称为“破解认证”。

在Web开发的许多领域中,逻辑缺陷会导致网站的行为出乎意料,这可能是也可能不是一个安全问题。然而,由于认证对安全至关重要,有缺陷的认证逻辑会使网站暴露安全问题的可能性明显提高。

认证漏洞有什么影响?

认证漏洞的影响可能非常严重。一旦攻击者绕过了认证或通过暴力破解进入另一个用户的账户,他们将获得被入侵的账户所拥有的所有数据和功能的访问权限。如果他们能够入侵一个高权限的账户(如系统管理员),他们就可以完全控制整个应用程序,并有可能获得对内部基础设施的访问。

即使攻击者只能攻击低权限账户,他们可能仍然获得他们本来不应该拥有的数据访问权限,例如商业敏感信息。即使该账户无权访问任何敏感数据,攻击者仍可能通过访问其他页面来扩大攻击面。通常,某些高危的攻击可能无法从公开可访问的页面进行,但可能可以从内部页面进行。

认证机制中的漏洞

一个网站的认证系统通常由几个不同的机制组成,漏洞可能发生在其中。某些漏洞广泛适用于所有这些情况,而其他漏洞则更具体地针对所提供的功能。

我们将更详细地介绍以下领域中一些最常见的漏洞:

第三方认证机制中的漏洞

如果你喜欢攻击认证机制,在完成我们主要的认证实验后,更高级的用户可能会想尝试解决我们的OAuth认证实验。

阅读更多

防范你自己的认证机制被攻击

我们已经展示了网站由于如何实现认证而受到攻击的几种方式。为了降低自己的网站遭受此类攻击的风险,有几个通用原则你应该始终尽量遵循。

阅读更多

请注意,其中有几个实验需要你枚举用户名并暴力破解密码。为了帮助你完成这个过程,我们提供了一个候选和的短名单,你应该用它们来解决这些实验。

基于密码登录中的漏洞
多因素认证中的漏洞
其他认证机制中的漏洞
用户名
密码
OAuth认证
如何保护你的认证机制
查看所有认证实验