DedeCMS文件管理器远程代码执行CVE-2026-51078
DedeCMS(织梦)是国内早年面向个人站长、中小企业的轻量化 PHP 建站工具,低门槛快速搭建各类内容站点,网上海量免费模板。
一、基本情况
DedeCMS是国内低成本建站首选 PHP 程序,最大亮点是模板体系简单,自带图文、产品、下载等多种内容模型,不用自行开发模块。

DedeCMS内置全自动采集、静态页面生成、栏目分层管理、会员留言等运营配套功能,对服务器配置要求低,普通虚拟主机流畅运行。
栋科技漏洞库关注到DedeCMS V5.7.118 及之前版本的 DedeCMS 中的文件管理器远程代码执行漏洞,漏洞追踪为CVE-2026-51078。
二、漏洞分析
CVE-2026-51078源于DedeCMS后台文件管理器允许登录管理员在线编辑站点文件,保存用户编辑内容时仅依赖不完整关键字黑名单。
这使得登录后台的远程攻击者能够通过 str 参数向站点目录植入并执行任意 PHP 代码,进而获取服务器敏感信息并实施远程命令执行。
简言之,DedeCMS相关版本后台脚本 dede/file_manage_control.php在文件入口先以 $cfg_disable_funs 关键字黑名单对 str 进行预检,
该名单仅覆盖如下等条目:
phpinfo、eval、assert、exec、passthru、shell_exec、system、proc_open、popen、curl_exec、curl_multi_exec、parse_ini_file、show_source、file_put_contents、fsockopen、fopen、fwrite
而未纳入 get_defined_functions 等反射式内置函数接口;
随后脚本在 $fmdo 等于 edit 分支内对 POST 参数 str 调用 stripslashes 反转义后,
直接以 fputs 写入 $cfg_basedir.$activepath/$filename 指向的文件,
攻击者可借助 get_defined_functions()[373]('whoami') 等形式绕过关键字黑名单,
将任意 PHP 片段落地为 .php 文件并在访问时触发,最终以 Web 进程权限读取数据库口令、系统账号及任意敏感文件。
三、POC概念验证
(一)漏洞详情
易受攻击的API:http://IP:Port/dede/file_manage_control.php
POST请求,注入点在str参数中。
在后端管理(模块->文件管理器)中,创建一个名为1.php的文件。

get_defined_functions()是一个内置的PHP函数,
它返回当前运行时环境中所有已定义函数的列表,包括内置的PHP功能(内部)和用户定义的功能(用户)。

访问1.php文件并搜索系统函数的存在。

系统功能位于索引373处。修改了1.php文件的内容以调用系统函数,并传递了命令whoami。

访问1.php文件成功执行了命令whoami并输出结果。

修改文件内容并执行ipconfig命令。


与本地执行的结果相同

(二)原因分析
对HTTP数据包的分析表明,文件内容存储在str参数中。

相关源代码位于文件/include/common.inc.php中,该文件接收并预处理用户传递的参数。

addslashes函数用于GPC处理,在特殊字符(如'和\)之前添加字符\以进行转义。转义后的文件内容如下所示。
比较addslashes函数处理前后的文件内容,可以发现'字符已转义。
一般来说,在这一点上,人们认为绕过是相当困难的。然而,后来的一些逻辑处理问题导致了漏洞的触发!


以下是文件内容检查(基于黑名单和正则表达式匹配)。它揭示了许多危险函数、全局变量和特殊变量已被过滤掉。
然而,基于黑名单的过滤可能存在遗漏;
这个黑名单遗漏了get_fined_functions函数,允许调用内置函数,包括system和exec等危险函数!
通过get_defined_functions调用内置函数可以绕过后续的正则表达式检查!

根据传递的参数,$fmdo进入文件编辑和保存逻辑。

首先,CSRF攻击将被检测到,来自未经身份验证的用户或具有无效令牌的用户的请求将被过滤掉。
因此,您必须登录才能继续下一个处理逻辑(保存文件)!

接下来,我们继续讨论文件内容处理。str_replace函数将替换。.,然后stripslashes函数处理文件内容。
stripslashes()可以理解为addslashes()的逆操作。stripslashes函数删除转义符\。
经过条形斜线处理后,文件内容将完全符合最初的请求!

接下来,执行文件保存逻辑,将文件内容保存在PHP文件中,最终导致远程命令执行!


四、影响范围
DedeCMS ≤ V5.7.118
五、修复建议
DedeCMS > V5.7.118
六、参考链接
管理员已设置登录后刷新可查看