看核心文件include/common.inc.php中的代码 //检查和注册外部提交的变量 foreach($_REQUEST as $_k=>$_v) { if( strlen($_k)>0 && eregi('^(_|cfg_|GLOBALS)',$_k) && !isset($_COOKIE[$_k]) )//程序员逻辑混乱了? { exit('Request var not allow!'); } } 这个地方可以通过提交_COOKIE变量绕过cfg_等关键字的过滤 接着是注册变量的代码 foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v); } 然后初始化变量 //数据库配置文件 require_once(DEDEDATA.'/common.inc.php'); //系统配置参数 require_once(DEDEDATA."/config.cache.inc.php"); 看似不能利用了,但是幸运的是在文件最后有这样一段代码 //转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数 if($_FILES) { require_once(DEDEINC.'/uploadsafe.inc.php'); } 再看uploadsafe.inc.php给我们提供了什么 $keyarr = array('name','type','tmp_name','size'); foreach($_FILES as $_key=>$_value) { foreach($keyarr as $k) { if(!isset($_FILES[$_key][$k])) { exit('Request Error!'); } } $$_key = $_FILES[$_key]['tmp_name'] = str_replace("\\\\","\\",$_FILES[$_key]['tmp_name']);...
看核心文件include/common.inc.php中的代码 //检查和注册外部提交的变量 foreach($_REQUEST as $_k=>$_v) { if( strlen($_k)>0 && eregi('^(_|cfg_|GLOBALS)',$_k) && !isset($_COOKIE[$_k]) )//程序员逻辑混乱了? { exit('Request var not allow!'); } } 这个地方可以通过提交_COOKIE变量绕过cfg_等关键字的过滤 接着是注册变量的代码 foreach(Array('_GET','_POST','_COOKIE') as $_request) { foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v); } 然后初始化变量 //数据库配置文件 require_once(DEDEDATA.'/common.inc.php'); //系统配置参数 require_once(DEDEDATA."/config.cache.inc.php"); 看似不能利用了,但是幸运的是在文件最后有这样一段代码 //转换上传的文件相关的变量及安全处理、并引用前台通用的上传函数 if($_FILES) { require_once(DEDEINC.'/uploadsafe.inc.php'); } 再看uploadsafe.inc.php给我们提供了什么 $keyarr = array('name','type','tmp_name','size'); foreach($_FILES as $_key=>$_value) { foreach($keyarr as $k) { if(!isset($_FILES[$_key][$k])) { exit('Request Error!'); } } $$_key = $_FILES[$_key]['tmp_name'] = str_replace("\\\\","\\",$_FILES[$_key]['tmp_name']); //注意这个地方,通过common.inc.php的漏洞,我们是可以控制$_FILES[$_key]['tmp_name'] 的 这里通过提交类似common.inc.php?_FILES[cfg_xxxx][tmp_name] =aaaaaa&……来覆盖cfg_xxxx 利用的时候注意给cookie赋值,同时要绕过uploadsafe.inc.php里面的一些判断 DedeCms V 5.3 厂商补丁: DesDev Inc. ----------- 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: <a href="http://www.dedecms.com" target="_blank" rel=external nofollow>http://www.dedecms.com</a>