白帽故事 · 2024年11月14日

已修复漏洞?如何绕过并再次利用!

前言

在查看某个披露的漏洞报告时,白帽小哥发现该漏洞允许攻击者在电子邮件更改过程中绕过所需的验证步骤,在了解了漏洞的形成以及绕过方法后,小哥最终发现了新的绕过方法,究竟是怎样绕过的,让我们一同来看看吧~

漏洞(修复前)

由于电子邮件更改过程中缺乏验证步骤,最初的漏洞允许未经授权的电子邮件更改。

通常情况下,当用户尝试更改其电子邮件时,他们会被重定向到受密码保护的页面,然后再继续进行下一步更改。

然而,漏洞是因为攻击者可以通过利用/verification-pc端点内的return参数来实现绕过。

/verification-pc端点包含了一个return参数,该参数指向电子邮件更改页面的 URL 编码值,如下:

www.example.com/verification-pc?return=https%3A%2F%2Fexample.com%2Fprofile%2Femail%2Fchange

通过解码return的参数值,可以发现它直接指向电子邮件更改URL,由于应用程序未正确执行安全检查,从而被直接导航到已解码的电子邮件更改 URL,而无需输入任何密码。

漏洞(修复后)

通过以上信息,大致了解了漏洞的形成原因,那么开发人员又是如何修复该漏洞的呢?

通过检查,白帽小哥发现开发人员实施了额外的安全措施来防止未经授权的电子邮件更改。

修复方法是向/user/api/verificationToken端点添加 API 请求,此请求负责触发向用户发送验证电子邮件,其目的是确保在进行任何更改之前必须验证用户当前的电子邮件地址。

请求抓包如下:

POST /user/api/verificationToken HTTP/2
Host: example.com
Cookie: [session-related cookies]
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)...
Content-Type: application/json
Origin: https://example.com
Content-Length: 48

{
  "userId": 123456789,
  "tokenType": "CHANGE_EMAIL"
}

可以推断出开发人员的修复步骤如下:

1. 启动电子邮件更改:用户通过其个人资料设置请求更改,从而启动电子邮件更改过程
2. 触发验证: 应用程序向 /user/api/verificationToken 端点发送请求,提示系统向用户当前的电子邮件地址发送验证电子邮件
3.用户验证更改: 用户点击验证电子邮件中的链接,并确认其电子邮件更改请求
4. 电子邮件更改完成: 验证过程完成后,用户可以访问 /profile/email/change 端点并继续进行电子邮件更改

绕过修复

1. 拦截请求: 使用 Burp Suite,拦截了对/user/api/verificationToken请求
2. 删除请求: 删除该请求,阻止发送验证电子邮件
3.绕过验证: 丢弃该请求后,网站允许直接进入电子邮件更改页面,于是同样可以无需任何验证链接来更改电子邮件地址

你学到了么?

以上内容由骨哥翻译并整理。

原文:https://medium.com/@cvjvqmmsm/easy-bug-how-i-uncovered-and-re-exploited-a-resolved-vulnerability-from-a-disclosed-report-ab2211a98b7b