这个漏洞是关于我如何能够在没有任何交互的情况下仅通过使用大多数组织没有实现的新功能来接管任何用户帐户。让我让您更好地了解目标及其功能。
假设目标是target.com,它是一个视频学习平台,您可以在其中上传有关任何课程或培训的视频,并与公共、私人或什至用于任何电子商务目的共享。目标是拥有许多不同的功能,包括团队管理和邀请用户加入团队。所以一旦我们邀请某人加入我们的团队。我们也可以编辑该用户的信息并更改密码。
需要注意的一件重要事情是,无论何时创建新用户,都会分配一个唯一的用户 ID ,该用户 ID 实际上是连续的,很容易被猜到。他们之所以这样做,是因为用户分享了他们的视频,并使这个过程简单易记,个人资料链接。
所以你们都必须知道,只要有邀请用户功能和团队管理功能。我们甚至可以管理和编辑受邀用户的信息,有时也可以更改他们的密码。但这里还有一个附加功能,即“复制重置密码链接”。此按钮的作用是复制该受邀用户的重置密码链接。这就像使用密码重置功能一样,但团队经理可以在这里复制其受邀用户的重置密码链接。
后端到底发生了什么?当我们点击那个按钮时,一个请求被发送到服务器,要求该用户的重置密码链接,服务器响应该链接,然后该链接被复制到我们的剪贴板中。
您一定在想这个功能和普通的重置密码功能有什么区别?
主要区别在于,当我们使用重设密码功能时,服务器仅响应“电子邮件中发送的密码重设链接”。
但是在这个端点中,链接是由服务器在响应中发送的。我立即想到这可能是存在漏洞的情况。
我记下了一些我认为可能有帮助的事情,即某些用户(包括受邀用户和非受邀用户)的用户 ID 以及当我们单击复制密码重置链接时的请求。
它看起来像这样
请求端点是:
target.com/json/reply/GetResetPasswordLinkRequest?userid=<id>。
1.起初,我考虑将 userid 参数更改为其他用户 id 参数,即不是受邀用户而是非受邀用户或其他管理员的用户 id。
2.我更改了请求中的用户标识并发送了请求。我认为它应该抛出一个未经授权的错误,但它发送了一些密码重置链接作为响应。
3. 我无法相信并且很高兴这是一个仅通过用户 ID 的帐户接管。我想尽快使用此链接并展示完整的影响。但是当我打开链接,输入新密码并点击提交时,它显示了一个错误。
4. 本来还高兴了几分钟,现在显示错误。所以我认为他们有一些实现可以防止这种情况发生。
在那个错误之后,通常研究只是转向一些其他方法或测试一些其他功能,认为这不起作用。但在这里我所做的是尝试使用旧密码登录受害者帐户……而且它实际上向我显示了错误的密码。
我立即输入我在链接中使用的新密码,登录成功。那么究竟发生了什么?即使密码重置链接显示此错误,密码实际上是在后端更改的。这只是前端的这个错误。
我立即尝试更改该平台上其他一些帐户的密码,因为用户 ID 是公开可见的。我实际上能够更改组织发布博客内容的博客帐户的密码,并以这种方式显示影响。
该组织立即实施了必要的修复,并告诉我等待,因为他们也在进行其他一些主要修复。他们根据他们的赏金等级奖励了我2000美金
提示和要点:有时即使出现错误,也要始终重新验证您尝试进行的更改。如果未经验证,我们可能会错过很多东西。
始终在响应中可见任何敏感信息的地方记录端点。