星巴克新加坡站 6000 美元账户接管漏洞:IDOR 漏洞详解
星巴克新加坡站 6000 美元账户接管漏洞:IDOR 漏洞详解
侦查阶段
在浏览星巴克新加坡站时,我注意到一个页面加载了来自第三方站点(暂称为 example.com)的内容。调查该站点时,我在 example.com/starbucks 目录下发现了与 card.starbucks.com.sg 相同的登录页面。此时有两种可能性:
该应用可能是 card.starbucks.com.sg 的开发和测试环境
或者是已废弃的旧测试环境
这两种可能性都增加了存在漏洞的概率。为验证环境关联性,我在生产环境创建账户后成功用该账户登录了测试环境,证明两个应用使用相同的认证机制。
漏洞利用
在测试环境发现了一个生产环境不存在的端点,其 POST 数据格式为:
当输入目标邮箱时,可以在个人页面看到该账户的部分信息。虽然此时尚无法完全接管账户(由于测试环境生成的 CSRF 令牌无效导致密码修改失败),但通过将测试环境的 PHPSESSID cookie 复制到生产环境后,成功获取了完整账户权限。
漏洞影响
攻击者不仅可以查看用户所有个人信息和完全接管账户,如果账户内有充值余额,还可以通过移动应用在星巴克门店消费。
漏洞链扩展
在 example.com 上还发现了另外两个测试环境(starbucks2 和 starbucks3)。通过以下攻击链实现了账户接管:
在 starbucks3 用受害者邮箱创建测试账户(写入 testusers 表)
在 starbucks2 将测试账户与攻击者账户关联(在 testusers 表中绑定 PHPSESSID 和邮箱)
将 PHPSESSID 复制到生产环境接管真实账户
时间线
5 月 17 日:提交漏洞报告
5 月 18 日:进入处理流程
5 月 20 日:获得 4000 美元赏金
6 月 17 日:获得 1.5 倍乘数奖励 2000 美元
原始漏洞报告更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)公众号二维码

评论