星巴克新加坡通过IDOR接管账户

2020-11-05 20:18:59

在浏览星巴克新加坡时,我注意到一个页面加载了来自第三方网站的内容。让我们把这个网站命名为Example.com,这样就不会泄露了。当我在这个网站上做一些研究时,我在example.com/starbucks目录下的card.starucks.com.sg上看到了相同的登录页面,在这一点上我有两种可能性。

这个应用程序可以作为构建和测试card.starucks.com.sg当前开发的环境。

或者它可能已经被用作旧的测试环境,并且处于空闲状态。

这两种可能性都增加了这里出现bug的可能性,但主要问题是我不知道我在这里找到的bug是否会影响生产环境。为了理解这一点,我在card.starucks.com.sg上创建了一个用户帐户,并尝试用这个帐户登录Example.com/Starbucks。对啰!。我能够用我刚刚创建的帐户成功登录。这两个应用程序似乎使用相同的身份验证机制。

从那时起,我浏览了Example.com/Starbucks,发现了一个生产应用程序中不存在的端点。此端点收到的POST数据如下所示。

当我在此处的电子邮件参数中写入我想接管的帐户的电子邮件地址并发送请求时,我在个人资料页面上看到了属于该电子邮件地址的帐户的部分信息。我还无法完全接管帐户,我的密码更改请求也没有成功,因为此应用程序中生成了无效的CSRF令牌。

为了解决这个问题,我从example.com/starbucks将PHPSESSID cookie值复制到card.starucks.com.sg和boom!我能够在生产环境中看到属于受害者的所有信息,这里生成的有效CSRF令牌允许我更改密码,并且我能够完全接管我知道其电子邮件地址的帐户。

除了查看属于用户的所有个人信息并完全接管账户外,如果用户账户中有加载的积分,这些积分可以通过移动应用程序在星巴克门店消费。

我在Example.com上遇到了另外两个测试环境。让我们称它们为example.com/starbacs2和example.com/starbacs3。使用我在card.starucks.com.sg上的帐户,我无法登录到这两个测试环境。Example.com/starbacs2不允许我创建一个新帐户,所以我在example.com/starbacs3上碰碰运气,成功地创建了一个新帐户。事情在这里变得有点复杂,我会尽量简单地解释。

我认为应用程序example.com/starbacs2和example.com/starbacs3使用的是测试表,因此生产中的用户无法登录这些应用程序。

使用我在example.com/starucks3创建的帐户,我可以登录到example.com/starbacs2,但不能登录card.starucks.com.sg。但是,我从example.com/starbacs2复制的PHPSESSID在card.starucks.com.sg上是有效的,我可以使用该帐户。考虑到所有的场景,我在这里创建了一个链,如下所示:

使用受害者的电子邮件地址example.com/starbacs3创建一个虚拟帐户。(添加到测试用户表中。)。

在example.com/starbacs2上,通过相同的端点将该电子邮件的帐户与您自己的帐户相关联。(将PHPSESSID与TESTUSERS表中的电子邮件相关联。)。

将PHPSESSID复制到card.starucks.com.sg并接管。(接管生产用户表中同一电子邮件地址的真实帐户。)。

5月17日-5月18日提交的报告-5月20日分流-悬赏4000美元6月17日-悬赏2000美元作为1.5倍的倍数