bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

栏目: 编程工具 · 发布时间: 5年前

内容简介:原文链接:为了更好的阅读附件中有漏洞挖掘视频在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中。

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

所有GET参数都存储在dataJs.query

它存在于JavaScript上下文中。因此,如果你想要触发XSS,你必须:

  1. 绕过JavaScript

插入 </script><script>alert(1)</script> 参数。这将使HTML解析器不正确地关闭上下文,导致先前的JavaScript执行错误(我们不关心这个!)并启动新的攻击者控制的脚本内容。

  1. 绕过JavaScript变量中的dataJs.query。

    插入 "}; alert(1); // 其中一个参数。这将导致JavaScript解析器关闭变量,直接执行我们的受控脚本,并忽略其余的。

我以前的报告使用的是第一种方法。服务器没有编码危险字符,例如 <into &lt; 。然而,它编码 "\"\\\ ,所以不能使用第二种方法。

然后我注意到一种奇怪的行为。ori和dest参数中使用的编码与其他编码不同。请注意在其他参数中,"字符是如何被编码的%22。

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

使用了不同的编码

我尝试使用另一个参数 >

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

> 没有在两个参数中编码

有趣的是,它没有编码ori和dest参数。如果我插入两个<和>字符怎么办?

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

>< 没有编码

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

<> 编码

显然,服务器确实清理了参数,但只有 <.*> 在参数中出现!

Bypassing 过滤器

我搜索了一些XSS payloads并找到了这个paylaod。它说:

您可以使用//关闭标签代替>

我们来试试吧。

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

发生错误

Chrome犯了一个错误: Uncaught SyntaxError: Invalid or unexpected token 。好吧,我知道我正在取得进展。然后我尝试插入XSS payload。

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

已插入XSS有效负载

它不起作用,JavaScript解析器不将其视为结束标记。我更改了XSS payload,并在“绕过标记黑名单”部分找到了这个 </script/>

我们知道的事实是:我们无法插入 <> 在同一参数中的字符,因为它会被编码。但是,如果我们分开 </script/> 在不同的参数

(即ori和dest)?在这种情况下,它们之间会有其他字符 </script/","dest":"> 。这仍然是一个有效的结束标签吗?

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

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))//.

bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS

反射型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并获得证书。 bugbounty:赏金3000美元 在Tokopendia中bypass两个XSS


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

亚马逊跨境电商运营宝典

亚马逊跨境电商运营宝典

老魏 / 电子工业出版社 / 2018-6 / 69

《亚马逊跨境电商运营宝典》详细讲解亚马逊的平台知识和运营技巧,内容围绕亚马逊卖家的日常工作,系统讲解亚马逊账号注册、后台操作、选品、产品发布、Listing 优化、站内广告、FBA 发货、VAT 税务等内容,并且通过大量的案例分析,用生动翔实的案例为读者传递运营中必备的操作技巧和运营方法。 《亚马逊跨境电商运营宝典》内容针对性强,讲解的知识、技巧和方法都充分考虑到易学、易懂、易操作、易落地执......一起来看看 《亚马逊跨境电商运营宝典》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具