内容简介:原文链接:为了更好的阅读附件中有漏洞挖掘视频在Tokopedia中bypass两个xss过滤器得到反射型XSS漏洞
原文链接: https://visat.me/security/reflected-xss-in-tokopedia-train-ticket/
为了更好的阅读附件中有漏洞挖掘视频
在Tokopedia中bypass两个xss过滤器得到反射型XSS漏洞
TL;DR
有一个XSS过滤器,GET如果它包含<字符后跟>字符,它将编码参数。该过滤器可以通过拆分进行绕过,可以绕过</script/>关闭标签成</script/和>两个反射参数。
以前的漏洞
早在2018年5月,我在Tokopedia平台中发现了一个反射型XSS。它是JavaScript上下文中简单的反映XSS。
我向Tokopedia安全团队报告,他们告诉我我的报告是重复的。我没有用心去检查它是否已经修好。
今年3月,我浏览了旧电子邮件并找到了报告。我重新测试这个漏洞是否还有,最终,我在同一页面上发现了该漏洞。
标记过滤
如果你在Tokopedia平台中搜索火车票,你将被重定向到这样的URL
https://tiket.tokopedia.com/kereta-api/search/Jakarta-Gambir-GMR/Bandung-Bandung-BD?adult=1&infant=0&trip=departure&dep_date=16-09-2019&ori=GMR&dest=BD
它将所有GET参数存储到JavaScript变量dataJs.query中。
所有GET参数都存储在dataJs.query
它存在于JavaScript上下文中。因此,如果你想要触发XSS,你必须:
- 绕过JavaScript
插入 </script><script>alert(1)</script>
参数。这将使HTML解析器不正确地关闭上下文,导致先前的JavaScript执行错误(我们不关心这个!)并启动新的攻击者控制的脚本内容。
-
绕过JavaScript变量中的dataJs.query。
插入
"}; alert(1); //
其中一个参数。这将导致JavaScript解析器关闭变量,直接执行我们的受控脚本,并忽略其余的。
我以前的报告使用的是第一种方法。服务器没有编码危险字符,例如 <into <
。然而,它编码 "
成 \"
和 \
成 \\
,所以不能使用第二种方法。
然后我注意到一种奇怪的行为。ori和dest参数中使用的编码与其他编码不同。请注意在其他参数中,"字符是如何被编码的%22。
使用了不同的编码
我尝试使用另一个参数 >
> 没有在两个参数中编码
有趣的是,它没有编码ori和dest参数。如果我插入两个<和>字符怎么办?
>< 没有编码
<> 编码
显然,服务器确实清理了参数,但只有 <.*> 在参数中出现!
Bypassing 过滤器
我搜索了一些XSS payloads并找到了这个paylaod。它说:
您可以使用//关闭标签代替>
我们来试试吧。
发生错误
Chrome犯了一个错误: Uncaught SyntaxError: Invalid or unexpected token
。好吧,我知道我正在取得进展。然后我尝试插入XSS payload。
已插入XSS有效负载
它不起作用,JavaScript解析器不将其视为结束标记。我更改了XSS payload,并在“绕过标记黑名单”部分找到了这个 </script/>
。
我们知道的事实是:我们无法插入 <
和 >
在同一参数中的字符,因为它会被编码。但是,如果我们分开 </script/
和 >
在不同的参数
(即ori和dest)?在这种情况下,它们之间会有其他字符 </script/","dest":">
。这仍然是一个有效的结束标签吗?
XSS审核员突出显示XSS payload
原来这是一个有效的结束标签!Chrome XSS审核员屏蔽了该页面,表明存在反映的XSS。然后我在Firefox上尝试了它,它工作了!
这是我使用的完整payload: https://tiket.tokopedia.com/kereta-api/search/Jakarta-Gambir-GMR/Bandung-Bandung-BD?dep_date=26-06-2019&adult=1&infant=0&trip=departure&ori=</script//&dest=><svg/onload=alert(document.location.href))//.
反射型xss
总结
Tokopedia中的cookie(已命名_SID_Tokopedia)仅限HTTP,因此我们无法通过XSS窃取会话。但事实证明,cookie意外地存储在一个名为
JavaScript变量中dataSession.session.cookies。这违背了cookie上仅HTTP属性的目的。通过利用XSS,攻击者可以窃取受害者的会话,
时间线
28/03/2019 - 向Tokopedia安全团队报告了漏洞。
08/04/2019 - 发送了一封后续电子邮件。该漏洞已得到修复,报告的严重性也很高。
11/06/2019 - Tokopedia奖励IDR 3.000.000并获得证书。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 如何成为一个漏洞赏金猎人
- Apache Tomcat修复一枚严重漏洞,赏金为欧盟支付
- Bug赏金平台HackerOne获3640万美元D轮融资
- 2017 年,GitHub 支付了 16.6 万美元的安全漏洞赏金
- 2017 年,GitHub 支付了 16.6 万美元的安全漏洞赏金
- 挖洞经验 | 看我如何发现比特币赌博网站漏洞并收获$12000赏金
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Building Web Reputation Systems
Randy Farmer、Bryce Glass / Yahoo Press / 2010 / GBP 31.99
What do Amazon's product reviews, eBay's feedback score system, Slashdot's Karma System, and Xbox Live's Achievements have in common? They're all examples of successful reputation systems that enable ......一起来看看 《Building Web Reputation Systems》 这本书的介绍吧!