侦察阶段
在浏览星巴克新加坡站时,我发现某个页面加载了第三方站点(暂称example.com)的内容。经调查发现card.starbucks.com.sg的登录页面存在于example.com/starbucks目录下,存在两种可能性:
- 该应用可能是card.starbucks.com.sg的开发和测试环境
- 或是已废弃的旧测试环境
通过在生产环境创建测试账户并成功登录example.com/starbucks,确认两个应用使用相同的认证机制。
漏洞利用
在测试环境发现一个生产环境不存在的端点,其POST参数为:
|
|
当填入目标邮箱时,可在个人资料页看到该账户的部分信息。由于测试环境生成的CSRF令牌无效,无法直接修改密码。通过将测试环境的PHPSESSID cookie复制到生产环境后:
- 成功查看受害者完整信息
- 利用生产环境有效的CSRF令牌修改密码
- 实现账户完全接管
影响范围
攻击者可:
- 查看用户所有个人信息
- 完全控制账户
- 通过移动应用消费账户内存储的星礼卡余额
漏洞链扩展
在example.com发现另外两个测试环境:
- starbucks2:禁止新用户注册
- starbucks3:可创建新账户
通过分析得出:
- starbucks2/starbucks3使用独立测试用户表
- starbucks3创建的账户可登录starbucks2
- starbucks2的PHPSESSID在生产环境有效
最终构建攻击链:
- 在starbucks3用受害者邮箱创建傀儡账户(写入testusers表)
- 在starbucks2通过相同端点将该邮箱与自己账户关联(绑定PHPSESSID到测试用户表)
- 复制PHPSESSID到生产环境接管真实账户
时间线
- 5月17日:提交报告
- 5月18日:分类处理
- 5月20日:获4000美元赏金
- 6月17日:追加2000美元(1.5倍奖励)
原始漏洞报告 | 关注作者Twitter获取更多安全研究内容