Discuz <= 3.4任意文件删除漏洞
一、漏洞原理
出现漏洞的文件在 upload/source/include/spacecp/spacecp_profile.php 中
根据dz给出的代码修复历史,可以看到,所有关于unlink文件删除的操作代码都清除掉了
代码70行,有个if判断,需要设置profilesubmit进入if语句内
代码178行,可以看到通过需要满足配置文件中某个 formtype 的类型为 file
只要找到一个可以控制的变量即可,在设置页面使用POST提交就可以绕过字段内容的限制了
二、漏洞影响版本
Discuz Version <= 3.4
三、漏洞演示
首先查看到目标站点下存在robots.txt文件
1、注册新用户
2、设置 — 个人资料,查看网页源代码,找到formhash值(随机生成)
3、在页面/home.php?mod=spacecp&ac=profile&op=base中POST提交POC代码
birthprovince=../../../robots.txt&profilesubmit=1&formhash=xxxx
4、刷新页面后,在出生地一栏可以看到输入的robots.txt,说明存在漏洞
5、在本地构建上传,新建一个1.HTML文件
主要是在本地使用POST提交方式将所有的参数整合,发送给目标站点,注意所有参数的取值
6、浏览器访问1.HTML文件,点击浏览上传一个图片文件
7、上传成功后刷新页面,在此访问robots.txt文件已经被删除了
四、漏洞修复
升级Discuz版本 Version > 3.4
五、参考资料
https://www.anquanke.com/post/id/86967
http://www.freebuf.com/vuls/149904.html