前期侦察
在分析 Target.com 时,通过 Burp Suite 中监控 HTTP 请求,发现一处 有趣的 API 端点:
GET /accounts/manage-users-data HTTP/2
在响应包中,包含了以下参数:
"showResetPassword": false,
"showModifyEmails": false
这些值表示用户角色禁用了密码重置和电子邮件修改选项。
漏洞利用
在 Burp 中使用匹配和替换 ,将响应包修改为:
"showResetPassword": true,
"showModifyEmails": true
刷新页面会发现可以访问两个新选项:
测试密码重置
当启用这些选项后,白帽小哥决定测试是否可以为团队中的用户重置密码 。
首先选择一个团队成员的帐户 ,然后单击 Reset Password(重置密码 ),系统响应 200 OK, 并提供了有效的密码重置链接 :
复制该链接,浏览器中打开后成功设置了新密码,并成功登录了该成员的帐户 。
这证实了我们可以为团队内部的用户重置密码 ——那么该漏洞是否适用于团队外部的用户呢?
任意用户密码重置
当单击 Reset Password(重置密码) 时,拦截请求:
{
"userId": 9438867,
"resetAccessKey": false
}
请求中包括用户的数字 ID,这立刻引起了白帽小哥的注意。
为了确认用户 ID 是连续的 ,白帽小哥创建了一个新账户并检查了其用户 ID。
新账户的 ID为 9438868,这意味着系统使用了增量用户 ID。
修改该请求,将 userId 替换为另一个非团队用户 ID:
{
"userId": 9438868,
"resetAccessKey": false
}
服务器响应 200 OK, 同时收到了有效的密码重置链接 !成功成功登录受害者的帐户!
白帽小哥立即报告了该漏洞,最终漏洞被定级为严重,白帽小哥也顺利获得了丰厚的漏洞赏金。
你学到了么?