dedecms v5.7(build 20150618)的12个漏洞

一打开阿里云后台,发现了12个加急处理的漏洞,还没来得及了解阿里云的漏洞检测原理,直接开始着手修复漏洞

searching on baidu... ...  : )

1.dedecms支付模块注入漏洞 

描述:

DEDECMS支付插件存在SQL注入漏洞,此漏洞存在于/include/payment/alipay.php文件中,对输入参数$_GET['out_trade_no']未进行严格过滤。

解决:找到 /include/payment/alipay.php 修改

$order_sn = trim($_GET['out_trade_no']);
修改为
$order_sn = trim(addslashes($_GET['out_trade_no']));

----------------------------------------------------

2.dedecms SESSION变量覆盖导致sql注入

描述:

dedecms的/plus/advancedsearch.php中,直接从$_SESSION[$sqlhash]获取值作为$query带入SQL查询,这个漏洞的利用前提是session.auto_start = 1即开始了自动SESSION会话,云盾团队在dedemcs的变量注册入口进行了通用统一防御,禁止SESSION变量的传入。

解决:找到 /include/common.inc.php 修改

if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#',$svar) )
改为
if( strlen($svar)>0 && preg_match('#^(cfg_|GLOBALS|_GET|_POST|_COOKIE|_SESSION)#',$svar) )

----------------------------------------------------------

3.dedecms 上传漏洞

描述:

dedecms过滤逻辑不严导致上传漏洞。

解决:找到 /include/uploadsafe.inc.php 修改

第一处:

${$_key.'_size'} = @filesize($$_key);   

改为

${$_key.’_size’} = @filesize($$_key); 
$imtypes = array("image/pjpeg", "image/jpeg", "image/gif", "image/png", "image/xpng", "image/wbmp", "image/bmp"); 
if(in_array(strtolower(trim(${$_key.’_type’})), $imtypes)) { 
    $image_dd = @getimagesize($$_key); 
    if($image_dd == false){ 
        continue; 
    } 
    if (!is_array($image_dd)){ 
	exit('Upload filetype not allow !'); 
    } 
}

 第二处:在上面修改的后面还有一个$image_dd没有判断

 $image_dd = @getimagesize($$_key);

后面添加

if($image_dd == false){ 
    continue; 
} 

解决:找到/include/dialog/select_soft_post.php 修改

在 fullfilename = $cfg_basedir.$activepath.'/'.$filename; 上面添加

