Products
96SEO 2025-09-08 11:26 1
DedeCMS作为一款广泛使用的内容管理系统, 其后台管理功能中包含了多个用于文件上传的接口,特别是在富文本编辑器中集成了文件上传控件。media_add.php
是后台负责处理媒体文件上传请求的重要脚本。
只是 早期版本的DedeCMS在media_add.php文件中对上传文件后缀名的校验不够严格,导致黑客可以绕过限制上传包含恶意代码的脚本文件,从而实现任意代码施行,获得网站后台权限,这是一种典型的任意文件上传漏洞。
.php, .asp, .jsp
等。示例漏洞代码片段:
if +$#i', trim)) {
ShowMsg;
exit;
}
$fullfilename = $cfg_basedir . $filename;
上述代码虽然尝试匹配凶险后缀, 但正则表达式存在缺陷,且未覆盖所有变种,加之其他环节验证不足,使得漏洞存在利用空间。
DedeCMS支持部分钩子机制, 允许开发者在核心代码之外插入自定义逻辑,以实现功能拓展或平安增强。针对media_add.php中的任意上传漏洞, 利用钩子方式修改能避免直接改动核心源码,从而提升维护便利性与升级兼容性。
钩子是指软件预留的一些接口或事件点, 开发者可以在这些位置挂载自定义函数,实现对程序流程的拦截、修改或 。
重要提示:
/dede/media_add.php
- 打开/dede/media_add.php
- 搜索含有“$fullfilename = $cfg_basedir.$filename;
"语句附近,该处为到头来拼接物理路径位置,也是校验拦截点之一
- 新增更严谨正则表达式,覆盖多种凶险后缀,包括常见变体和少见后缀;
// 严格限制PHP及多种脚本语言
名
$forbidden_exts = '/\.?|jsp|shtml?|sh?|exe)$/i';
if )) {
ShowMsg;
exit;
}
- 建议一边加入白名单机制,只允许特定图片/视频/文档格式如jpg/png/gif/mp4/pdf等进行上传;
- 假设DedeCMS版本支持“OnFileUpload”钩子,可创建如下插件示例:
// 示例hook函数
function custom_file_upload_check {
$forbidden_exts = '/\.?|jsp|shtml?|sh?|exe)$/i';
if )) {
return false;
}
return true;
}
// 注册hook
DedeHook::register;
$fullfilename = $cfg_basedir . $filename;
// 施行钩子检查
if ) {
if ) {
ShowMsg;
exit;
}
}
// 后续保存操作...
// 保存成功后输出提示
ShowMsg;
exit;
*以下为示范性的核心修改区域,仅供参考*
DedeCMS作为流行的网站管理平台,其早期版本因设计不完善导致了严重任意上传风险。本文基于"通过钩子技术",详细阐述了如何实现对/dede/media_add.php 文件中的关键点进行加固防护,从而杜绝WebShell植入威胁的方法。
Demand feedback