许多网站完全依赖使用密码的单因素身份验证来验证用户。但是,有些要求用户使用多种身份验证因素来证明其身份。

对于大多数网站来说,验证生物识别因素是不切实际的。但是,基于您知道的和您拥有的内容,同时看到强制性和可选的双因素身份验证two-factor authentication (2FA) 变得越来越普遍。这通常需要用户输入传统密码和他们拥有的带外物理设备的临时验证码

虽然攻击者有时有可能获得一个单一的基于知识的因素,例如密码,但能够同时从带外来源获得另一个因素的可能性要小得多。因此,双因素身份验证显然比单因素身份验证更安全。但是,与任何安全措施一样,它的安全性取决于其实施。实施不佳的双因素身份验证可能会被击败,甚至可以完全绕过,就像单因素身份验证一样。

还值得注意的是,只有通过验证多个不同的因素才能实现多因素身份验证的全部好处。以两种不同的方式验证同一因素不是真正的双因素身份验证。基于电子邮件的 2FA 就是这样的一个例子。尽管用户必须提供密码和验证码,但访问验证码仅依赖于他们知道其电子邮件帐户的登录凭据。因此,知识认证因素只是被验证两次。

双因素身份验证令牌

验证码通常由用户从某种物理设备读取。许多高安全性网站现在为此目的为用户提供专用设备,例如您可能用于访问在线银行或工作笔记本电脑的 RSA 令牌或键盘设备。除了专门为安全而构建之外,这些专用设备还具有直接生成验证码的优势。出于同样的原因,网站使用专用移动应用程序(例如 Google 身份验证器)也很常见。

另一方面,一些网站将验证码作为短信发送到用户的手机。虽然这在技术上仍在验证“你拥有的东西”的因素,但它很容易被滥用。首先,代码是通过短信传输的,而不是由设备本身生成的。这创造了代码被拦截的可能性。还存在 SIM 交换的风险,攻击者借此欺诈性地获取带有受害者电话号码的 SIM 卡。然后,攻击者会收到发送给受害者的所有 SMS 消息,包括包含其验证码的消息。

绕过两步验证

有时,两因素身份验证的实施存在缺陷,可以完全绕过它。

如果首先提示用户输入密码,然后在单独的页面上提示输入验证码,则用户在输入验证码之前实际上处于“登录”状态。在这种情况下,值得测试一下,看看在完成第一个身份验证步骤后是否可以直接跳到“仅限登录”页面。有时,您会发现网站在加载页面之前实际上并没有检查您是否完成了第二步。

实战链接:

  • 绕过双验证

有缺陷的两因素验证逻辑

有时,双因素身份验证中存在缺陷的逻辑意味着,在用户完成初始登录步骤后,网站无法充分验证同一用户是否正在完成第二步
例如,用户在第一步中使用其普通凭据登录,如下所示:

POST /login-steps/first HTTP/1.1
Host: vulnerable-website.com
...
username=carlos&password=qwerty

然后,在进入登录过程的第二步之前,他们会被分配一个与其帐户相关的 cookie:

HTTP/1.1 200 OK
Set-Cookie: account=carlosGET /login-steps/second HTTP/1.1
Cookie: account=carlos

提交验证码时,请求使用此 cookie 来确定用户尝试访问的帐户:

POST /login-steps/second HTTP/1.1
Host: vulnerable-website.com
Cookie: account=carlos
...
verification-code=123456

在这种情况下,攻击者可以使用自己的凭据登录,然后account在提交验证码时将 cookie的值更改为任意用户名。

POST /login-steps/second HTTP/1.1
Host: vulnerable-website.com
Cookie: account=victim-user
...
verification-code=123456

如果攻击者随后能够暴力破解验证码,这将是极其危险的,因为这将允许他们完全根据用户名登录任意用户的帐户。他们甚至永远不需要知道用户的密码。

实战链接:

  • 2FA逻辑破坏

暴力破解 2FA 验证码

与密码一样,网站需要采取措施防止 2FA 验证码的暴力破解。这一点尤其重要,因为代码通常是一个简单的 4 位或 6 位数字。如果没有足够的蛮力保护,破解这样的代码是微不足道的。

一些网站试图通过在用户输入一定数量的错误验证码时自动将用户注销来防止这种情况发生。这在实践中是无效的,因为高级攻击者甚至可以通过为 Burp Intruder 的creating macros 来自动化这个多步骤过程。该Turbo Intruder扩展也可用于这一目的。

实战链接:

  • 使用蛮力攻击绕过2FA

