天天看點

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

以上内容均來自網絡,如有侵權請聯系我