记一次2000美金赏金的密码重置账户接管


大家好,我是Omar Hamdy (Seaman),今天我将介绍我在Bugcrowd的私人邀请漏洞挖掘中发现的最cool的漏洞之一

前言我有一个私人邀请漏洞挖掘的目标,我们称它为redacted.com,经过一段时间的信息收集,我开始检查密码重置功能,通常我会寻找像(ATO,Host Header 注入)这样的漏洞

简单地说,当用户想要重设密码时,他输入他的名字和姓氏以及电子邮件。密码重置链接将发送到他的电子邮箱。

我请求为我的帐户重设密码,然后拦截请求(通过Zap 代理)以仔细检查它。

我发现请求是这样的:


密码重置链接是:

https://redacted.com/Reset?token=04294876770750

到目前为止没有什么令人兴奋的,我使用了链接,更改了密码并拦截了请求,在这里我发现了一些非常有趣的东西。

我发现请求是这样的:


如果您查看此请求,您会发现用于重置密码的令牌,它与用户请求重置密码时发送的现有令牌相同

从这里我可以通过更改受害者的密码来接管我想要的任何帐户

重现步骤1- 请求重置受害者帐户的密码并使用 Burpsuite 阻止该请求。

2- 您将找到用于重置受害者密码的令牌。

3- 请求为您的帐户重置密码,然后使用密码重置链接,更改您的密码并通过 Burpsuite 拦截请求。

4- 您会发现这样的请求:


5- 用受害者的令牌替换您的令牌,受害者的密码将成功更改。

当我向公司报告漏洞时,他们将风险从 P2 降低到 P3,因为我需要知道受害者的名字和姓氏,但后来通过进一步研究我发现我只需要知道受害者的电子邮件,如果我输入错误的名字和姓氏,我仍然能够获得受害者的令牌。

最终,我获得了2000美金的漏洞赏金。