开启左侧

[DZ教程] Discuz!X ≤3.4 任意文件删除漏洞分析

[复制链接]
风雨兼程 发表于 2017-10-4 14:39:09 | 显示全部楼层 |阅读模式
阿里云主机折扣码

本站会员必须 邮箱验证成功后 才能发帖。马上注册查阅更多教程,下载海量资源,让你轻松玩做站

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
0x01 简述

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

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

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

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

0x02 复现

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

Discuz!X3.4漏洞

Discuz!X3.4漏洞


Discuz!X3.4漏洞

Discuz!X3.4漏洞


请求

  1. home.php?mod=spacecp&ac=profile&op=base
  2. POST birthprovince=../../../test.txt&profilesubmit=1&formhash=b644603b
复制代码

其中formhash为用户hash
修改成功之后出生地就会变为../../../test.txt

Discuz!X3.4漏洞

Discuz!X3.4漏洞


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

Discuz!X3.4漏洞

Discuz!X3.4漏洞


请求后文件被删除

0x03 漏洞分析

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

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



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

Discuz!X3.4漏洞

Discuz!X3.4漏洞


跟入代码70行

  1. if(submitcheck('profilesubmit')) {
复制代码


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

Discuz!X3.4漏洞

Discuz!X3.4漏洞


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



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

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

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

回溯进入条件


Discuz!X3.4漏洞

Discuz!X3.4漏洞

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

Discuz!X3.4漏洞

Discuz!X3.4漏洞


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

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

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

Discuz!X3.4漏洞

Discuz!X3.4漏洞


成功实现了任意文件删除

0x04 说在最后

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

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

Discuz!X3.4漏洞

Discuz!X3.4漏洞


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

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

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

0x05 Reference

[1] Discuz!官网
http://www.discuz.net
[2] Discuz!更新补丁
https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574
[3] Seebug漏洞平台收录地址
https://www.seebug.org/vuldb/ssvid-93588
当流科技-专业Discuz建站、仿站业务,专注处理discuz!论坛挂马,专注提供论坛托管维护服务! 提供Discuz论坛空间、VPS、云服务器!咨询QQ 569160956 778521512
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩课程推荐

抱歉,当前存在网络问题或服务器繁忙,详细错

主讲:我心枫叶 Discuz!教程

Discuz!论坛网盘附件免跳转下载(手机版网

主讲:当流科技 Discuz插件

discuz论坛搬家教程,如何搬迁到新服务器?

主讲:风雨兼程 Discuz!教程

Discuz!X3.3全新安装和升级后快速回复框丢

主讲:风雨兼程 Discuz!教程

宝塔面板phpmyadmin 数据库502 Bad Gateway

主讲:当流科技 服务器学院

宝塔面板绑定域名无法访问后台怎么解决?

主讲:风雨兼程 服务器学院

QQ互联无法使用临时解决方法!

主讲:2481469838 Discuz!教程

discuz!迪恩理财&企业风格模板免费下载

主讲:我心枫叶 Discuz模板

商务合作

0551-66191059
service#dangliu.net
点击这里给我发消息
dz论坛/Discuz!论坛新手

关注微信公众号

QQ扫码 加 DZ技术群