在本文中,const 和 mrhavit 将分享他们发现跨站脚本漏洞的经验,该漏洞可能在多个 TikTok 应用程序中导致帐户接管。
故事是如何开始的
一切都像往常一样从浏览 TikTok APP 开始,这一次他们打开了 VPN,而 VPN 有一个随机连接位置的选项,在他们浏览 TikTok 应用程序时,连接设置为了中国。
当他们试图访问 https://tiktok.com/ 时,立即被重定向到另一个网页,上面显示“此页面在您所在的地区不可用”。
新的重定向 URL 包含一些参数,第一个参数是“status”,它负责页面内容,第二个参数是“link”,目前还不知道它会如何影响页面。
当将“status”参数的值更改为“1”时,页面内容发生了变化,并出现了一个新按钮。单击该按钮会重定向到“link”参数的值,这就是“link”参数发挥作用的地方。
继续挖掘!
通过插入一些常见的 XSS Payloads,如
"javascript:alert()" 和 "javascript://"
开始测试“link”参数值,但没有任何变化,重定向链接仍设置为“https://go.onelink.me/BAuo/”。
过了一会儿,他们开始意识到实际上是可以控制路径的,这就意味着可以将“link”参数值设置为“https://go.onelink.me/mrhavit/”,而这个链接实际上也会嵌入到 HTML 中。
那么下一步就是检查是否会被困在“href”属性中,或者是否有可能突破并设置一些事件,正如你所想的那样,由于转义设置不正确,可以成功地将一个新事件插入到“href”属性中。
也就是在此时,他们意识到这是一个非常好的XSS线索,那么就继续深入挖掘吧!
黑客时间由于位于“href”属性内,并且可能会注入想要的任何事件,因此“onclick”是最合适的,当尝试这样做时,他们很快就遇到了每个安全人员都遇到过的麻烦事——WAF!
由于这是一个非常特殊的案例和一个独特的注入点,因此,他们开始琢磨如何处理这个 WAF,并试图通过制作一个独特的Payloads来绕过它。
绕过 WAF 并非易事, “>”和“<”等特殊字符被正确转义或编码,在花了一些时间并利用 JavaScript 技能之后,他们终于找到了一个很酷的绕过方法,可以让他们成功地执行 JavaScript!