Vulnerabilities in multi-factor authentication:多因素身份验证漏洞相关推荐

  1. 如何在Raspberry Pi上设置两因素身份验证

    Kiklas/ShutterstockKiklas /快门 The Raspberry Pi is everywhere now, which is why it's caught the eye o ...

  2. 火狐和chrome_Firefox,Chrome和Edge都将支持WebAuthn的硬件两因素身份验证

    火狐和chrome Logging into Gmail or Facebook could soon mean plugging in a USB device, potentially makin ...

  3. 如何使用Google Authenticator在ASP.NET Core中设置两因素身份验证

    介绍 (Introduction) In this article, we are going to learn how to perform two-factor authentication in ...

  4. 两因素身份验证增强您的Spring Security

    通过要求用户提供第二种身份验证,双重身份验证为您的Web应用程序增加了一层额外的安全保护. 常见的第二个因素包括: 验证码生物识别电子邮件或短信代码 让我们探讨如何利用Nexmo向现有的Web应用程序 ...

  5. laravel集成谷歌验证_如何将Google的两因素身份验证添加到Laravel

    laravel集成谷歌验证 Laravel is a wonderful PHP framework that makes building applications with PHP a lot o ...

  6. mongodb启用身份验证_为您的Web应用程序启用两因素身份验证

    mongodb启用身份验证 支持两因素身份验证(2FA)几乎总是一个好主意,尤其是对于后台系统. 2FA有许多不同的形式,其中一些包括SMS,TOTP甚至是硬件令牌 . 启用它们需要类似的流程: 用户 ...

  7. 为您的Web应用程序启用两因素身份验证

    支持两因素身份验证(2FA)几乎总是一个好主意,尤其是对于后台系统. 2FA有许多不同的形式,其中一些包括SMS,TOTP甚至是硬件令牌 . 启用它们需要类似的流程: 用户转到其个人资料页面(如果要在 ...

  8. 如何在SpringBootOAuth服务器中实现双因素身份验证?第一部分:配置

    在这篇文章中,我将演示如何为SpringBoot 2.5OAuthJWT服务器配置一个双因素身份验证功能,这是一个更大的SpringCloud系统的一部分. 我们构建了一个分布式CRM系统.该系统具有 ...

  9. 如何为Office 365订阅的所有用户强制执行多因素身份验证

    Multi-Factor Authentication (MFA) is a great security tool, and we always recommend it. Office 365 a ...

最新文章

  1. 在 RedHat 使用 gdc-client 下载 TCGA 数据
  2. shiro教程(3)-shiro授权
  3. 实战小课 | 深入剖析 「事件设计方法与规范」,夯实数据分析基础!
  4. endnotex9如何导入caj中文文献_EndNote系列教程(二)——数据库的建立及文献的筛选...
  5. 1的阶乘在c语言里咋表示,C语言编程求阶乘1到10并分别显示在屏幕上 – 手机爱问...
  6. Smaug Coverage
  7. JS动态插入HTML后不能执行后续JQUERY操作
  8. java中的定时任务
  9. hdu-1711(hash)
  10. NSString (NSStringPathExtensions) 类的相关方法和属性梳理
  11. web测试实践作业进度报告三
  12. 基数排序组合桶式排序
  13. 云原生小课堂 | Envoy请求流程源码解析(一):流量劫持
  14. 用三元运算符判断奇数和偶数
  15. 固液分离机市场现状及未来发展趋势
  16. NOIP2017模拟赛(4) 总结
  17. 标签云的实现(使用jQuery插件jqcloud)
  18. App推送推了10万打开100?3招提高消息推送(Push)到达率
  19. 动态系统建模与分析_伯德图
  20. Computer vision for solid waste sorting: A critical review of academic research 机器视觉垃圾分选综述翻译

热门文章

  1. 在桌面右键菜单添加【切换电源计划-卓越性能】选项
  2. 安卓修改电池容量教程_手机电池校正 - 安卓最精确的电量校正方法 - iTeknical
  3. 使用jQuery Mobile和Phone Gap开发Android应用程序
  4. 1. 从0开始学ARM-安装Keil MDK uVision集成开发环境
  5. 关于苏宁易购的好坏与网购的心酸苦逼史,有同感的请继续顶起
  6. deepin 安装到移动硬盘_系统装机|硬盘里的Linux之deepin 20系统安装教程
  7. tecplot改变x轴y轴
  8. 公积金贷款额度根据什么而定
  9. 浅析小程序云原生数据库的设计与应用
  10. 在canvas上实现3D效果