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

您可能还喜欢...