作为众多漏洞测试者挖掘的主流漏洞,跨站脚本漏洞的危害影响可小可大。因此,当我只通过了几分钟的报文头参数检查,就在俄罗斯最大的互联网公司Mail.ru中发现了一个基于Cookie的XSS跨站漏洞后,我觉得算是走运了,最后也因此收获了Mail.ru奖励的$1,000。

漏洞发现过程

在浏览https://mail.ru的过程中,我开启了Burpsuite抓包,以拦截其请求响应消息。为了从中发现隐藏参数,我用到了Burpsuite中由James Kettle开发的插件Param Miner-https://portswigger.net/bappstore/17d2949a985c4b7ca092728dba871943。通过其与Burpsuite的配合利用,我发现了一些请求中涉及到的各种参数,其中一个就是HTTP请求头中叫"gp"的cookie参数,该参数有点意思,因为它的值会返回在响应消息中,由此可能会引发XSS漏洞。

验证XSS漏洞

众所周知,验证反射型XSS的一个方法就是在漏洞参数处填入危险操作字符,观察其会不会被服务端的WAF过滤掉,根据哪些字符会被过滤,哪些字符会被放行,以此最终来构造绕过WAF的XSS Payload。由于Cookie参数中包含了"gp"参数,且该参数值会在响应消息中予以返回,因此我尝试在Cookie参数中插入以下XSS Payload来测试:

<script>alert(document.cookie)</script>

然后,我在burpsuite响应消息中,点击“Show response in browser”,其就转到默认的Firefox浏览器中加载页面,但却没有弹出Cookie信息的提示框来。我反复测试,构造Payload,最后也没能成功。

以下是其请求和相应的响应:

GET / HTTP/1.1 
Host: mail.ru 
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Cookie: gp= some alpha numeric string; 
Connection: close 
Upgrade-Insecure-Requests: 1 
Cache-Control: max-age=0

-------------------------------------------

200 OK
</script><script id="script:globals">var mr={:{BUILD:"307ad21",VERSION:1566410797,TIMESTAMP:1567848214281,TIMESTAMP_LOCAL: Date.now(),TIMEZONE:10800,AUTH:!1,CITY:"Кампала",REGION_ID:233, PAGE_ID: "15678651219031568689886875",ACC_CNT: false,MEDIA_ORDER:"regional,regional,auto,auto,lady,lady,deti,deti,health,health,sport,sport,cinema,cinema,hitech,hitech,games,games",INCUT_ORDER:"incut,stub",WIDGET_ORDER:"horo,tv,torg",FEATURE_ORDER:"auto,lady,sport,cinema,hitech,games",TARGET:"default",SITEZONE:15,SITEID:169,DEVICE:"desktop",BROWSER:"Firefox",PLATFORM:"Linux",REGION_LEVEL_ID:188,GP:"Payload gets reflected here ;",CSRF:"3b021e69c3bf49fe900037b18fc581be",MANUAL_REGION_NOT_RUSSIA:true,HONEYPOT: '.gridmain-col .tgb, .grid .grid_main-col

第二天,我突然想到了尝试闭合<script>标签,然后我又在Cookie参数的gp处填入了以下Payload:

</script><script>alert(document.domain)</script>

最后,它终于能在响应消息中成功触发:

也能在浏览器中实现XSS Payload执行:

之后,我就向Mail.ru上报了该漏洞,由于这仅只是一个Self-XSS漏洞,所以我也没抱太大希望能获得赏金。但是,之后我发现有些Mail.ru的上报漏洞中明确提到,可以利用这种存在漏洞的Cookie参数发起对受害者的中间人攻击如《Сookie-based XSS exploitation | $2300 Bug Bounty story》。因此,我又觉得,Mail.ru应该还是会比较重视该漏洞的吧。的确,最后我获得了Mail.ru奖励的$1000美金。

漏洞上报和处理进程

2019.9.7 — 漏洞上报

2019.9.7 — 漏洞分类

2019.9.26 — 漏洞奖励

2019.9.27 — 漏洞修复

参考来源:

medium

本文作者:clouds, 转自FreeBuf