挖洞经验丨敏感信息泄露+IDOR+密码确认绕过=账户劫持
字数 1060 2025-08-18 11:38:49
敏感信息泄露+IDOR+密码确认绕过=账户劫持漏洞分析
漏洞概述
本文档详细分析了一个结合敏感信息泄露、不安全的直接对象引用(IDOR)和密码确认绕过三种漏洞的账户劫持攻击链。攻击者通过这三个漏洞的组合利用,最终实现了对目标网站任意用户账户的完全控制。
漏洞发现环境
- 目标网站:一个工作招聘门户网站(redacted.com)
- 测试角色:应聘者身份
- 测试方法:创建多个测试账户进行交互测试
漏洞详细分析
1. 敏感信息泄露漏洞(auth_token泄露)
漏洞点:注册过程中的邮箱检查功能
复现步骤:
- 访问注册功能,在邮箱检查环节
- 输入任意未注册邮箱
- 观察服务端响应
漏洞表现:
服务端返回了包含敏感信息的响应:
{
"redirect_url": "/?auth_token=_v2_8dsf8asdf12ad4f5a4sdf56as1df65asdf56sd4ff&contact_id=11cb26ae&expire=1152315525"
}
关键点:
- 路径:
/candidate/create - 泄露信息:
auth_token、contact_id和过期时间 - 影响:攻击者可获取任意用户的认证令牌
2. 不安全的直接对象引用(IDOR)
利用方式:
- 使用已知受害者的邮箱进行注册检查
- 获取该用户的
auth_token - 构造认证URL:
https://redacted.com/?auth_token=d8fs4ds8fdsf84dsf8dsfads8fasd6f84dsf684dsafccv68f4&contact_id=52z1d5d4&expire=1152315525 - 在隐身模式访问该URL
漏洞表现:
- 无需密码直接登录受害者账户
- 实现初步的账户劫持
限制:
- 访问敏感操作(如修改资料)时需要密码确认
3. 密码确认绕过漏洞
绕过方法:
步骤1:邮箱更改
- 在受害者会话中,找到邮箱更改API端点:
/api/profile - 发送PATCH请求修改邮箱:
{"email_address":"attackers@gmail.com"}
步骤2:密码重置
- 在密码确认界面点击"忘记密码"
- 密码重置链接将发送到攻击者控制的邮箱
- 通过重置链接设置新密码
替代漏洞路径:
/contact/api/update/v1- 同样存在邮箱更改功能
漏洞修复建议
-
敏感信息泄露:
- 禁止在响应中返回
auth_token等敏感信息 - 对注册流程进行安全审查
- 禁止在响应中返回
-
IDOR防护:
- 实施严格的访问控制
- 使用随机不可预测的令牌
- 对
auth_token进行有效期限制和单次使用
-
密码确认绕过:
- 关键操作(如邮箱更改)需要多重验证
- 密码重置前验证原邮箱所有权
- 记录并监控敏感操作日志
漏洞影响
- 攻击者可完全控制任意用户账户
- 可能导致隐私数据泄露、欺诈行为等严重后果
时间线与奖励
- 初始漏洞报告:4天内修复,奖励$2,500
- 后续发现类似漏洞:奖励$150
总结
此案例展示了看似简单的漏洞如何组合形成严重威胁。开发人员需要:
- 避免敏感信息泄露
- 实施严格的访问控制
- 关键操作需要多重验证
- 定期进行安全审计
通过防御深度策略,可以有效防止此类组合攻击。