【即将关站通知●已关闭注册功能】,倒计时剩余:计算中...

[discuz建站技术] Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法

[复制链接]
魔趣吧站长魔趣吧官方成员 实名认证 发表于 2017-10-1 07:19:36 | 显示全部楼层 |阅读模式
Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法
# u8 R" L: c1 N) a0 h. t

作者:LoRexxar'@知道创宇404实验室

日期:2017年9月30日


% k  R: b: r  v

0x01 简述

Discuz!X社区软件,是一个采用 PHP 和 MySQL 等其他多种数据库构建的性能优异、功能全面、安全稳定的社区论坛平台。

2017年9月29日,Discuz!修复了一个安全问题用于加强安全性,这个漏洞会导致前台用户可以导致任意删除文件漏洞。

2017年9月29日,知道创宇404 实验室开始应急,经过知道创宇404实验室分析确认,该漏洞于2014年6月被提交到 Wooyun漏洞平台,Seebug漏洞平台收录了该漏洞,漏洞编号 ssvid-93588。该漏洞通过配置属性值,导致任意文件删除。

经过分析确认,原有的利用方式已经被修复,添加了对属性的 formtype 判断,但修复方式不完全导致可以绕过,通过模拟文件上传可以进入其他 unlink 条件,实现任意文件删除漏洞。

0 W% O1 R- a% P4 K

0x02 复现

登陆DZ前台账户并在当前目录下新建 test.txt 用于测试


