复现版本
dedeCMS sp2 20180109 官方版本v5.7.74
漏洞描述
Dedecms V5.7.74版本前台文件上传漏洞,管理员用户前台可以绕过限制上传shell
漏洞分析
dedecms\include\dialog\select_images_post.php中的36行过滤了一些特殊字符,代码的作用是将变量 $imgfile_name 中的特定字符(包括空格、换行符、制表符和一些特殊字符)替换为空字符串,并且移除最终结果字符串两侧可能存在的空格或其他指定字符。38行正则匹配文件后缀,cfg_imgtype所在的位置dedecms\install\config.cache.inc.php,如果 $imgfile_name 变量中不包含 $cfg_imgtype 定义的图片类型(扩展名),则执行接下来的代码。44行规定文件上传类型。可以使用*、%、?、<>可以绕过限制
漏洞利用
必须是管理员的账号,因为后面上传文件有权限限制,点击发表文章的图像上传按钮
然后将制作的图片马上传文件到服务器上
抓包修改文件名
返回上传的路径
用蚁剑成功连接
修复建议
- 对于36行的代码,建议使用更严格的过滤规则来替换特殊字符。可以考虑使用白名单的方式,只允许特定的字符出现在 $imgfile_name 中。
- 在38行的正则匹配文件后缀时,建议检查文件名是否真的以定义的图片类型结尾,而不仅仅是包含这些扩展名中的一个。这可以通过使用 \b 来限制匹配单词边界。
- 对于44行规定文件上传类型,应该避免使用通配符或者特殊字符,而是明确指定允许的文件类型列表,并且在服务器端再次验证文件类型和内容。
- 另外,推荐定期更新并审查安装目录下的配置文件,确保其中的敏感信息和设置符合最佳实践,并及时修复已知的安全漏洞。