首页 网络安全 正文

DedeCMS文件管理器远程代码执行CVE-2026-51078

摘要

栋科技漏洞库关注到DedeCMS V5.7.118 及之前版本的 DedeCMS 中的文件管理器远程代码执行漏洞,漏洞追踪为CVE-2026-51078。

DedeCMS(织梦)是国内早年面向个人站长、中小企业的轻量化 PHP 建站工具,低门槛快速搭建各类内容站点,网上海量免费模板。

一、基本情况

DedeCMS是国内低成本建站首选 PHP 程序,最大亮点是模板体系简单,自带图文、产品、下载等多种内容模型,不用自行开发模块。

DedeCMS文件管理器远程代码执行CVE-2026-51078

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的文件。

DedeCMS文件管理器远程代码执行CVE-2026-51078

get_defined_functions()是一个内置的PHP函数,

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

DedeCMS文件管理器远程代码执行CVE-2026-51078

与本地执行的结果相同

DedeCMS文件管理器远程代码执行CVE-2026-51078

(二)原因分析

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

addslashes函数用于GPC处理,在特殊字符(如'和\)之前添加字符\以进行转义。转义后的文件内容如下所示。

比较addslashes函数处理前后的文件内容,可以发现'字符已转义。

一般来说,在这一点上,人们认为绕过是相当困难的。然而,后来的一些逻辑处理问题导致了漏洞的触发!

DedeCMS文件管理器远程代码执行CVE-2026-51078

DedeCMS文件管理器远程代码执行CVE-2026-51078

以下是文件内容检查(基于黑名单和正则表达式匹配)。它揭示了许多危险函数、全局变量和特殊变量已被过滤掉。

然而,基于黑名单的过滤可能存在遗漏;

这个黑名单遗漏了get_fined_functions函数,允许调用内置函数,包括systemexec等危险函数!

通过get_defined_functions调用内置函数可以绕过后续的正则表达式检查!

DedeCMS文件管理器远程代码执行CVE-2026-51078

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

首先,CSRF攻击将被检测到,来自未经身份验证的用户或具有无效令牌的用户的请求将被过滤掉。

因此,您必须登录才能继续下一个处理逻辑(保存文件)!

DedeCMS文件管理器远程代码执行CVE-2026-51078

接下来,我们继续讨论文件内容处理。str_replace函数将替换。.,然后stripslashes函数处理文件内容。

stripslashes()可以理解为addslashes()的逆操作。stripslashes函数删除转义符\

经过条形斜线处理后,文件内容将完全符合最初的请求!

DedeCMS文件管理器远程代码执行CVE-2026-51078

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

DedeCMS文件管理器远程代码执行CVE-2026-51078

DedeCMS文件管理器远程代码执行CVE-2026-51078

四、影响范围

DedeCMS ≤ V5.7.118

五、修复建议

DedeCMS > V5.7.118

六、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接