多因素认证中的漏洞
在本节中,我们将讨论多因素认证机制可能出现的一些漏洞。我们还提供了几个交互式实验,以展示你如何利用这些漏洞来攻击多因素认证。
许多网站仅依赖单因素认证,即使用密码对用户进行身份验证。然而,一些网站要求用户使用多个认证因素来证明其身份。
验证生物特征因素对于大多数网站来说是不切实际的。然而,基于你知道的东西和你拥有的东西的两因素认证(2FA)越来越常见。这通常要求用户同时输入一个传统密码和一个他们持有的带外物理设备上的临时验证码。
虽然攻击者有时可能获取到某一个基于知识的因素,比如密码,但能够同时从带外来源获取另一个因素的可能性要小得多。因此,双因素认证在实际上比单因素认证更安全。然而,与任何安全措施一样,它的安全性仅取决于实现方式。实现不良的双因素认证可以被攻破,甚至完全绕过,就像单因素认证一样。
还值得注意的是,多因素认证的全部优势仅通过验证多个不同的因素来实现。以两种不同方式验证相同因素并不是真正的双因素认证。基于电子邮件的2FA就是一个例子。尽管用户必须提供密码和验证码,但访问验证码只依赖于他们知道电子邮件账户的登录凭证。因此,这只是对知识认证因素进行了两次验证。
双因素认证令牌
验证码通常由用户从某种物理设备上读取。许多高安全性的网站现在为用户提供专用设备,例如RSA令牌或键盘设备,你可以用它们访问在线银行或工作笔记本电脑。除了专为安全而设计外,这些专用设备还具有直接生成验证码的优势。出于同样的原因,网站也常常使用专用的移动应用程序,如Google Authenticator。
另一方面,一些网站将验证码以短信的形式发送到用户的手机上。虽然这在技术上仍然验证了“你拥有的东西”因素,但它存在滥用的风险。首先,验证码是通过SMS传输而不是由设备自动生成的。这会导致验证码被截获的可能性。还存在SIM卡交换的风险,攻击者借此以欺诈的方式获得受害者的手机号码对应的SIM卡。然后,攻击者将接收到发送给受害者的所有短信,包括包含验证码的短信。
绕过双因素认证
有时,双因素认证的实现存在缺陷,以至于可以完全绕过它。
如果用户首先被要求输入密码,然后在另一页上被要求输入验证码,那么用户在输入验证码之前实际上已经处于“已登录”的状态。在这种情况下,值得测试一下在完成第一步认证后,是否可以直接跳转到“仅限已登录”的页面。偶尔,你会发现网站在加载页面之前实际上并没有检查你是否完成了第二步认证。
LAB
有缺陷的双因素验证逻辑
有时,双因素认证中的逻辑错误意味着用户完成了初始登录步骤后,网站并未充分验证同一用户是否正在完成第二步骤。
例如,用户在第一步中使用正常凭证登录,如下所示:
然后,在进入登录过程的第二步之前,他们会被分配一个与其账户相关的Cookie:
提交验证码时,请求使用此Cookie来确定用户要访问的账户:
在这种情况下,攻击者可以使用自己的凭证登录,然后在提交验证码时更改account
Cookie的值为任意用户名。
如果攻击者能够暴力破解验证码,那么这将非常危险,因为这样可以完全基于用户名登录到任意用户的账户,而无需知道用户的密码。
LAB
暴力破解2FA验证码
与密码一样,网站需要采取措施来防止对2FA验证码的暴力破解。这尤其重要,因为验证码通常是一个简单的4或6位数字。如果没有足够的暴力破解保护措施,破解此类验证码将变得非常容易。
一些网站尝试通过在用户输入一定数量的错误验证码后自动登出用户来阻止暴力破解。但这在实践中是无效的,因为高级攻击者甚至可以通过为Burp Intruder创建宏来自动化这个多步骤过程。Turbo Intruder扩展程序也可用于此目的。
LAB
Last updated