挖洞经验 | 价值6k$的星巴克官网账户劫持漏洞
字数 1237 2025-08-15 21:32:16

星巴克官网账户劫持漏洞分析与复现指南

漏洞概述

本漏洞是一个典型的IDOR(不安全的直接对象引用)漏洞,通过测试环境与生产环境的认证机制共享,实现了对星巴克官网用户账户的劫持。漏洞发现者获得了星巴克官方6000美元的奖励。

漏洞发现过程

环境发现

  1. 发现新加坡星巴克网站(card.starbucks.com.sg)存在第三方测试环境(example.com/starbucks)
  2. 测试环境与生产环境界面完全相同,但URL不同
  3. 两种可能性:
    • 当前Web应用程序是生产环境的测试版本
    • 可能是忘记删除的旧版测试环境

初步验证

  1. 在生产环境(card.starbucks.com.sg)创建测试用户
  2. 使用相同凭证在测试环境(example.com/starbucks)成功登录
  3. 确认两个环境共享相同的用户认证机制

漏洞利用细节

主要利用路径

  1. 在测试环境发现包含用户绑定邮箱的POST请求参数:
    email=hacker@hacker.com
    
  2. 将邮箱参数替换为受害者邮箱
  3. 服务端返回部分受害者信息
  4. 初始尝试因CSRF token无效未能成功更改密码

关键突破点

  1. 将测试环境(example.com/starbucks)生成的PHPSESSID cookie复制到生产环境请求中
  2. 成功获取生产环境中受害者的完整个人信息
  3. 获得有效的CSRF token,从而能够更改受害者密码

其他测试环境发现

  1. 发现另外两个测试环境:
    • example.com/starbucks2
    • example.com/starbucks3
  2. 生产环境注册的用户无法登录这两个测试环境
  3. 测试环境特性:
    • starbucks2:不能注册新用户
    • starbucks3:可以注册新用户

扩展利用方法

  1. starbucks3用受害者邮箱注册新用户
  2. 用该用户登录starbucks2
  3. 复制starbucks2请求中的PHPSESSID到生产环境
  4. 实现账户劫持(前提是该邮箱已在生产环境注册)

漏洞影响

  1. 查看其他用户的个人信息
  2. 完全劫持受害者账户
  3. 消费受害者账户中的累积积分(通过移动APP)
  4. 潜在的其他恶意操作(如修改账户信息、下单等)

漏洞修复建议

  1. 测试环境与生产环境完全隔离
    • 使用不同的数据库
    • 不同的认证机制
  2. 及时清理不再使用的测试环境
  3. 加强会话管理:
    • 不同子域使用不同的会话机制
    • 增加会话绑定IP等安全措施
  4. 完善CSRF防护机制
  5. 实施严格的访问控制策略

漏洞报送时间线

  • 5月17日:漏洞报送
  • 5月18日:漏洞分类
  • 5月20日:获得4000美元奖励
  • 6月17日:获得额外2000美元奖励

教学总结

本案例展示了测试环境管理不善可能导致的安全风险,特别是当测试环境与生产环境共享认证机制时。安全研究人员应关注:

  1. 测试环境与生产环境的隔离情况
  2. 会话管理机制的一致性检查
  3. Cookie的作用域和有效性验证
  4. IDOR漏洞的多种表现形式

通过本案例,安全测试人员可以学习到如何通过环境差异发现潜在漏洞,以及如何利用认证机制共享问题实现权限提升。

星巴克官网账户劫持漏洞分析与复现指南 漏洞概述 本漏洞是一个典型的IDOR(不安全的直接对象引用)漏洞,通过测试环境与生产环境的认证机制共享,实现了对星巴克官网用户账户的劫持。漏洞发现者获得了星巴克官方6000美元的奖励。 漏洞发现过程 环境发现 发现新加坡星巴克网站( card.starbucks.com.sg )存在第三方测试环境( example.com/starbucks ) 测试环境与生产环境界面完全相同,但URL不同 两种可能性: 当前Web应用程序是生产环境的测试版本 可能是忘记删除的旧版测试环境 初步验证 在生产环境( card.starbucks.com.sg )创建测试用户 使用相同凭证在测试环境( example.com/starbucks )成功登录 确认两个环境共享相同的用户认证机制 漏洞利用细节 主要利用路径 在测试环境发现包含用户绑定邮箱的POST请求参数: 将邮箱参数替换为受害者邮箱 服务端返回部分受害者信息 初始尝试因CSRF token无效未能成功更改密码 关键突破点 将测试环境( example.com/starbucks )生成的 PHPSESSID cookie复制到生产环境请求中 成功获取生产环境中受害者的完整个人信息 获得有效的CSRF token,从而能够更改受害者密码 其他测试环境发现 发现另外两个测试环境: example.com/starbucks2 example.com/starbucks3 生产环境注册的用户无法登录这两个测试环境 测试环境特性: starbucks2 :不能注册新用户 starbucks3 :可以注册新用户 扩展利用方法 在 starbucks3 用受害者邮箱注册新用户 用该用户登录 starbucks2 复制 starbucks2 请求中的 PHPSESSID 到生产环境 实现账户劫持(前提是该邮箱已在生产环境注册) 漏洞影响 查看其他用户的个人信息 完全劫持受害者账户 消费受害者账户中的累积积分(通过移动APP) 潜在的其他恶意操作(如修改账户信息、下单等) 漏洞修复建议 测试环境与生产环境完全隔离 使用不同的数据库 不同的认证机制 及时清理不再使用的测试环境 加强会话管理: 不同子域使用不同的会话机制 增加会话绑定IP等安全措施 完善CSRF防护机制 实施严格的访问控制策略 漏洞报送时间线 5月17日:漏洞报送 5月18日:漏洞分类 5月20日:获得4000美元奖励 6月17日:获得额外2000美元奖励 教学总结 本案例展示了测试环境管理不善可能导致的安全风险,特别是当测试环境与生产环境共享认证机制时。安全研究人员应关注: 测试环境与生产环境的隔离情况 会话管理机制的一致性检查 Cookie的作用域和有效性验证 IDOR漏洞的多种表现形式 通过本案例,安全测试人员可以学习到如何通过环境差异发现潜在漏洞,以及如何利用认证机制共享问题实现权限提升。