挖洞经验 | 利用邮件验证方式劫持Shopify商店账户
字数 1693 2025-08-15 21:31:58
Shopify商店账户劫持漏洞分析与利用教学
漏洞概述
本漏洞是一个Shopify商店系统的身份验证逻辑缺陷,允许攻击者通过邮件验证机制劫持其他用户的商店账户。该漏洞由HackerOne白帽@say_ch33se于2020年发现,被Shopify官方评级为严重(Critical)级别,并获得了$22,500的奖励。
漏洞原理
Shopify商店系统(your-store.myshopify.com)在账户验证流程中存在逻辑缺陷,攻击者可以通过修改绑定邮箱并利用Burp Suite的请求替换功能,将验证邮件发送到攻击者控制的邮箱,从而完成对受害者账户的劫持。
漏洞复现步骤
准备工作
- 注册一个Shopify合作伙伴商店账户(your-store.myshopify.com)
- 准备Burp Suite工具
- 准备两个邮箱地址:
- 攻击者邮箱(如:say_ch33se@wearehackerone.com)
- 受害者邮箱(如:say_ch33se+111@wearehackerone.com)
详细利用步骤
-
注册Shopify合作伙伴商店
- 访问your-store.myshopify.com注册账户
- 在账户中添加一个新商店
-
暂停邮件验证
- 在注册流程到达邮件验证步骤时,暂时不进行验证
-
修改绑定邮箱
- 访问路径:
admin/settings/account/youraccountnumber - 将当前绑定的攻击者邮箱改为受害者邮箱
- 例如:将
say_ch33se@wearehackerone.com改为say_ch33se+111@wearehackerone.com
- 访问路径:
-
配置Burp Suite规则
- 设置Match and Replace规则:
- 匹配所有请求中的邮箱地址
- 替换为受害者邮箱
say_ch33se+111@wearehackerone.com
- 设置Match and Replace规则:
-
触发验证流程
- 返回之前的邮箱验证界面
- 使用Burp Suite抓包
- 刷新邮箱验证页面
-
上传头像图片
- 在验证页面任意上传一张用户头像图片
- 保存更改
-
发送验证邮件
- 保持Burp的替换规则启用状态
- 刷新页面后会出现验证界面
- 点击"Resend verification email"按钮
- 此时验证邮件会发送到攻击者的原始邮箱
-
完成验证
- 在攻击者邮箱中点击验证链接
- 在新打开的标签页中上传一张用户头像图片
- 点击"Review accounts"
- 设置Shopify ID(如需要)
- 设置账户密码
-
账户劫持完成
- 此时攻击者已成功登录绑定受害者邮箱的商店主页
- 完全控制了受害者账户
技术细节分析
-
身份验证逻辑缺陷:
- 系统允许修改绑定邮箱后,验证邮件仍可发送到原始邮箱
- 验证流程未正确检查当前会话与邮箱所有权的匹配关系
-
请求替换关键点:
- Burp Suite的Match and Replace功能用于确保所有请求中的邮箱都被替换为受害者邮箱
- 这使得系统误认为攻击者拥有受害者邮箱的控制权
-
验证流程绕过:
- 通过特定操作顺序(修改邮箱→暂停验证→请求替换→触发验证)可以绕过正常的验证流程
- 系统未对验证邮件的接收者进行二次确认
漏洞影响
-
直接影响:
- 攻击者可完全控制受害者的Shopify商店账户
- 可访问所有商店数据和设置
- 可进行财务操作和商品管理
-
潜在风险:
- 结合SSO(单点登录)可扩大攻击范围
- 可能导致连锁反应影响关联账户
- 可能被用于大规模账户劫持攻击
防护建议
-
对Shopify用户的建议:
- 启用双因素认证(2FA)
- 监控账户异常活动
- 使用唯一且复杂的密码
-
对开发者的建议:
- 实现严格的邮箱所有权验证
- 在修改关键信息时进行多重验证
- 确保验证流程与当前会话状态严格绑定
- 对账户敏感操作增加确认步骤
-
通用安全实践:
- 定期审查身份验证流程
- 实施安全头保护措施
- 进行彻底的输入验证
总结
该漏洞展示了身份验证流程中逻辑缺陷可能导致的严重后果。通过精心构造的请求序列,攻击者可以绕过正常的验证机制,劫持他人账户。这强调了在设计和实现身份验证系统时,必须考虑所有可能的逻辑路径和边界情况,确保安全措施覆盖所有关键操作。