首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>程序集锦>DEDE>资讯:DedeCMS V 5.3 任意变量覆盖漏洞

DedeCMS V 5.3 任意变量覆盖漏洞

www.jz123.cn  2009-06-04   来源:   中国建站会员投稿    时光磊    我要投递新闻

  影响版本:

  DedeCms V 5.3

  程序介绍:

  DedeCms 基于PHP+MySQL的技术开发,支持Windows、Linux、Unix等多种服务器平台,从2004年开始发布第一个版本开始,至今已经发布了五个大版本。DedeCms以简单、健壮、灵活、开源几大特点占领了国内CMS的大部份市场,目前已经有超过二十万个站点正在使用DedeCms或居于DedeCms核心,是目前国内应用最广泛的php类CMS系统。

  漏洞分析:

  看核心文件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更换模板的方法 下一篇:dede编辑器Fckeditor“引用"样式的修改

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图