DedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221)

dedeCMS  V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221)php

1、漏洞描述html

织梦内容管理系统(Dedecms)是一款PHP开源网站管理系统。Dedecms V5.7 SP2版本中的tpl.php中存在代码执行漏洞,能够经过该漏洞在增长新标签中上传木马,获取webshell。该漏洞利用须要登陆后台,而且后台的帐户权限是管理员权限。web

2、漏洞环境搭建正则表达式

一、官方下载DeDeCMS V5.7 SP2(UTF-8),下载地址: http://www.dedecms.com/products/dedecms/downloads/shell

二、使用phpstudy搭建web环境数据库

三、把下载好的源码放到网站根目录下(www),而后开启phpstudy, 浏览器访问http://192.168.10.171/dedecms/uploads/install/index.php浏览器

  

四、点击我已阅读并继续。而后是环境检测,保存默认便可安全

  

五、接下来是参数配置,须要设置的只有数据库密码,把本身的密码填上去就好了函数

  

六、而后就把环境搭好了网站

  

3、漏洞复现

一、因为此漏洞是属于后台漏洞,须要先登陆到后台,后台默认的帐户和密码都是admin。Dedecms默认后台路径是/uploads/dede。

  

二、分析tpl.php里面的代码

  

  a.此处定义了一个savetagfile的函数,首先作一个判断,参数”action”是否等于savetagfile,如更等于就进行下一步

  b.这里有一个csrf检验函数,须要加上token来绕过限制

  c.正则表达式匹配,这里的意思是判断filename参数是否匹配正则表达式的条件,不匹配就不容许修改操做的进行。

  d.把$content里面的内容写入到相对用的路径里,因为这一部分代码除了对写入的文件名字作了简单的过滤和一个csrf防御以外,其余并无什么安全措施,致使咱们能够任意写入代码。

三、经过上面的代码,有csrf检测防护,须要得到token来进行绕过。再次浏览tpl.php代码,发现action的参数有不少,好比del,edit,upload等等,但只有传入upload的时候页面才会获取token,而其余的都没有获取token,因此只能经过action=upload来获取token。

  

四、咱们再去tpl.php里看一下,发现action的参数有不少,只有经过action=upload来获取token,浏览器访问http://192.168.10.171/dedecms/uploads/dede/tpl.php?action=upload 

  

五、而后查看页面源码,发现token

  

六、经过浏览tpl.php代码,发现要上传的参数有:action,token,filename,content,构造payload

a.因为dedecms全局变量注册的特性,因此这里的content变量和filename变量可控。

b.能够把content内容直接写到以.lib.php结尾的文件中。

Payload: http://192.168.10.171/dedecms/uploads/dede/tpl.php?action=savetagfile&token=d751030d70c713c3687a33b77b92e046&filename=abc.lib.php&content=<?php phpinfo();?>

七、浏览器访问构造的payload,下图发现成功写入

  

八、根据代码能够看到写入到taglib目录,浏览器访问 http://192.168.10.171/dedecms/uploads/include/taglib/abc.lib.php

  

9.gethsell写入一句话木马

  

10.菜刀连接,成功getshell

  

4、漏洞防护

1.禁止此处写入文件。

2.过滤恶意标签

原文出处:https://www.cnblogs.com/yuzly/p/11326571.html