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. Flask的session

    ### session:1. session的基本概念:session和cookie的作用有点类似,都是为了存储用户相关的信息.不同的是,cookie是存储在本地浏览器,session是一个思路.一个 ...

  2. IT兄弟连 HTML5教程 HTML5表单 H5表单提交综合实例

    这里我们创建一个填写个人基本信息的表单,使用了表单元素有<input>输入框.<datalist>选项列表.<textarea>文本框,通用的表单输入类型有text ...

  3. ETCD:在容器中运行etcd集群

    原文地址:Docker container 以下指南显示了如何使用静态引导过程在rkt和Docker上运行etcd. rkt 运行单节点的etcd 以下rkt run命令将在端口2379上公开etcd ...

  4. 通过idea将maven工程转为web项目

    前言 吐槽一下网上的各种转换教程..说的真的是吵来吵去,有用的东西极少.特此自己写一篇好使的. 转换过程 建好的maven工程 建好的maven工程长这个鬼样子~~,没有使用骨架.就是普通的建立方式. ...

  5. node http 模块 常用知识点记录

    关于 node,总是断断续续的学一点,也只能在本地自己模拟实战,相信总会有实战的一天~~ http 作为服务端,开启服务,处理路由,响应等 http 作为客户端,发送请求 http.https.htt ...

  6. git push 时用户的配置

    Pycharm临时配置git提交的账户:git 修改当前的project的用户名的命令为:git config user.name 你的目标用户名**;git 修改当前的project提交邮箱的命令为 ...

  7. scrapy常用配置

    一.基本配置 1.项目名称 2.爬虫应用路径 SPIDER_MODULES = ['Amazon.spiders'] NEWSPIDER_MODULE = 'Amazon.spiders' 3.客户端 ...

  8. docker: manifest for elasticsearch:latest not found

    今天在docker安装es出现坑,是这样. 使用: docker pull elasticsearch 提示:manifest for elasticsearch:latest not found如图 ...

  9. 选择企业架构实践公开课的指导?TOGAF+ArchiMate+BangEA,EA工作者必学一门公开课

    我发现身边越来越多人谈数字化.谈企业架构,但是感觉谈的总是IT?知道好像不对,但是又好像也无法告诉别人这和传统的IT架构有什么不一样?网上找资料,看了很多也摸不到门路,也不知道别人讲的对不对.对了还好 ...

  10. golang-方法和接口

    1.方法 方法类似函数 ,多了一个接收者 ,接收者是指针指向结构体(也可以是值) ,方法与结构体绑定 (可以理解为模板定义方法) ,方法位于结构体内部 方法集可以理解就是多个方法 可以组合其他结构体方 ...