在浏览某咖啡站点时,我注意到一个页面加载了来自第三方网站的内容。让我们称此网站为example.com,以免披露。当我在这个网站上做一些研究时,我在example.com/starbucks目录中看到了card.starbucks.com.sg上的相同登录页面,此时我有两种可能性。
1.此应用程序可以是一个制作和测试card.starbucks.com.sg当前开发的环境。
2.或者它可能被用作旧的测试环境,并且处于空闲状态。
这两种可能性都增加了这里出现错误的概率,但主要问题是,我不知道我在这里发现的错误是否会影响生产环境。为了理解这一点,我在card.starbucks.com.sg上创建了一个用户帐户,并尝试使用此帐户登录example.com/starbucks。我能够使用我刚刚创建的帐户成功登录。两个应用程序似乎都使用相同的身份验证机制。
从这一点开始,我浏览了example.com/starbucks,并发现了一个生产应用程序中不存在的端点。该端点收到的POST数据如下。
当我在这里的电子邮件参数中写下我想接管的帐户的电子邮件地址并发送请求时,我在我的个人资料页面上看到了属于该电子邮件地址的帐户的部分信息。我还无法完全接管帐户,并且由于此应用程序中生成的CSRF令牌无效,我的密码更改请求没有成功。
为了解决这个问题,我将PHPSESSID cookie值从example.com/starbucks复制到card.starbucks.com.sg我能够看到生产环境中属于受害者的所有信息,这里生成的有效CSRF令牌允许我更改密码,并且我能够完全接管一个我知道其电子邮件地址的帐户。
影响
除了查看属于用户的所有个人信息并完全接管帐户外,如果用户帐户中有加载的信用,这些信用可以通过移动应用程序在星巴克商店消费。我在example.com上遇到了另外两个测试环境。我们称它们为example.com/starbucks2和example.com/starbucks3。使用我在card.starbucks.com.sg的帐户,我无法登录任何测试环境。example.com/starbucks2不允许我创建新帐户,所以我在example.com/starbucks3上尝试了运气,并成功创建了一个新帐户。
我认为应用程序example.com/starbucks2和example.com/starbucks3正在使用测试表,因此生产用户无法登录这些应用程序。
使用我在example.com/starbucks3上创建的帐户,我能够登录example.com/starbucks2,但不能登录card.starbucks.com.sg。然而,我从example.com/starbucks2复制的PHPSESSID在card.starbucks.com.sg上是有效的,我可以使用该帐户。考虑到所有场景,我在这里创建了一个链,如下所示:
1.在example.com/starbucks3上用受害者的电子邮件地址创建一个虚拟帐户。(添加到测试用户表中。)
2.在example.com/starbucks2上,通过同一端点将该电子邮件的帐户与您自己的帐户相关联。(将PHPSESSID与testusers表中的电子邮件相关联。)
3.将PHPSESSID复制到card.starbucks.com.sg并接管。(接管生产用户表中同一电子邮件地址的真实帐户。)
原文始发于微信公众号(Undoubted Security):【漏洞实例】某咖啡站点通过IDOR接管6k美元的账户
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论