某cms v5.7 sp2 后台 getshell
字数 926 2025-08-29 08:31:53
DedeCMS V5.7 SP2 后台GetShell漏洞分析与利用
漏洞概述
DedeCMS V5.7 SP2版本存在一个后台GetShell漏洞,该漏洞源于系统在处理ZIP压缩包解压时对文件名校验不严格,导致攻击者可以通过构造特殊文件名的ZIP压缩包上传并解压PHP文件,从而获取服务器控制权限。
受影响版本
- DedeCMS V5.7 UTF8 SP2
- 下载链接: http://updatenew.dedecms.com/base-v57/package/DedeCMS-V5.7-UTF8-SP2.tar.gz
漏洞利用步骤
1. 构造恶意文件
- 创建一个名为
1.jpg.php的文件 - 文件内容为:
<?php phpinfo();?> - 将该文件压缩为ZIP格式
2. 上传压缩包
- 登录DedeCMS后台
- 进入"常用操作" → "文件式管理器"
- 上传构造好的ZIP压缩包到
soft目录下
3. 解压并利用
- 访问
dede/album_add.php - 选择"从ZIP压缩包中解压图片"功能
- 发布并预览文档
- 访问解压后的PHP文件执行代码
漏洞分析
关键代码位置
漏洞位于album_add.php文件中:
else if(preg_match("/\.(".$fileexp.")/i",$filename)) {
$filearr[] = $truefile;
}
漏洞成因
- 系统使用
GetMatchFiles函数处理ZIP压缩包中的文件 - 传入的
$fileexp参数为jpg|png|gif - 正则匹配仅检查文件名中是否包含图片扩展名(
jpg,png,gif),而不验证文件实际扩展名 - 因此
1.jpg.php这样的文件名可以通过验证,因为包含.jpg - 解压后保留
.php扩展名,导致PHP代码可执行
修复建议
- 严格验证文件扩展名,确保文件实际扩展名与允许的扩展名一致
- 使用
pathinfo()函数获取文件真实扩展名进行验证 - 禁止解压包含PHP等可执行文件类型的压缩包
- 更新到最新版本DedeCMS
补充说明
- 该漏洞需要后台权限才能利用
- 实际利用时可构造更复杂的WebShell代码
- 漏洞利用成功后可通过PHP函数获取服务器完全控制权限
参考
- 原始漏洞报告者: xiaohuihui1
- 报告时间: 2019-02-26
- 漏洞类型: 文件上传绕过导致代码执行