-
2FA 比单密码更安全,因为攻击者很难同时拿到 "你知道的(密码)" 和 "你拥有的(设备 / 验证码)"。
-
不是多步骤就是多因素:比如邮箱验证码 + 密码,本质还是两次 "知识验证",不算真正 2FA。
-
2FA 实现有优劣:
- 安全:专用硬件令牌、Google Authenticator 等本地生成验证码。
- 不安全:短信验证码,易被拦截、SIM 卡替换攻击。
-
2FA 可被绕过:很多网站只校验第一步密码,第二步没做强制验证,可直接跳过后台页面。
不严格的二重检测
如果先被提示输入密码,然后又被要求在另一个页面输入验证码,用户在输入验证码之前实际上就处于"已登录"状态。在这种情况下,值得测试一下,看看完成第一步认证后是否能直接跳到"仅登录"页面。偶尔,你会发现网站在加载页面前并不会检查你是否完成了第二步。
实验室:2FA简单绕过 |网络安全学院- 您的资历:
wiener:peter - 受害者资历
carlos:montoya
我们先登录自己的账号

成功进入后我们记住 url

然后使用受害人的账号密码登录, 登录的时候抓包, 丢弃 post 上传以外的所有包, 这些包里面就有打开二重验证的网页请求, 我们直接丢掉就可以绕过成功

然后此时我们将 url 填入地址栏里面就发现绕过了
https://0a8600fe03b542eb84fc4bb7000a000c.web-security-academy.net/my-account?id=carlos - 您的资历:
暴力破解的2FA验证码
- 正常流程
- 输密码 → 服务器验证通过
- 给浏览器设置一个 Cookie:
account=用户名 - 第二步验证时,服务器只看这个 Cookie来判断你是谁。
- 攻击逻辑
- 攻击者用自己账号正常登录第一步
- 拿到自己的 Cookie 后,直接把 Cookie 里的用户名改成受害者
- 去提交第二步验证码
- 服务器看到 Cookie 里是受害者账号,就以为是受害者本人在验证
- 后果
- 攻击者不需要知道受害者密码
- 只要暴力破解出验证码
- 就能直接登录别人账号
实验室:2FA破碎逻辑 |网络安全学院
我们先用自己的账号密码登录, 然后随便输入一个验证码后抓包, 然后修改用户名进行爆破

四位验证码都是数字, 所以我们

最后爆破得到结果

时间可能有点长, 稍微等一下
然后用这个邮箱验证码去再次抓包并修改 cookie 和验证码, 就可以成功拿下
暴力破解的2FA验证码
与密码一样,网站也需要采取措施防止暴力破解2FA验证码。这尤其重要,因为代码通常是简单的4位或6位数字。如果没有足够的暴力破解保护,破解这种代码是轻而易举的。
一些网站试图防止这种情况,如果用户输入了一定数量的错误验证码,会自动登出。但这在实际中效果不佳,因为高级攻击者甚至可以通过为Burp Intruder创建宏来自动化这一多步流程。涡轮入侵者延长器也可以用于此目的。
测试宏, 发现都正常
然后把设置全部 ok
然后暴力破解验证码就好了



最后进入我的账户就发现注入成功了!

总结
第一次跑到后发现Invalid CSRF token
一、为什么会报「令牌过期 / Invalid CSRF token」?
这个 2FA 实验的机制是:
- 每次爆破前,宏会帮你自动重新登录
- 但登录后拿到的 CSRF 令牌、Session 只有很短有效期 (大概 15~30 分钟)
- 你暴力破解 4 位验证码 0000~9999 要跑 3~5 小时
- 跑着跑着,旧令牌就超时失效了 → 直接报错
所以我们需要分段跑, 让一次跑个半个小时, 不成功的话就切换另外一次, 保证每次都是令牌时效期内就不会过期




