6月28日,HackerOne白帽@say_ch33se向电商平台Shopify公司上报了一个邮件验证问题导致的账户劫持漏洞,攻击者可以利用该漏洞劫持其他人在Shopify商店主页(your-store.myshopify.com)创建的商店账户。漏洞原因在于Shopify商店系统对账户的身份验证存在逻辑缺陷,漏洞最终被评级为严重(Critical)并获得了Shopify官方$22,500的奖励。我们一起来看看作者的发现过程。

漏洞复现

漏洞机制有点奇怪,为了更好的解释复现,配合相关截图说明。

1、在your-store.myshopify.com注册账户,成为Shopify合作伙伴商店,在其中添加商店:

2、之后,到了下面这步后,我们不着急进行邮件验证:

3、去到admin/settings/account/youraccountnumber下,把你当前的绑定的邮箱地址更改为受害者的邮箱地址,比如我原先绑定的邮箱地址是say_ch33se@wearehackerone.com,这里,我把它更改为受害者邮箱say_ch33se+111@wearehackerone.com,然后回到之前的邮件验证界面:

4、接下来,利用burp的match and replace规则匹配功能,设置以下邮箱地址替换规则,即把经由burp请求中的邮箱都替换成受害者邮箱say_ch33se+111@wearehackerone.com:

5、抓包之后,刷新之前的邮箱验证界面:

6、此时,我们在该页面任意上传一副用户头像图片并保存:

7、基于前述选中的match and replace规则,刷新该页面后会出现以下述界面,点击其中的“Resend verification email”按钮后,你绑定的邮箱say_ch33se@wearehackerone.com将会收到一封对受害者身份(say_ch33se+111@wearehackerone.com)的验证性邮件;同样 ,如果这里取消选中之前设置的match and replace规则,刷新页面同样也会是以下界面:

8、来到我们自己的邮箱say_ch33se@wearehackerone.com中,点击其中发送来的验证邮件链接,打开另一个浏览器标签页面;

9、在该打开的验证性标签页面中,随意上传一张用户头像图片:

10、点击其中的Review accounts,这里提示需要Shopify ID,那就选择设置Shopify ID:

11、接着就来到这个界面中:

12、点击继续,并设置密码:

13、现在我们就成功登录了绑定邮箱为say_ch33se+111@wearehackerone.com的受害者商店主页了。

漏洞影响

攻击者可以利用该漏洞综合SSO方式劫持Shopify电商用户账户。

参考来源:Hackerone

本文作者:clouds, 转自FreeBuf