DedeCMS 未授权RCE漏洞原理及影响面分析

admin 2024年12月17日13:44:27评论6 views字数 1020阅读3分24秒阅读模式

2021年9月30日,老外曝光了关于国产知名框架DedeCMS的远程未授权RCE漏洞,江湖救急快速完成了跟踪分析。

过节的被老板叫回来分析漏洞(没有加班费😂),作为一名IT民工真不容易!吐槽归吐槽,活还是要干的,自己还是挺好奇这到底是个啥洞。

环境搭建

搭建v5.8.1内测版本环境。

DedeCMS 未授权RCE漏洞原理及影响面分析

DedeCMS 未授权RCE漏洞原理及影响面分析

漏洞分析

问题出现在flink.php文件,在`GetChkVdValue`中检查session,当不合法时执行`ShowMsg`函数显示错误信息。

DedeCMS 未授权RCE漏洞原理及影响面分析

进入`ShowMsg`函数,当`gourl`不等于`-1`时,从`Referer`头或者上一页面中读取URl值。

DedeCMS 未授权RCE漏洞原理及影响面分析

随后调用`DedeTemplate`中进行模板渲染。

DedeCMS 未授权RCE漏洞原理及影响面分析

进入`dedetemplate.class.php`中执行`loadString`函数,该函数首先设置缓存文件和缓存配置文件,缓存文件位于`datatplcache`目录,随后调用`ParserTemplate`对文件进行初步检查。

DedeCMS 未授权RCE漏洞原理及影响面分析

返回`common.fun.php`执行调用`Display`函数,这里注意到`WriteCache`函数的调用。

DedeCMS 未授权RCE漏洞原理及影响面分析

在`WriteCache`函数中写入缓存文件。

DedeCMS 未授权RCE漏洞原理及影响面分析

发送一个POST报文,本地生成cache文件如下图,经过测试`Reference`内容被写入文件。

DedeCMS 未授权RCE漏洞原理及影响面分析

很简单的思路是使用`php`标签包裹php语句,但尝试执行Phpinfo提示disabled function。

DedeCMS 未授权RCE漏洞原理及影响面分析

这里注意到了`CheckDisableFunction`过滤了危险函数。函数首先通过`token_get_all_nl`函数获取输入时,处理时并没有过滤双引号,导致在`disable_functions`列表匹配时失败。

DedeCMS 未授权RCE漏洞原理及影响面分析

RCE触发

这里用到了php执行的一个新的技巧,可以直接实现命令执行。

DedeCMS 未授权RCE漏洞原理及影响面分析

具体POC就不放出来了。

其他版本分析

在最新的5.7.80版本中,禁用模板渲染的代码,而且5.7.7-SP2版本中也同样没有使用在`Msg`函数中调用模板处理。

DedeCMS 未授权RCE漏洞原理及影响面分析

总的来说,这个漏洞为未授权远程命令执行漏洞,原理比较简单。但由于只影响5.8.1版本,而且很快进行了修补,所以更多的可以看作中间代码调整而产生的漏洞,影响力有限。

由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。

点关注,不迷路!

DedeCMS 未授权RCE漏洞原理及影响面分析

原文始发于微信公众号(且听安全):2021国庆·江湖救急-DedeCMS 未授权RCE漏洞原理及影响面分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月17日13:44:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DedeCMS 未授权RCE漏洞原理及影响面分析http://cn-sec.com/archives/648287.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息