前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Discuz!X 3.4 任意文件删除漏洞分析

Discuz!X 3.4 任意文件删除漏洞分析

作者头像
LoRexxar
发布2023-02-21 19:04:00
2.5K0
发布2023-02-21 19:04:00
举报
文章被收录于专栏:LoRexxar's BlogLoRexxar's Blog

0x01 简述

Discuz!X社区软件1,是一个采用PHP 和MySQL 等其他多种数据库构建的性能优异、功能全面、安全稳定的社区论坛平台。

2017年9月29日,Discuz!修复了一个安全问题2用于加强安全性,这个漏洞会导致前台用户可以导致任意删除文件漏洞。

2017年9月29日,知道创宇404 实验室开始应急,经过知道创宇404实验室分析确认,该漏洞于2014年6月被提交到Wooyun漏洞平台,Seebug漏洞平台收录了该漏洞3,漏洞编号ssvid-93588。该漏洞通过配置属性值,导致任意文件删除。

经过分析确认,原有的利用方式已经被修复,添加了对属性的formtype判断,但修复方式不完全导致可以绕过,通过模拟文件上传可以进入其他unlink条件,实现任意文件删除漏洞。

0x02 复现

登陆DZ前台账户并在当前目录下新建test.txt用于测试

image.png-76.2kB
image.png-76.2kB
image.png-172.3kB
image.png-172.3kB

请求

代码语言:javascript
复制
home.php?mod=spacecp&ac=profile&op=base
POST birthprovince=../../../test.txt&profilesubmit=1&formhash=b644603b
其中formhash为用户hash

修改成功之后出生地就会变为../../../test.txt

image.png-97.2kB
image.png-97.2kB

构造请求向home.php?mod=spacecp&ac=profile&op=base上传文件(普通图片即可)

image.png-159kB
image.png-159kB

请求后文件被删除

image.png-193.4kB
image.png-193.4kB

0x03 漏洞分析

Discuz!X的码云已经更新修复了该漏洞

https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574

核心问题在upload/source/include/spacecp/spacecp_profile.php

image.png-113.4kB
image.png-113.4kB

跟入代码70行

代码语言:javascript
复制
if(submitcheck('profilesubmit')) {

当提交profilesubmit时进入判断,跟入177行

image.png-146.6kB
image.png-146.6kB

我们发现如果满足配置文件中某个formtype的类型为file,我们就可以进入判断逻辑,这里我们尝试把配置输出出来看看

image.png-68.6kB
image.png-68.6kB

我们发现formtype字段和条件不符,这里代码的逻辑已经走不进去了

我们接着看这次修复的改动,可以发现228行再次引入语句unlink

代码语言:javascript
复制
@unlink(getglobal('setting/attachdir').'./profile/'.$space[$key]);

回溯进入条件

image.png-267.1kB
image.png-267.1kB

当上传文件并上传成功,即可进入unlink语句

image.png-293.8kB
image.png-293.8kB

然后回溯变量space[key],不难发现这就是用户的个人设置。

只要找到一个可以控制的变量即可,这里选择了birthprovince。

在设置页面直接提交就可以绕过字段内容的限制了。

image.png-60.1kB
image.png-60.1kB

成功实现了任意文件删除

0x04 说在最后

在更新了代码改动之后,通过跟踪漏洞点逻辑,我们逐渐发现,该漏洞点在2014年被白帽子提交到Wooyun平台上,漏洞编号wooyun-2014-065513。

由于DZ的旧版代码更新流程不完整,已经没办法找到对应的补丁了,回溯到2013年的DZ3版本中,我们发现了旧的漏洞代码

image.png-85kB
image.png-85kB

在白帽子提出漏洞,可以通过设置个人设置来控制本来不可控制的变量,并提出了其中一种利用方式。

厂商仅对于白帽子的攻击poc进行了相应的修复,导致几年后漏洞再次爆出,dz才彻底删除了这部分代码…

期间厂商对于安全问题的解决态度值得反思…

在简单的漏洞分析之后发现,任意文件删除可以删除包括data目录下的install.lock,导致整站重装,配合其他漏洞甚至可以getshell。

0x05 Reference

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/09/30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01 简述
  • 0x02 复现
  • 0x03 漏洞分析
  • 0x04 说在最后
  • 0x05 Reference
相关产品与服务
Discuz!
Discuz! 是全球领先的论坛社区应用系统,自2001年6月面世以来,服务超过300多万网站用户案例。现在,借助 Discuz! ,您不仅可以使用搭建传统的社区论坛,更可轻易的构建面向移动互联网时代的私域流量和社交圈子类的应用,并快速启动业务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档