0×00 概述 9月29日,Discuz修复了一个前台任意文件删除的漏洞,相似的漏洞曾在2014年被提交给wooyun和discuz官方,但是修复不完全导致了这次的漏洞。 0×01 影响范围Discuz < 3.4 0×02 漏洞重现环境:win7+phpstudy+discuz3.2 新建importantfile.txt作为测试 进入设置-个人资料,先在页面源代码找到formhash值 http://10.0.2.15:8999/discuz3_2/home.php?mod=spacecp&ac=profile 可以看到formhash值是b21b6577。 再访问10.0.2.15:8999/discuz3_2/home.php?mod=spacecp&ac=profile&op=base Post数据:birthprovince=../../../importantfile.txt&profilesubmit=1&formhash=b21b6577 如图 执行后 出生地被修改成要删除的文件。 最后构造表单执行删除文件 随便上传一张图片,即可删除importantfile.txt 成功删除importantfile.txt,重现成功! 0×03 修复方案https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574 删除unlink相关代码。 0×04 漏洞分析根据补丁,漏洞存在于upload/source/include/spacecp/spacecp_profile.php。 先看第70行 提交1进入这个判断。 来到220行,补丁前: 往上看来到: 可以看出文件上传成功就可以进入228行的unlink从而删除指定文件。 现在就看如何控制指定文件,也就是控制$space[$key]这个变量。 继续往上看来到: 可以看出space存用户资料,就可以利用space[birthprovince]存要删除的文件。 那如何修改birthprovince为指定文件呢,直接post提交就绕过限制了。 总结整个漏洞利用流程:
0×05 结语删文件……,大家不要乱搞,该补的赶紧补,discuz树大招风,2014的补丁又不补完全,正是这样攻与防的不断博弈,使安全界生机勃勃,妙趣横生,也使互联网愈发安全稳固。 0×06 参考资料https://www.seebug.org/vuldb/ssvid-96608 https://www.seebug.org/vuldb/ssvid-93588 https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|