您現在的位置是:首頁 > 運動
站長都很關心的dedecms漏洞修復彙總,快去修復你的網站吧
mediaserver怎麼恢復
這一次透過之前積累的資料,彙總了dedecms5。7最新版本的各種漏洞及修復方法,這裡分享給大家,為了便於使用和查閱,於是全部整理放在一起。在修復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;;
再次提醒,修改前備份檔案,這個漏洞主要是在前臺頁面上,因為只有被上傳了木馬檔案才會執行,所以儘快修復。
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;
這個只是一個提示,具體漏洞資訊不詳,安全起見建議修復。
②繼續開啟/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行是空的,沒有程式碼,請注意。
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);
二、開啟/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’”;
三、開啟根目錄/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}’)”);
與會員有關係的一處漏洞得以解決!
四、繼續開啟根目錄/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’ ”);;
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”; }
以上就是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)))
②繼續開啟/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) )
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的,請調整比對程式碼。
08
跨站攻擊RemoveXSS漏洞修復
開啟include/helper/filter。helper。php,搜尋
$val = preg_replace(‘/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/’, ‘’, $val);
在這段程式碼的前面一行新增:
$val = htmlspecialchars($val);
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上去了。
想了解更多精彩內容,快來關注陸柏熺
推薦文章
- 不能生蛋,難道就不能吃蛋嗎?
還有人認為人間沒有真理,所以喪心病狂的偽裝聖人,為獲得名利...
- 《GTA5》手遊版“完美”還原真實!全地圖細節展現,極限畫質?
GTA5的椰子樹留給我們無限遐想從最初的罪惡都市到現在的洛聖都,無數的故事發生在這片大地之上,這裡看似平靜與美麗,實際上已經成為了犯罪的溫床,各種兇殺暴力案件層出不窮,美麗的自然風光只是它的假象,千萬不能被表象迷惑,這裡是美國百萬富翁最多的...
- 繼成龍後,甄子丹也要出演《running man》了,期待韓國人的反應
甄子丹等人預計會在1月19日去韓國,按照《running man》的播出習慣推算,那甄子丹出演的這期節目很可能會在2月中旬才能播出...