if (preg_match('#\.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) {
    ShowMsg("你指定的文件名被系统禁止!",'javascript:;');
    exit();
}

-----------------------------------------------------------

4. dedecms cookies 泄漏导致SQL漏洞

描述:

dedecms的文章发表表单中泄漏了用于防御CSRF的核心cookie,同时在其他核心支付系统也使用了同样的cookie进行验证,黑客可利用泄漏的cookie通过后台验证,进行后台注入。

解决:

第一处:打开 \member\inc\inc_archives_functions.php 找到

echo "<input type=\"hidden\" name=\"dede_fieldshash\" value=\"".md5($dede_addonfields.$cfg_cookie_encode)."\" />";

修改为:

echo "<input type=\"hidden\" name=\"dede_fieldshash\" value=\"".md5($dede_addonfields."anythingelse".$cfg_cookie_encode)."\" />";

第二处: 打开 \member\article_add.php 找到

if (empty($dede_fieldshash) || $dede_fieldshash != md5($dede_addonfields.$cfg_cookie_encode))

修改为:

 if (empty($dede_fieldshash) || ($dede_fieldshash != md5($dede_addonfields.$cfg_cookie_encode) && $dede_fieldshash != md5($dede_addonfields . '
anythingelse' . $cfg_cookie_encode)))

--------------------------------------------------

5.留言板注入漏洞

描述:

dedecms留言板注入漏洞。

解决:

找到 /plus/guestbook/edit.inc.php 

$msg = HtmlReplace($msg, -1);
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
exit();

改为

$msg = addcslashes(HtmlReplace($msg, -1));
$dsql->ExecuteNoneQuery("UPDATE `#@__guestbook` SET `msg`='$msg', `posttime`='".time()."' WHERE id='$id' ");
ShowMsg("成功更改或回复一条留言!", $GUEST_BOOK_POS);
exit();

-----------------------------------------------------

6.dedecms后台文件任意上传漏洞

描述:

dedecms早期版本后台存在大量的富文本编辑器,该控件提供了一些文件上传接口,同时dedecms对上传文件的后缀类型未进行严格的限制,这导致了黑客可以上传WEBSHELL,获取网站后台权限。

解决:

找到 /dede/media_add.php

$fullfilename = $cfg_basedir.$filename;

修改为

if (preg_match('#.(php|pl|cgi|asp|aspx|jsp|php5|php4|php3|shtm|shtml)[^a-zA-Z0-9]+$#i', trim($filename))) { 
    ShowMsg("你指定的文件名被系统禁止!",'javascript:;');
    exit(); 
}
$fullfilename = $cfg_basedir.$filename;

----------------------------------------------------------------------

7. dedecms 模版SQL注入漏洞

描述:

dedecms的/member/soft_add.php中,对输入模板参数$servermsg1未进行严格过滤,导致攻击者可构造模版闭合标签,实现模版注入进行GETSHELL。

解决:

找到 /member/soft_add.php

$urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}\r\n";

改为

if (preg_match("#}(.*?){/dede:link}{dede:#sim", $servermsg1) != 1) { 
    $urls .= "{dede:link islocal='1' text='{$servermsg1}'} $softurl1 {/dede:link}\r\n"; 
}

------------------------------------------------------------------------

8.dedecms v5.7注册用户任意文件删除漏洞

描述:

dedecms前台任意文件删除(需要会员中心),发表文章处,对于编辑文章的时候图片参数处理不当,导致了任意文件删除

解决:

找到 /member/inc/archives_check_edit.php

$litpic =$oldlitpic;

修改为:

$litpic =$oldlitpic;
if (strpos( $litpic, '..') !== false || strpos( $litpic, $cfg_user_dir."/{$userid}/" ) === false) exit('not allowed path!');

-----------------------------------------------------------

9.dedecms 会员中心注入漏洞

描述:

dedecms会员中心注入漏洞。

解决:

找到 /member/pm.php 

$row = $dsql->GetOne("SELECT * FROM `#@__member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')");

改为

$id = intval($id);
$row = $dsql->GetOne("SELECT * FROM `#@__member_pms` WHERE id='$id' AND (fromid='{$cfg_ml->M_ID}' OR toid='{$cfg_ml->M_ID}')");

----------------------------------------------------------

10. Sql注入

描述:

dedecms的/dedecms/member/album_add.php文件中,对输入参数mtypesid未进行int整型转义,导致SQL注入的发生。

解决:

找到 /member/album_add.php 

$description = HtmlReplace($description, -1);
 //保存到主表
  $inQuery = "INSERT INTO `#@__archives`(id,typeid,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
color,writer,source,litpic,pubdate,senddate,mid,description,keywords,mtype)
VALUES ('$arcID','$typeid','$sortrank','$flag','$ismake','$channelid','$arcrank','0','$money','$title','$shorttitle',
'$color','$writer','$source','$litpic','$pubdate','$senddate','$mid','$description','$keywords','$mtypesid'); ";


改为:

$description = addcslashes(HtmlReplace($description, -1));
$mtypesid = intval($mtypesid);
    //保存到主表
$inQuery = "INSERT INTO `#@__archives`(id,typeid,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,
color,writer,source,litpic,pubdate,senddate,mid,description,keywords,mtype)
VALUES ('$arcID','$typeid','$sortrank','$flag','$ismake','$channelid','$arcrank','0','$money','$title','$shorttitle',
'$color','$writer','$source','$litpic','$pubdate','$senddate','$mid','$description','$keywords','$mtypesid'); ";

----------------------------------------------------------

11. Sql注入

位置:/member/mtypes.php

$query = "UPDATE `#@__mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";

改为:

$id = intval($id);
$query = "UPDATE `#@__mtypes` SET mtypename='$name' WHERE mtypeid='$id' AND mid='$cfg_ml->M_ID'";

---------------------------------------------------

searching end

以上内容均来自网络,如有侵权请联系我

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页