dedeCMS后台RCE

admin 2023年6月21日11:10:44评论81 views字数 1076阅读3分35秒阅读模式

1.环境搭建

下载最新版的dedeCMS,链接https://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7.109-UTF8.zip

直接使用php_study搭建即可:

dedeCMS后台RCE
dedeCMS后台RCE

2.黑白盒结合漏洞挖掘

登录后台:

dedeCMS后台RCE

一眼看到最左边那个模板编辑功能:

dedeCMS后台RCE

找到个标签管理的功能,可以直接编辑php文件,这不直接rce了:

dedeCMS后台RCE

尝试编辑一下,果然,他是防了一手的,直接不做修改保存它的源文件都保存不了:

dedeCMS后台RCE

抓包查看它修改代码的功能是在哪里实现的:

dedeCMS后台RCE

跟一下这个/dede/tpl.php,打断点调试:

dedeCMS后台RCE

可以看到,filename和content的值就是数据包中传的值:

dedeCMS后台RCE

首先正则匹配匹配了文件名中的.,所以路径穿越应该是穿越不了了:

dedeCMS后台RCE

将文件内容中的注释替换成空:

dedeCMS后台RCE

然后匹配了一堆不允许的函数名或者关键字:

dedeCMS后台RCE

这个如果经常玩ctf就知道很好绕过,使用(s.y.s.t.e.m)这样的格式来调用函数即可,将content更换成(s.y.s.t.e.m)来看是否能绕过该正则:

dedeCMS后台RCE

后面还有各种奇奇怪怪的正则,第一个正则#[$][_0-9a-z]+

展开收缩
*[(][sS]*[)]
展开收缩
*[;]#iU
是可以匹配以 $ 或字母开头,后面跟着任意数量的数字、字母或下划线的函数名,后面紧跟着一个左括号和任意数量的参数,最后以分号结束的函数调用语句。把system函数的参数给它加上看看能不能绕过:

dedeCMS后台RCE

直接就过了:

dedeCMS后台RCE

下面的正则#[@][$][_0-9a-z]+

展开收缩
*[(][sS]*[)]#iU是匹配以@开头的php函数调用语句,我们的payload不包含@所以可以直接绕过:

dedeCMS后台RCE

最后一个正则# ([][sS]*[``]#i``)  匹配用反引号包裹的字符串:

dedeCMS后台RCE

很明显我们可以直接绕过进入到文件保存的环节,到这里我们就绕过了所有对文件内容的正则匹配:

dedeCMS后台RCE

最后一个对文件名的正则判断修改的文件名是否以.lib.php结尾,这个无关紧要,能编辑以php结尾的文件就行:

dedeCMS后台RCE

到这里我们的恶意文件就直接写入啦:

dedeCMS后台RCE

include目录是不需要鉴权即可访问的,所以前台可以直接访问该文件,/include/taglib/flinktype.lib.php,报了一堆warning,但是代码成功执行了:

dedeCMS后台RCE

第一次觉得ctf学的东西在代码审计的时候还是有那么一丢丢的用的。不过该漏洞是在后台,dedecms的后台不太好找,所以有点鸡肋,但也算rce了。

原文地址:https://xz.aliyun.com/t/12609

 若有侵权请联系删除


技术交流加下方vx


dedeCMS后台RCE


原文始发于微信公众号(红蓝公鸡队):dedeCMS后台RCE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月21日11:10:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   dedeCMS后台RCEhttps://cn-sec.com/archives/1820622.html

发表评论

匿名网友 填写信息