MFA多因素验证绕过和提权
字数 1146 2025-08-27 12:33:23
MFA多因素验证绕过与提权技术分析
1. 概述
本文详细分析两种MFA(多因素验证)实现中的安全漏洞,包括Okta的第二个因素绕过和Symantec VIP的权限提升问题。这些漏洞并非MFA技术本身的问题,而是特定应用实现不当导致的。
2. Okta MFA绕过技术
2.1 正常验证流程
- 用户提交用户名和密码
- 服务器验证后返回三个关键参数:
- stateToken (状态令牌)
- oktaUserId (用户ID)
- factorId (因素ID)
- 自动触发SMS通知发送验证码
- 用户提交验证码后,服务器返回JWT令牌
2.2 漏洞利用
漏洞1:账户锁定机制缺失
- 应用仅在前端JavaScript显示锁定警告
- 后端未实施真正的账户锁定
- 刷新页面即可清除锁定状态
漏洞2:MFA与身份验证分离
- 两个验证步骤独立处理
- 可分别完成不同账户的验证部分
利用步骤:
- 暴力破解目标账户密码(无锁定限制)
- 使用攻击者自身账户正常登录获取stateToken和factorId
- 完成自身账户的SMS验证
- 在第二个验证请求中替换为目标账户的凭据
- 获取目标账户的JWT令牌
3. Symantec VIP权限提升技术
3.1 正常验证流程
- 用户提交用户名和密码
- 服务器返回两个关键参数:
- hidUserId (防篡改的用户ID)
- hidMfaId (防篡改的MFA ID)
- 用户提交安全码及上述参数
- 验证通过后授予访问权限
3.3 漏洞利用
漏洞1:hidUserId可被替换
- 验证请求接受任意hidUserId
- 但参数有签名保护难以伪造
漏洞2:hidUserId泄露
- 使用有效用户名+错误密码首次登录不返回hidUserId
- 第二次相同尝试会动态生成并返回hidUserId
利用步骤:
- 获取管理员账户的hidUserId:
- 使用管理员用户名+错误密码登录两次
- 从响应中提取hidUserId
- 使用普通账户正常登录获取验证参数
- 在提交安全码时替换hidUserId为管理员的值
- 以管理员权限成功登录
4. 防御建议
-
实施真正的账户锁定机制
- 后端强制执行锁定策略
- 设置合理的尝试次数限制
-
绑定验证因素
- 确保MFA验证与初始身份验证关联
- 使用会话令牌或唯一标识符关联两个步骤
-
参数保护
- 对关键参数实施严格的完整性检查
- 使用不可预测的令牌值
-
错误处理一致性
- 避免通过错误响应泄露敏感信息
- 保持错误响应的统一性
-
定期安全审计
- 检查MFA实现逻辑
- 验证各验证步骤的关联性
5. 总结
MFA是提高安全性的有效手段,但实现不当会导致严重漏洞。本文分析的两个案例展示了:
- 验证步骤分离导致的认证绕过
- 参数替换导致的权限提升
- 信息泄露辅助攻击
安全团队应关注MFA实现细节,确保各验证因素紧密关联,并实施全面的防御措施。