您現在的位置是:首頁 > 運動

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

由 陸柏熺 發表于 運動2022-10-25
簡介php檔案,搜尋(大概在68行),查詢程式碼:if( strlen($svar)>0 && preg_match(‘#^(cfg_|GLOBALS|_GET|_POST|_COOKIE)#’,$svar) )替換成如下

mediaserver怎麼恢復

這一次透過之前積累的資料,彙總了dedecms5。7最新版本的各種漏洞及修復方法,這裡分享給大家,為了便於使用和查閱,於是全部整理放在一起。在修復dedecms漏洞時注意備份檔案後再修改,避免改錯了還可以還原回去。

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

01

任意檔案上傳漏洞修復

關於漏洞的具體分析就不呈現,避免某些人用於不好的用途,任意檔案上傳就是透過一些工具,在你的網站使用非正常的方式上傳一些帶有木馬的檔案,然後透過執行獲得你的管理員賬號及密碼等。

開啟/include/dialog/select_soft_post。php檔案,搜尋(大概在72行)

$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(); } $fullfilename = $cfg_basedir。$activepath。‘/’。$filename;;

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

再次提醒,修改前備份檔案,這個漏洞主要是在前臺頁面上,因為只有被上傳了木馬檔案才會執行,所以儘快修復。

02

後臺檔案任意上傳漏洞

①如果有人知道你使用的dedecms系統,那麼可以利用後臺的一些固定路徑上傳檔案,然後再執行,阻止上傳檔案的方法是開啟/dede/media_add。php檔案,搜尋

$fullfilename = $cfg_basedir。$filename;(大概在69行左右)

替換成以下程式碼:

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;

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

這個只是一個提示,具體漏洞資訊不詳,安全起見建議修復。

②繼續開啟/include/uploadsafe。inc。php(有2個地方),

1、搜尋

${$_key。‘_size’} = @filesize($$_key);

}

程式碼位置大概在42,43行左右,注意前面搜尋的程式碼包含一個後大括號,將其替換成如下程式碼:

${$_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 !’); } }

這段程式碼有點不好修改,如果修改後出現文章頁面空白頁,請仔細檢視程式碼是否多了或者少了大括號},本檔案44行是空的,沒有程式碼,請注意。

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

2、繼續搜尋 $image_dd = @getimagesize($$_key);(大概在53行左右),將其替換成如下程式碼:

$image_dd = @getimagesize($$_key); if($image_dd == false){ continue; }

這樣後臺任意檔案上傳漏洞就修復完畢了,不過經過這樣的方法修復之後會存在一點小瑕疵,就是如果新安裝模組,上傳xml檔案也會被禁止,解決方法是把漏洞檔案還原回去,安裝好模組之後再替換回來。

03

SQL注入漏洞修復

dedecms系統存在SQL注入漏洞也不奇怪,按照方法修復即可。為了使修改方便還原回來,可以把修改前的檔案重新命名,加上back的字樣,如filter。inc。php。back,這樣如果要恢復則直接把帶有back的檔案程式碼覆蓋進來就行了。

一、根目錄/include/filter。inc。php檔案,搜尋(大概在46行),搜尋程式碼return $svar;將其替換為

return addslashes($svar);

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

二、開啟/member/mtypes。php檔案,搜尋(大概在71行),搜尋程式碼:

$query = “UPDATE `dede_mtypes` SET mtypename=‘$name’ WHERE mtypeid=‘$id’ AND mid=‘$cfg_ml->M_ID’”;

將其替換為:

$id = intval($id); $query = “UPDATE `dede_mtypes` SET mtypename=‘$name’ WHERE mtypeid=‘$id’ AND mid=‘$cfg_ml->M_ID’”;

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

三、開啟根目錄/member/pm。php檔案,搜尋(大概在65行),搜尋程式碼:

$row = $dsql->GetOne(“SELECT * FROM `dede_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 `dede_member_pms` WHERE id=‘$id’ AND (fromid=‘{$cfg_ml->M_ID}’ OR toid=‘{$cfg_ml->M_ID}’)”);

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

與會員有關係的一處漏洞得以解決!

四、繼續開啟根目錄/plus/guestbook/edit。inc。php檔案,搜尋(大概在55行),搜尋程式碼:

$dsql->ExecuteNoneQuery(“UPDATE `dede_guestbook` SET `msg`=‘$msg’, `posttime`=‘”。time()。“’ WHERE id=‘$id’ ”);

將其替換成如下程式碼:

$msg = addslashes($msg); $dsql->ExecuteNoneQuery(“UPDATE `dede_guestbook` SET `msg`=‘$msg’, `posttime`=‘”。time()。“’ WHERE id=‘$id’ ”);;

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

guestbook是留言板,如果沒有使用會員系統或你已經刪除了member資料夾,以上可以忽略。

五、搜尋頁面漏洞,開啟根目錄/plus/search。php檔案,搜尋(大概在109行),查詢程式碼$keyword = addslashes(cn_substr($keyword,30));將其替換為如下程式碼。

$typeid = intval($typeid); $keyword = addslashes(cn_substr($keyword,30));

六、開啟/member/soft_add。php,搜尋(大概在154行左右),搜尋

$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”; }

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

以上就是SQL注入相關的漏洞修復方案。

04

cookies洩漏導致SQL漏洞修復

這個漏洞的修復方法是①開啟/member/article_add。php檔案,搜尋(大概在83行),查詢程式碼:

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)))

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

②繼續開啟/member/inc/inc_archives_functions。php檔案,搜尋(大概在239行),搜尋程式碼:

echo “”;

使用如下程式碼替換:

echo “”;

05

SESSION變數覆蓋導致SQL注入漏洞

修復方法是開啟根目錄/include/common。inc。php檔案,搜尋(大概在68行),查詢程式碼:

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) )

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

06

支付模組alipay注入漏洞

開啟根目錄/include/payment/alipay。php檔案,搜尋(大概在137行)查詢程式碼:

$order_sn = trim($_GET[‘out_trade_no’]);

替換為:

$order_sn = trim(addslashes($_GET[‘out_trade_no’]));;

07

變數為初始化導致本地變數注入

開啟/include/dedesql。class。php檔案,搜尋(大概在590行),搜尋

if(isset($GLOBALS[‘arrs1’])),替換為:

$arrs1 = array(); $arrs2 = array(); if(isset($GLOBALS[‘arrs1’]))

如果之前定義過$arrs1或$arrs2的,請調整比對程式碼。

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

08

跨站攻擊RemoveXSS漏洞修復

開啟include/helper/filter。helper。php,搜尋

$val = preg_replace(‘/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/’, ‘’, $val);

在這段程式碼的前面一行新增:

$val = htmlspecialchars($val);

站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧

09

友情連結xss注入漏洞修復

開啟/plus/flink。php檔案,搜尋一下程式碼:

$msg = dede_htmlspecialchars($msg);

$email = dede_htmlspecialchars($email);

$webname = dede_htmlspecialchars($webname);

$url = dede_htmlspecialchars($url);

$logo = dede_htmlspecialchars($logo);

上面的程式碼替換為以下程式碼:

$msg = RemoveXSS(dede_htmlspecialchars($msg));

$email = RemoveXSS(dede_htmlspecialchars($email));

$webname = RemoveXSS(dede_htmlspecialchars($webname));

$url = RemoveXSS(dede_htmlspecialchars($url));

$logo = RemoveXSS(dede_htmlspecialchars($logo));

此為官方最新的友情連結漏洞修復方案,如果需要獲得最新的漏洞修復方法,可以關注織夢在GitHub上的資訊,當前網站的升級及漏洞修復都移到GitHub上去了。

想了解更多精彩內容,快來關注陸柏熺

推薦文章