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电商用户账户。
参考来源:
https://hackerone.com/reports/910300
精彩推荐