dedeCms 5.7recommend.php 注入漏洞利用工具


漏洞文件: uploadsafe.inc.php

首先对比下补丁,发现修改了几个文件,其中的\include\uploadsafe.inc.php修改了代码

补丁前代码为:

$$_key = $_FILES[$_key]['tmp_name'] = str_replace("\\\\", "\\", $_FILES[$_key]['tmp_name']);

补丁后变成:

$$_key = $_FILES[$_key]['tmp_name'] = $_FILES[$_key]['tmp_name'];

也就是说这里的str_replace替换可能就是注入的关键!但是$_FILES[$_key]['tmp_name']是php系统生成的随机变量,默认不可控。

看到/include/common.inc.php的一段代码:

function _RunMagicQuotes(&$svar)
{
   if(!get_magic_quotes_gpc())
   {
       if( is_array($svar) )
       {
           foreach($svar as $_k => $_v) $svar[$_k] = _RunMagicQuotes($_v);
       }
       else
       {
           if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) )
           {
             exit('Request var not allow!');
           }
           $svar = addslashes($svar);
       }
   }
   return $svar;
}
if (!defined('DEDEREQUEST'))
{
   //检查和注册外部提交的变量   (2011.8.10 修改登录时相关过滤)
   function CheckRequest(&$val) {
       if (is_array($val)) {
           foreach ($val as $_k=>$_v) {
               if($_k == 'nvarname') continue;
               CheckRequest($_k);
               CheckRequest($val[$_k]);
           }
       } else
       {
           if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$val)  )
           {
               exit('Request var not allow!');
           }
       }
   }
   //var_dump($_REQUEST);exit;
   CheckRequest($_REQUEST);
   foreach(Array('_GET','_POST','_COOKIE') as $_request)
   {
       foreach($$_request as $_k => $_v)
               {
                       if($_k == 'nvarname') ${$_k} = $_v;
                       else ${$_k} = _RunMagicQuotes($_v);
               }
   }
}

只要变量名不含cfg_|GLOBALS|_GET|_POST|_COOKIE就行了,利用上面的代码可以覆盖$_FILES,同时利用这句代码:

$$_key = $_FILES[$_key]['tmp_name'] = str_replace("\\\\", "\\", $_FILES[$_key]['tmp_name']);

就可以覆盖任意变量了,结合str_replace的替换,就可以带入单引号了。可以引入单引号,注入就一堆了,看到plus/recommend.php的一段代码:



if($action=='')
{
   if($type=='sys'){
   //读取文档信息
       $arcRow = GetOneArchive($aid);
       if($arcRow['aid']=='')
       {
           ShowMsg("无法把未知文档推荐给好友!","-1");
           exit();
       }
       extract($arcRow, EXTR_SKIP);
   } else {
       $arcRow=$dsql->GetOne("Select s.*,t.* FROM `#@__member_stow` AS s LEFT JOIN `#@__member_stowtype` AS t ON s.type=t.stowname Where s.aid='$aid' AND s.type='$type'");
       if(!is_array($arcRow)){
           ShowMsg("无法把未知文档推荐给好友!","-1");
           exit();
       }
       $arcRow['arcurl']=$arcRow['indexurl']."=".$arcRow['aid'];
       extract($arcRow, EXTR_SKIP);
   }
}

0day工具下载只允许会员下载 该文件只允许会员下载! 登录 | 注册

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 0day
评论: 0 | 引用: 0 | 查看次数: 3086
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 验证码
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