dedeCMS后台RCE
2023-6-14 14:11:0 Author: xz.aliyun.com(查看原文) 阅读量:29 收藏

1.环境搭建

下载最新版的dedeCMS,链接https://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7.109-UTF8.zip
直接使用php_study搭建即可:

2.黑白盒结合漏洞挖掘

登录后台:

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

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

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

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

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

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

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

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

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

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

后面还有各种奇奇怪怪的正则,第一个正则#[$][_0-9a-z]+[\s]*[(][\s\S]*[)][\s]*[;]#iU是可以匹配以 $ 或字母开头,后面跟着任意数量的数字、字母或下划线的函数名,后面紧跟着一个左括号和任意数量的参数,最后以分号结束的函数调用语句。把system函数的参数给它加上看看能不能绕过:

直接就过了:

下面的正则#[@][$][_0-9a-z]+[\s]*[(][\s\S]*[)]#iU是匹配以@开头的php函数调用语句,我们的payload不包含@所以可以直接绕过:

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

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

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

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

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

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


文章来源: https://xz.aliyun.com/t/12609
如有侵权请联系:admin#unsafe.sh