挖洞经验 | 利用邮件验证方式劫持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的请求替换功能,将验证邮件发送到攻击者控制的邮箱,从而完成对受害者账户的劫持。

漏洞复现步骤

准备工作

  1. 注册一个Shopify合作伙伴商店账户(your-store.myshopify.com)
  2. 准备Burp Suite工具
  3. 准备两个邮箱地址:
    • 攻击者邮箱(如:say_ch33se@wearehackerone.com)
    • 受害者邮箱(如:say_ch33se+111@wearehackerone.com)

详细利用步骤

  1. 注册Shopify合作伙伴商店

    • 访问your-store.myshopify.com注册账户
    • 在账户中添加一个新商店
  2. 暂停邮件验证

    • 在注册流程到达邮件验证步骤时,暂时不进行验证
  3. 修改绑定邮箱

    • 访问路径:admin/settings/account/youraccountnumber
    • 将当前绑定的攻击者邮箱改为受害者邮箱
    • 例如:将say_ch33se@wearehackerone.com改为say_ch33se+111@wearehackerone.com
  4. 配置Burp Suite规则

    • 设置Match and Replace规则:
      • 匹配所有请求中的邮箱地址
      • 替换为受害者邮箱say_ch33se+111@wearehackerone.com
  5. 触发验证流程

    • 返回之前的邮箱验证界面
    • 使用Burp Suite抓包
    • 刷新邮箱验证页面
  6. 上传头像图片

    • 在验证页面任意上传一张用户头像图片
    • 保存更改
  7. 发送验证邮件

    • 保持Burp的替换规则启用状态
    • 刷新页面后会出现验证界面
    • 点击"Resend verification email"按钮
    • 此时验证邮件会发送到攻击者的原始邮箱
  8. 完成验证

    • 在攻击者邮箱中点击验证链接
    • 在新打开的标签页中上传一张用户头像图片
    • 点击"Review accounts"
    • 设置Shopify ID(如需要)
    • 设置账户密码
  9. 账户劫持完成

    • 此时攻击者已成功登录绑定受害者邮箱的商店主页
    • 完全控制了受害者账户

技术细节分析

  1. 身份验证逻辑缺陷

    • 系统允许修改绑定邮箱后,验证邮件仍可发送到原始邮箱
    • 验证流程未正确检查当前会话与邮箱所有权的匹配关系
  2. 请求替换关键点

    • Burp Suite的Match and Replace功能用于确保所有请求中的邮箱都被替换为受害者邮箱
    • 这使得系统误认为攻击者拥有受害者邮箱的控制权
  3. 验证流程绕过

    • 通过特定操作顺序(修改邮箱→暂停验证→请求替换→触发验证)可以绕过正常的验证流程
    • 系统未对验证邮件的接收者进行二次确认

漏洞影响

  1. 直接影响

    • 攻击者可完全控制受害者的Shopify商店账户
    • 可访问所有商店数据和设置
    • 可进行财务操作和商品管理
  2. 潜在风险

    • 结合SSO(单点登录)可扩大攻击范围
    • 可能导致连锁反应影响关联账户
    • 可能被用于大规模账户劫持攻击

防护建议

  1. 对Shopify用户的建议

    • 启用双因素认证(2FA)
    • 监控账户异常活动
    • 使用唯一且复杂的密码
  2. 对开发者的建议

    • 实现严格的邮箱所有权验证
    • 在修改关键信息时进行多重验证
    • 确保验证流程与当前会话状态严格绑定
    • 对账户敏感操作增加确认步骤
  3. 通用安全实践

    • 定期审查身份验证流程
    • 实施安全头保护措施
    • 进行彻底的输入验证

总结

该漏洞展示了身份验证流程中逻辑缺陷可能导致的严重后果。通过精心构造的请求序列,攻击者可以绕过正常的验证机制,劫持他人账户。这强调了在设计和实现身份验证系统时,必须考虑所有可能的逻辑路径和边界情况,确保安全措施覆盖所有关键操作。

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 触发验证流程 返回之前的邮箱验证界面 使用Burp Suite抓包 刷新邮箱验证页面 上传头像图片 在验证页面任意上传一张用户头像图片 保存更改 发送验证邮件 保持Burp的替换规则启用状态 刷新页面后会出现验证界面 点击"Resend verification email"按钮 此时验证邮件会发送到攻击者的原始邮箱 完成验证 在攻击者邮箱中点击验证链接 在新打开的标签页中上传一张用户头像图片 点击"Review accounts" 设置Shopify ID(如需要) 设置账户密码 账户劫持完成 此时攻击者已成功登录绑定受害者邮箱的商店主页 完全控制了受害者账户 技术细节分析 身份验证逻辑缺陷 : 系统允许修改绑定邮箱后,验证邮件仍可发送到原始邮箱 验证流程未正确检查当前会话与邮箱所有权的匹配关系 请求替换关键点 : Burp Suite的Match and Replace功能用于确保所有请求中的邮箱都被替换为受害者邮箱 这使得系统误认为攻击者拥有受害者邮箱的控制权 验证流程绕过 : 通过特定操作顺序(修改邮箱→暂停验证→请求替换→触发验证)可以绕过正常的验证流程 系统未对验证邮件的接收者进行二次确认 漏洞影响 直接影响 : 攻击者可完全控制受害者的Shopify商店账户 可访问所有商店数据和设置 可进行财务操作和商品管理 潜在风险 : 结合SSO(单点登录)可扩大攻击范围 可能导致连锁反应影响关联账户 可能被用于大规模账户劫持攻击 防护建议 对Shopify用户的建议 : 启用双因素认证(2FA) 监控账户异常活动 使用唯一且复杂的密码 对开发者的建议 : 实现严格的邮箱所有权验证 在修改关键信息时进行多重验证 确保验证流程与当前会话状态严格绑定 对账户敏感操作增加确认步骤 通用安全实践 : 定期审查身份验证流程 实施安全头保护措施 进行彻底的输入验证 总结 该漏洞展示了身份验证流程中逻辑缺陷可能导致的严重后果。通过精心构造的请求序列,攻击者可以绕过正常的验证机制,劫持他人账户。这强调了在设计和实现身份验证系统时,必须考虑所有可能的逻辑路径和边界情况,确保安全措施覆盖所有关键操作。