织梦官网:https://www.dedecms.com/download
受影响的版本 <=dedecms v5.7.105
织梦部署量截图
来看下漏洞源码
uploads/dede/templets_one_edit.php
为了方便,我这里就直接在每行代码的后面写注释
首先会判断用户提交的数据dopost的值是否等于saveedit,如果是就进入if语句
25行然后开始替换字符串
这里开始正则匹配替换用户提交的文件名,如下图所示
然后来到128行,判断dopost的值是否等于view,如果是则进入if语句
然后开始判断aid的是否为空,如果为空则进入if语句
这个是php构造函数
定位这个用户自定义函数
得知是输出动态结果,也就是预览文件,这里有个问题,就是在27行替换了用户提交的文件名并没有过滤用户提交的文件名是否合法,导致攻击者可以利用该漏洞非法建立与服务器之间的访问权限,漏洞利用链如下
第一步先来到模板这里创建一个新模板
内容如图,文件名为78.htm,在内容处写免杀(这里一定要写,不然没法利用)
然后来到核心->单页文档管理,创建一个新的文档
然后在模板处写入刚刚创建的恶意htm模板(这里会把htm文件里的内容写入到新建的php文件里),文件名后缀改为php
创建成功
如果不修改目录的话,就在a目录里,然后在访问刚刚创建的恶意文件,成功返回了探针
免责声明
由于传播、利用本公众号NGC660安全实验室所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号NGC600安全实验室及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
原文始发于微信公众号(NGC660安全实验室):0day|织梦RCE