Discuz X 3.4 任意文件删除漏洞

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

一、漏洞简介

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

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

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

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

二、漏洞影响

版本<=3.4

三、复现过程

0x01 环境搭建

到github找版本小于3.4的库

下载地址

下载discuz! 3.1版本
在这里插入图片描述

然后开启phpstudy

在这里插入图片描述

浏览器访问 localhost
在这里插入图片描述

在这里插入图片描述

设置安装条件

在这里插入图片描述

显示安装完成

在这里插入图片描述
在这里插入图片描述

0x02 漏洞复现

首先注册一个测试账号:bulangman

在这里插入图片描述

到根目录新建一个 test.txt文件

在这里插入图片描述

这是初始个人资料

在这里插入图片描述

抓包修改为test.txt:

在这里插入图片描述
在这里插入图片描述

0x03 任意文件删除

首先访问localhost/robots.txt 可见文件是存在的

在这里插入图片描述

在个人资料中,右击查看源代码,通过ctrl+F 搜索formhash,查找hash值:

在这里插入图片描述

然后新建一个名为: upload.html 的文件,将里面的ip地址和formhash改为我们自己的:localhost 872df170

在这里插入图片描述

双击打开我们创建的html:
在这里插入图片描述

然后任意上传一张图片,

在这里插入图片描述

然后任意选择一张图片并上传

在这里插入图片描述

最后发现文件被删除了。
在这里插入图片描述

四、漏洞分析

核心问题出在 DiscuzX-Common\DiscuzX-Common\source\include\spacecp

用vscode打开:

在这里插入图片描述

发现$_GET['deletefile']没有任何处理,$space[$key]来自:

在这里插入图片描述

所以我们需要在 $space变量中找到一个存在需要被删除的文件的位置, 这里使用 birthprovince

猜你喜欢

转载自blog.csdn.net/weixin_45847364/article/details/122169799