身份验证漏洞
翻译
原文:https://portswigger.net/web-security/authentication
- name: 翻译
desc: 原文:https://portswigger.net/web-security/authentication
bgColor: '#F0DFB1'
textColor: 'green'
2
3
4
# 1身份验证漏洞
至少在概念上,身份验证漏洞是最容易理解的问题之一。然而,由于身份验证和安全性之间的明显关系,它们可能是最关键的。
除了潜在地允许攻击者 直接访问敏感数据和功能外,它们还暴露了额外的攻击面 以供进一步利用。因此,学习如何识别 和 利用身份验证漏洞(包括如何绕过常见的保护措施)是一项基本技能。
在本节中,我们将介绍网站使用的一些最常见的身份验证机制,并讨论其中的潜在漏洞。我们将重点介绍不同身份验证机制中的固有漏洞,以及由于实施不当 而引入的一些典型漏洞。
最后,我们将提供一些基本指导,说明如何确保自己的身份验证机制更加可靠。
实验室
如果您已经熟悉 身份验证漏洞 背后的基本概念,并且只想在一些实际的、易受攻击的目标上练习和利用它们,那么您可以从下面的链接访问本主题中的所有实验室。
# 1.1什么是身份验证?
身份验证 是验证给定用户 或 客户端身份的过程。
换句话说,它包括确保他们真的是他们声称的那个人。至少在某种程度上,网站会暴露给 任何连接到互联网的人。因此,健壮的身份验证机制是有效 Web 安全的一个组成部分。
可以将不同类型的身份验证分为三种身份验证因素:
- 你知道的东西,例如,密码或安全问题的答案。这些有时被称为 “知识因素” 。
- 你拥有的东西,例如,手机或安全令牌等物理对象。这些有时被称为 “持有因素” 。
- 你是谁或做了什么,例如,你的生物特征或行为模式。这些有时被称为 “属性因素” 。
身份验证机制 依赖于一系列技术,来验证其中的一个或多个因素。(单因素 / 多因素身份验证)
# 1.2身份验证和授权 两者的区别是什么?
- 身份验证,验证用户是否确实是他们所声称的身份的过程,
- 授权,验证用户是否允许执行某些操作。
在网站或 Web 应用程序的上下文中,身份验证尝试确定:使用用户名Carlos123
访问网站的人,是否真的是创建该帐户的同一个人。
一旦Carlos123
通过身份验证,他的权限将决定 他是否获得授权,例如,访问其他用户的个人信息 或 执行删除其他用户帐户等操作。
(先认证,后授权)
# 1.3身份验证漏洞是如何产生的?
一般来说,身份验证机制中的大多数漏洞,会以下面两种方式之一出现:
- 身份验证机制很弱,因为它们不能充分防范暴力破解攻击。
- 代码实现中的逻辑缺陷 或 糟糕的编码,允许攻击者完全绕过身份验证机制。这有时被称为 “失效的身份验证” 。
在 Web 开发的许多领域,逻辑缺陷 (opens new window)只会导致网站行为异常,这可能是,也可能不是安全问题。
但是,由于身份验证对安全性至关重要,因此,有缺陷的身份验证逻辑 会使网站面临安全问题的可能性显著增加。
# 1.4易受攻击的身份验证有什么影响?
身份验证漏洞的影响可能非常严重。
- 一旦攻击者 绕过身份验证 或 暴力破解 进入另一个用户的帐户,他们就可以访问 受损帐户拥有的所有数据和功能。
- 如果他们能够破坏高特权帐户(如系统管理员),则可以完全控制整个应用程序,并有可能获得对内部基础设施的访问权限。
即使破坏低权限帐户,仍可能授予攻击者 访问他们原本不应该拥有的数据的权限,例如 商业敏感的业务信息。
即使该帐户无权访问任何敏感数据,它仍可能允许攻击者访问其他页面,从而提供进一步的攻击面。通常,某些高严重性攻击,无法从可公开访问的页面进行,但可以从内部页面进行。
# 1.5身份验证机制中的漏洞
网站的身份验证系统,通常由几个不同的机制组成,这些机制都可能会出现漏洞。有些漏洞广泛适用于所有这些环境,而其他漏洞则更特定于所提供的功能。
我们将更仔细地研究以下领域的 一些最常见的漏洞:
请注意,一些实验室要求您 枚举用户名 和 暴力破解密码。为了帮助您完成此过程,我们提供了一个用户名 (opens new window)和密码 (opens new window)的候选列表,您应该使用这个列表来解决实验室问题。
# 1.6第三方身份验证机制中的漏洞
如果您喜欢破解身份验证机制,那么在完成我们主要的 身份验证实验室 之后,更高级的用户可能想尝试解决我们的 OAuth 身份验证实验室。
# 1.7在你的身份验证机制中防范攻击
我们已经展示了 “网站由于身份验证的脆弱性而容易受到攻击” 的几种方式。
为了降低您自己的网站 遭受此类攻击的风险,您应该始终遵循以下几个一般原则。