这篇文章将为大家详细讲解有关怎么进行Discuz! X任意文件删除的漏洞分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
站在用户的角度思考问题,与客户深入沟通,找到古丈网站设计与古丈网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、做网站、外贸营销网站建设、企业官网、英文网站、手机端网站、网站推广、主机域名、网站空间、企业邮箱。业务覆盖古丈地区。
0x00 背景介绍
Discuz 官方于2017年9月29号在Git上提交更新:优化 加强安全性。360CERT跟进了此更新并确认存在任意文件删除漏洞。
0x01 漏洞描述
此漏洞曾在2014年被提交到乌云Wooyun平台,Discuz进行了针对性修复。但360CERT通过此次commit分析,由于之前的修复不完全,可导致补丁被bypass,攻击者登录后可以通过设置个人资料为删除文件路径,并构造一次文件上传,就可以绕过补丁造成任意文件删除。
0x02 漏洞攻击影响
影响面
普通注册用户即可实现任意文件删除。经过360CERT研判后确认,漏洞风险等级高。
影响版本
Discuz! X3.4
Discuz! X3.3
Discuz! X3.2
Discuz! X2.5
修复版本
码云平台Discuz!X
commit 7d603a197c2717ef1d7e9ba654cf72aa42d3e574
0x03 漏洞详情
1、技术细节
可以看到在14年修复的打的补丁:
$_G['cache']['profilesetting'][$key]['formtype']== 'file'对formtype类型做了验证。
查看昨日commit,一共删除了五处unlink文件删除函数,其中对228行unlink函数做的限制最少。
在spacecp_profile.php里有文件上传处理函数,其中使用$upload->get_image_info($attach['target'])
对上传文件进行检查,如果不是图片则continue跳过,所以需要上传为图片类型。
删除文件名为$space[$key],也没有进行安全处理
只需要在前一次提交数据对参数进行进行保存,比如真实姓名处填写删除文件名../../../robots.txt,数据库中的realname就会被保存为../../../robots.txt,再次请求上传文件,就会触发并删除文件.
0x04 修复建议
按照官方Git更新,彻底删除spacecp_profile.php下unlink处代码
关于怎么进行Discuz! X任意文件删除的漏洞分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。