织梦dedecms后台文件任意上传破绽修复方法
- 行业动态
- 2024-06-10
- 5
织梦dedecms后台文件任意上传破绽修复方法
破绽简介
织梦dedecms是一款开源的内容管理系统,广泛应用于企业网站、政府网站等各类网站,由于其代码存在安全破绽,攻击者可以利用这些破绽对网站进行攻击,如:获取网站敏感信息、改动网站内容等,后台文件任意上传破绽是织梦dedecms中较为常见的一种破绽。
破绽原理
后台文件任意上传破绽的原理是:攻击者通过构造反面请求,绕过织梦dedecms的验证机制,将反面文件上传到服务器上,当其他用户访问这个反面文件时,就会触发破绽,导致攻击者可以对网站进行进一步的攻击。
破绽修复方法
为了修复织梦dedecms后台文件任意上传破绽,我们需要从以下几个方面进行操作:
1、修改文件上传路径
2、限制文件类型
3、添加文件名验证规则
4、设置文件大小限制
5、删除无用的文件上传功能
下面详细介绍每个步骤的操作方法:
(1)修改文件上传路径
我们需要修改织梦dedecms的文件上传路径,将其设置为不可访问的目录,具体操作如下:
1、登录织梦dedecms后台,找到系统设置>系统基本参数>附件保存路径,将其修改为不可访问的目录,如:/data/files/。
2、修改include目录下的upload.class.php文件,找到以下代码:
$save_path = $cfg_basedir . $cfg_upload_dir;
将其修改为:
$save_path = $cfg_basedir . '/data/files/';
3、修改include目录下的file_manage.class.php文件,找到以下代码:
$save_path = $cfg_basedir . $cfg_upload_dir;
将其修改为:
$save_path = $cfg_basedir . '/data/files/';
(2)限制文件类型
为了防止攻击者上传反面文件,我们需要限制允许上传的文件类型,具体操作如下:
1、登录织梦dedecms后台,找到系统设置>系统基本参数>附件类型,将其设置为只允许上传图片类型,jpg,jpeg,png,gif,bmp。
2、修改include目录下的upload.class.php文件,找到以下代码:
$allowtype = array('image/pjpeg','image/jpeg','image/png','image/xpng','application/xshockwaveflash','application/msword','application/vnd.msexcel','application/vnd.mspowerpoint','text/plain','text/html','application/xzipcompressed','application/octetstream');
将其修改为:
$allowtype = array('image/pjpeg','image/jpeg','image/png','image/xpng');
(3)添加文件名验证规则
为了防止攻击者通过修改文件名来绕过安全检查,我们需要添加文件名验证规则,具体操作如下:
1、登录织梦dedecms后台,找到系统设置>系统基本参数>附件命名规则,将其设置为不允许使用特殊字符和空格,a01.jpg。
2、修改include目录下的upload.class.php文件,找到以下代码:
$filename = $this>getFileName($file); //获取文件名并处理成唯一值作为新文件名,如果新文件名已存在则在原文件名基础上加数字后缀;否则返回源文件名。$this>setFilePath($file,$save_path); //设置新文件路径并生成新文件名。$this>dat['filename']=$filename; //将新文件名赋值给dat数组,return true; //返回成功信息。}else{return false; //返回失败信息。}*/}public function upload(){...}//函数结束}}}*/?>*/?>*/?>*/?><?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*<?php/*?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?>*/?><?php /*<![endif]>*/ ?></td> <td valign="top" class="valigntop"> </td></tr></table> < <div id="footer"> </div> </body> </html> </textarea> </form> </div> </div><!maincontent end> <div class="clear"></div><!clear> <div id="sidebar"><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar><!sidebar></div> <div id="footer">© 2018 <a href="#">Company Name</a> | All Rights Reserved | Design by <a href="#">Your Company Name</a></div> </body> </html> </head> <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /></body>