dede常見漏洞以及解決方法

餘二五發表於2017-11-16

   dede的漏洞公認的多,接手這個網站也接觸了不少,現在就把幾種接觸到的或者瞭解到的漏洞記錄下來,讓大家可以提高警惕,防止網站被攻擊。

1.dede dialog目錄下的配置檔案漏洞

   如果有能力的同學最好好好研究下這個目錄下的檔案,漏洞太多了,先只說我遇到的一處

在include/dialog下的config.php第35行

1
2
3
4
5
6
7
8
9
10
11
12
if($cuserLogin->getUserID() <=0 )
{
    if(empty($adminDirHand))
    {
        ShowMsg("<b>提示:需輸入後臺管理目錄才能登入</b><br /><form>請輸入後臺管理目錄名:<input type=`hidden` name=`gotopage` value=`".urlencode($dedeNowurl)."` /><input type=`text` name=`adminDirHand` value=`dede` style=`width:120px;` /><input style=`width:80px;` type=`submit` name=`sbt` value=`轉入登入` /></form>""javascript:;");
        exit();
    }
    $adminDirHand = HtmlReplace($adminDirHand, 1);
    $gurl "../../{$adminDirHand}/login.php?gotopage=".urlencode($dedeNowurl);
    echo "<script language=`javascript`>location=`$gurl`;</script>";
    exit();
}


修改方案:$gurl = “../../{$adminDirHand}/login.php?gotopage=”.urlencode($dedeNowurl);上面新增如下語句:
$adminDirHand = HtmlReplace($adminDirHand, 1);


2.dede group.php頁面sql注入漏洞

   具體在group/global.inc.php中

1
$db->SetQuery("SELECT G.groupname,G.groupid,G.des,G.groupimg FROM #@__group_user AS U LEFT JOIN #@__groups AS G ON U.gid=G.groupid WHERE U.uid IN({$_GROUPS[`_vars`][`mids`]}) AND U.isjoin=1 AND U.gid<>$id LIMIT 0,6");


$id直接來自使用者的輸入。應該給$id加過濾


3.dede 5.7版本sql注入漏洞

   漏洞位置:/member/ajax_membergroup.php

   漏洞原因:沒有對membergroup變數進行過濾

4.wap跨站攻擊

   漏洞檔案:wapphp第39行

   解決方式:echo htmlspecialchars($pageBody);

5.dede搜尋模組sql注入

   漏洞檔案 : plus/search.php檔案存在變數覆蓋漏洞,導致$typeid能被二次覆蓋,產生sql注入漏洞。

  解決方式:官網下載補丁吧.

6.dede 5.6版本任意sql注入漏洞

   原因:形成原因:由於dedecmsv5.6的全域性機制可以任意給其賦值,而且高階搜尋功能/plus/advancedsearch.php中的$sql變數未初始化,導致高階搜尋功能可以繞過模板定義直接執行任意SQL語句。

  解決方法:對高階搜尋功能/plus/advancedsearch.php中的$sql變數初始化

7.dede全域性變數漏洞:

  漏洞檔案:include/common.inc.php

  解決方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
在 /include/common.inc.php  中
找到註冊變數的程式碼
foreach(Array(`_GET`,`_POST`,`_COOKIE`as $_request)
{
         foreach($$_request as $_k => $_v) ${$_k} = _RunMagicQuotes($_v);
}
修改為
foreach(Array(`_GET`,`_POST`,`_COOKIE`as $_request)
{
         foreach($$_request as $_k => $_v) {
                    ifstrlen($_k)>0 && eregi(`^(cfg_|GLOBALS)`,$_k) ){
                            exit(`Request var not allow!`);
                   }
                    ${$_k} = _RunMagicQuotes($_v);
    }
}


8.dede feedback.php頁面漏洞

   原因:DedeCMS的plusfeedback.php中對變數 $typeid未做過濾,導致SQL隱碼攻擊漏洞。

   解決方式:官方有補丁

9.dede變數覆蓋漏洞,安裝完了刪除了install就解決了

10.dede圈子搜尋漏洞

漏洞頁面:/group/search.php

解決方式:第16行:

1
$keyword = htmlspecialchars(addslashes($keyword));


11.dede官方原始碼漏洞

原始碼檔案:include/shopcar.class.php檔案第8行:

 解決方式:刪除@eval(file_get_contents(`php://input`));


12.dede新版本變數覆蓋漏洞

 檔案include/common.inc.php

 解決方式:

1
2
3
CheckRequest($_REQUEST);
在下面新增
CheckRequest($_COOKIE);


13 .dede檔案包含漏洞

  漏洞檔案:Include/payment/alipay.php      Include/payment/yeepay.php

    解決方式:官方有補丁

14.dede樣式分享XSS漏洞

    漏洞檔案plus/bshare.php

    解決方式:

1
plus目錄下的bshare.php檔案117行 $uuid = isset($uuid)? $uuid ``;改成 $uuid = isset($uuid)? htmlspecialchars($uuid) : ``;
本文轉自 3147972 51CTO部落格,原文連結:http://blog.51cto.com/a3147972/1287849,如需轉載請自行聯絡原作者


相關文章