DedeCMSV53任意变量覆盖漏洞 's

admin 2017年5月2日12:59:21评论379 views字数 1104阅读3分40秒阅读模式
摘要

BY flyh4t
http://www.wolvez.org
2008-12-12DedeCMSV53发布了,但是依旧没有将变量覆盖漏洞彻底修补。这个漏洞和ryat那个很相似 :)
看核心文件include/common.inc.php中的代码

BY flyh4t
http://www.wolvez.org
2008-12-12

DedeCMSV53发布了,但是依旧没有将变量覆盖漏洞彻底修补。这个漏洞和ryat那个很相似 DedeCMSV53任意变量覆盖漏洞  's
看核心文件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里面的一些判断

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2017年5月2日12:59:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DedeCMSV53任意变量覆盖漏洞 'shttp://cn-sec.com/archives/44761.html

发表评论

匿名网友 填写信息