2017-3-9 此问题已提交 Discuz! 官方,并在 Discuz! X3.4 中得到修复。
事实上,在2014年,我发现过 Discuz! 的一个附件越权下载漏洞(顺便可以免积分),当时也有不少利用工具出现。今天看到一位高手(ID: 快乐的小2B)发布了一个新版的免积分工具(感谢作者发布及朋友告知),测试下来发现确实可以使用,带着好奇分析了下具体实现原理。
重现
1、附件URL形如:forum.php?mod=attachment&aid=****%3D%3D
2、以游客访问附件URL(隐身模式,不带cookies),跳转到了该URL:forum.php?mod=misc&action=attachcredit&aid=693540&formhash=22ae3c59
3、上图箭头处所指的链接,即为下载URL,游客访问无法下载。但使用已登录的账号,访问该下载URL,即可免积分直接下载。
4、经过测试,本漏洞可以通过遍历第2步中的aid,越权查看内部板块的以及收费的附件的文件名,但不可以越权下载。对积分体系会有一定危害,对网站安全危害不大。
分析&修复
漏洞利用方式主要是第二步中,对游客也返回了下载URL,同时对游客无法扣费,造成了免积分。
Discuz! X 附件机制这样设计(各种key)应该也是有原因的,深入可能比较复杂。这里暂时提供一个临时修复方案,即不对游客访问返回下载URL即可。
修复方案如下:
文件:source/module/forum/forum_misc.php
查找(约第29行)
[php]if($_GET[‘formhash’] != FORMHASH) {[/php]
替换为
[php]if($_GET[‘formhash’] != FORMHASH || !$_G[‘uid’]) {[/php]
即可修复该问题。
Coxxs
/可爱
很棒
用了两年这就和谐了。。。。
附件中的aid是什么,站长能否解释一下,好像不只是一种ID,aid貌似会变动的
Discuz! 中,每一个附件都有一个唯一数字ID,这个ID被称为aid。
前来支持~~~~~~~~~~~~~~~~