* \- p7 G3 f7 g; b- | Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法
( o4 u! @& u/ O. d

请求


* n. x( A+ |* x/ ]
1( I; a3 S- [8 l* K" J6 i9 U
2
% l& N6 J2 i0 ?' s1 Q3 ]
home.php?mod=spacecp&ac=profile&op=base8 j, A" W; G  Q! G' v; J: U
POST birthprovince=../../../test.txt&profilesubmit=1&formhash=b644603b
& O1 f$ X) \% y( I& s
: Z0 D  G1 d; n$ @6 _6 [

其中formhash为用户hash

修改成功之后出生地就会变为../../../test.txt

, G" B1 [7 e+ c+ f  h- ~
Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法 9 E- L7 A( l/ i0 v/ t

构造请求向home.php?mod=spacecp&ac=profile&op=base上传文件(普通图片即可)

请求后文件被删除

9 w7 y7 y% a$ ~

0x03 漏洞分析

Discuz!X 的码云已经更新修复了该漏洞

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

核心问题在upload/source/include/spacecp/spacecp_profile.php

1 i# X. \* O0 @# Q; f$ e* h
Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法 & Y( g9 C' I+ q1 \* _

- _, D, Q: e$ Z7 c. \% @' c) f; S# v

0x03 漏洞分析

Discuz!X 的码云已经更新修复了该漏洞

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

核心问题在upload/source/include/spacecp/spacecp_profile.php

0 z% |6 G' L2 C6 e1 l1 p
Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法 ! M: p( V! C0 _# y/ `, A! T

跟入代码70行

1
. z, m$ e/ k- y9 I) @& G* z8 R/ i
if(submitcheck('profilesubmit')) {
" m' m, c5 ]8 r2 W
, q# U" _0 D# b+ O9 t$ i0 i, a

当提交 profilesubmit 时进入判断,跟入177行

' Q8 U, A0 [, q* @
Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法 ( C9 ]5 j. N. J! N$ Y

我们发现如果满足配置文件中某个 formtype 的类型为 file,我们就可以进入判断逻辑,这里我们尝试把配置输出出来看看

$ k( d! f- V& P$ ]. T$ I
Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法   }3 A! V1 |* a1 X* D" K! Z8 F& [' o5 w& T: z

我们发现formtype字段和条件不符,这里代码的逻辑已经走不进去了

我们接着看这次修复的改动,可以发现228行再次引入语句 unlink

19 @/ X- v# a) R
@unlink(getglobal('setting/attachdir').'./profile/'.$space[$key]);
* l& T( m8 _# X' N8 T) E1 C$ T

' o% J1 G1 f) Z# W

回溯进入条件


0 Y6 g% I) A) j3 {  g0 Y) e Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法 . w! I: `4 U1 |

当上传文件并上传成功,即可进入 unlink 语句


, [# ]! v; y8 Q- N5 _/ z0 ~ Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法
% O& E; Y% k% k3 Q% M" @0 V

然后回溯变量$space[$key],不难发现这就是用户的个人设置。

只要找到一个可以控制的变量即可,这里选择了 birthprovince。

在设置页面直接提交就可以绕过字段内容的限制了。

" Z& E. z0 ]- i- q4 ]/ ]+ `, `  Y
Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法
; [4 P" i0 J2 n1 ?$ S, }

成功实现了任意文件删除


& F* {9 {9 L% @) j4 w/ t, @, x

0x04 说在最后

在更新了代码改动之后,通过跟踪漏洞点逻辑,我们逐渐发现,该漏洞点在 2014 年被白帽子提交到 Wooyun平台上,漏洞编号wooyun-2014-065513。

由于DZ的旧版代码更新流程不完整,已经没办法找到对应的补丁了,回溯到 2013 年的 DZ3 版本中,我们发现了旧的漏洞代码


! y' [; H5 o' V& H* m* s( Q$ N& ~, n$ b Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法 6 u5 |, s  J& E/ t+ a8 l

在白帽子提出漏洞,可以通过设置个人设置来控制本来不可控制的变量,并提出了其中一种利用方式。

厂商仅对于白帽子的攻击 poc 进行了相应的修复,导致几年后漏洞再次爆出,dz 才彻底删除了这部分代码...

期间厂商对于安全问题的解决态度值得反思...


4 x1 ]6 F2 a$ j$ h

0x05 Reference

[1] Discuz!官网

http://www.discuz.net

[2] Discuz!更新补丁

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


7 R; j6 e" n* _- F

【解决方法】

下载解压包,解压覆盖到source/include/spacecp/spacecp_profile.php


, J- T$ m# w- w

【魔趣吧资源下载指南】--默认解压密码:www.moqu8.com   

1,如有异常请按 F5 刷新本页面!      【资源维权反馈】

2,首发及精品资源受到保护,扣除趣币!趣币可通过分享资源免费获得!懒人也可选择充值

Discuz!X ≤3.4 任意文件删除漏洞分析及解决方法 请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

售价: 免费 spacecp_profile.rar  4.67 KB | 已下载: 1 次
权限:普通用户 (已享有下载权限)

魔趣吧版权声明1,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2,本文内容仅代表作者本人观点,不代表本网站立场,作者文责自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3,本文内容,包括但不限于源码、文字、图片等,仅供参考使用,本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容
4,如您认为本文内容侵犯了您的权益,请与我们联系!我们将在5个工作日内做出处理!本站保留全部修改、解释、更新本声明的权利魔趣吧

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线支持
关闭
欢迎来到魔趣吧
如果你有建站技术问题、仿站需求、模板插件修改需求,请联系我们的技术支持!高效率,低价格的帮你搞定!
请认准魔趣吧唯一官网:www.moqu8.com,谨防假冒网站!

一般问题请到【求助区】发帖咨询(免费)!

邮箱咨询:
winkill2012@qq.com

邮箱咨询需注明:资源地址+本站用户名+具体问题,三者缺一不做处理。非本站资源不处理!
在线支持
快速回复 返回列表

关于魔趣吧|魔趣建站

魔趣吧,志在打造全国最大的建站资源共享平台。 本站提供海量免费的建站资源,包括WordPress模板、Discuz精仿模板、PHPWind模板、phpcms模板、Discuz精仿插件、帝国cms模板、织梦模板等上万精品模板!同时,提供各种建站素材、JS特效、整站程序源码!
服务中文站长,传播分享精神!建站,就来魔趣吧!!
2015-2024 魔趣吧 ( 豫ICP备2021024354号 )   豫公网安备41030402000182号 百度统计
HTTPS安全认证
|网站地图 | 已运行:天 
温馨提示:本站所有资源、教程、源码,不得用于非法站点及用途,否则,本站将终止提供任何服务! Powered by Discuz! Licensed