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

一、漏洞描述

织梦内容管理系统(Dedecms)是一款PHP开源网站管理系统。Dedecms V5.7 SP2版本中的tpl.php中存在代码执行漏洞,可以通过该漏洞在增加新标签中上传木马,获取webshell。该漏洞利用需要登录后台,并且后台的账户权限是管理员权限。

二、漏洞环境搭建

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

2、使用phpstudy搭建web环境

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

  

4、点击我已阅读并继续。然后是环境检测,保存默认即可

  

5、接下来是参数配置,需要设置的只有数据库密码,把自己的密码填上去就行了

  

6、然后就把环境搭好了

  

三、漏洞复现

1、由于此漏洞是属于后台漏洞,需要先登录到后台,后台默认的账户和密码都是admin。Dedecms默认后台路径是/uploads/dede。

  

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

  

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

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

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

  d.把$content里面的内容写入到相对用的路径里,由于这一部分代码除了对写入的文件名字做了简单的过滤和一个csrf防护之外,其他并没有什么安全措施,导致我们可以任意写入代码。

3、通过上面的代码,有csrf检测防御,需要获得token来进行绕过。再次浏览tpl.php代码,发现action的参数有很多,比如del,edit,upload等等,但只有传入upload的时候页面才会获取token,而其他的都没有获取token,所以只能通过action=upload来获取token。

  

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

  

5、然后查看页面源码,发现token

  

6、通过浏览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();?>

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

  

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

  

9.gethsell写入一句话木马

  

10.菜刀链接,成功getshell

  

四、漏洞防御

1.禁止此处写入文件。

2.过滤恶意标签

DedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221)的更多相关文章

  1. Windows CVE-2019-0708 远程桌面代码执行漏洞复现

    Windows CVE-2019-0708 远程桌面代码执行漏洞复现 一.漏洞说明 2019年5月15日微软发布安全补丁修复了CVE编号为CVE-2019-0708的Windows远程桌面服务(RDP ...

  2. IIS6远程代码执行漏洞复现CVE-2017-7269

    简述 CVE-2017-7269是IIS 6.0中存在的一个栈溢出漏洞,在IIS6.0处理PROPFIND指令的时候,由于对url的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行 ...

  3. Tomcat/7.0.81 远程代码执行漏洞复现

    Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...

  4. IIS_CVE-2017-7269 IIS6.0远程代码执行漏洞复现

    CVE-2017-7269 IIS6.0远程代码执行漏洞复现 一.漏洞描述 IIS 6.0默认不开启WebDAV,一旦开启了WebDAV,安装了IIS6.0的服务器将可能受到该漏洞的威胁. 二.影响版 ...

  5. Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御

    摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...

  6. Apache log4j2 远程代码执行漏洞复现👻

    Apache log4j2 远程代码执行漏洞复现 最近爆出的一个Apache log4j2的远程代码执行漏洞听说危害程度极大哈,我想着也来找一下环境看看试一下.找了一会环境还真找到一个. 漏洞原理: ...

  7. 【代码审计】YUNUCMS_v1.0.6 后台代码执行漏洞分析

      0x00 环境准备 QYKCMS官网:http://www.yunucms.com 网站源码版本:YUNUCMSv1.0.6 程序源码下载:http://www.yunucms.com/Downl ...

  8. vBulletin 5.x 版本通杀远程代码执行漏洞复现

    漏洞介绍 vBulletin中存在一个文件包含问题,可使恶意访问者包含来自 vBulletin 服务器的文件并且执行任意 PHP 代码.未经验证的恶意访问者可通过向index.php发出包含 rout ...

  9. Zabbix 代码执行漏洞复现 /zabbix-cve_2017_2824

    环境: 利用docker将vulfocus环境pull到本地搭建 漏洞描述: Zabbix 是由Alexei Vladishev 开发的一种网络监视.管理系统,基于 Server-Client 架构. ...

随机推荐

  1. pycharm连接远程python的开发环境

    一.准备工作 1.远程主机配置python的开发环境(pyenv) 2.本地windowsp安装pycharm 二.配置pycharm连接 配置运行环境:

  2. Drawable.SetDither(Boolean) Method

    https://docs.microsoft.com/zh-cn/dotnet/api/android.graphics.drawables.drawable.setdither?view=xamar ...

  3. THUWC2019酱油记

    Day -1 坐了一上午动车来到帝都,晚上去了趟THU还有奥林匹克公园. 反正也是来打酱油的,颓废怎么能少呢.

  4. Linux下shell脚本实现mongodb定时自动备份

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...

  5. Python实战——基于股票的金融数据量化分析

    说明:本文只是通过自己的已学知识对股票数据进行了一个简单的量化分析,只考虑了收盘情况,真实的量化交易中仅仅考虑收盘情况是不够的,还有很多的复杂因素,而且仅仅三年数据是不足以来指导真实的股票交易的,因此 ...

  6. 创建线程之三:实现Callable接口

    通过Callable和Future创建线程 i. 创建Callable接口的实现类,并实现call方法,该call方法将作为线程执行体,并且有返回值,可以抛出异常. ii. 创建Callable实现类 ...

  7. 自学_DOM<五>

    类库DOM DOM(document object medol)文档对象模型. DOM就是HTML页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性.方法就可以对网页中的 ...

  8. 松软科技web课堂:SQLServer之ROUND() 函数

    ROUND() 函数 ROUND 函数用于把数值字段舍入为指定的小数位数. SQL ROUND() 语法 SELECT ROUND(column_name,decimals) FROM table_n ...

  9. HBuilderx 模拟器调试设置

    模拟器名称    连接默认端口夜神安卓模拟器夜神安卓模拟器     62001逍遥安卓模拟器逍遥安卓模拟器     21503BlueStacks(蓝叠安卓模拟器)BlueStacks(蓝叠安卓模拟器 ...

  10. 如何在Macbook上安装MySQL ?

    MySQL是常用的一款开源数据库,对各个平台都提供了支持,而Macbook又作为程序员的一款主力开发工具经常被使用.因此怎么在Macbook上安装MySQL进行程序开发也成了一项基本技能.下面来跟随本 ...