zoukankan      html  css  js  c++  java
  • DedeCMS V5.7 SP2后台代码执行漏洞复现(CNVD-2018-01221)

    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.过滤恶意标签

  • 相关阅读:
    py程序----两个判断回文的程序
    Python特性
    python-基本数据类型
    shell编程第一天
    iptables防火墙
    纤维参数测量
    线性代数及其应用(最小二乘、PCA、SVD)
    水流方向检测
    微信跳一跳-MATLAB实现
    相机标定opencv实现
  • 原文地址:https://www.cnblogs.com/yuzly/p/11326571.html
Copyright © 2011-2022 走看看