DiscuzX 3.2 死循环GET漏洞修复方案

就在刚刚,Hostker 又遇到一个客户被访客 CC 自己,查看 URL 非常熟悉,正是年初时我们报的 Bug。

滚去官网发现最后更新时间是 6 月,然而下回来的代码发现官方还是没修好这个地方。DZ 已完。

想帮客户修复时发现细节已经忘光,还好有聊天记录可以翻到。因此记下这个 Bug 以及修复方案。

漏洞说明

如果连续多层楼(例如4层)都有回帖可见或者购买可见的隐藏内容,并且隐藏内容为图片的时候(文字暂时没测试),在帖子第一页底部进行回帖,会导致死循环变成CC攻击服务器,此时浏览器失去响应,关闭都很困难,只能杀死浏览器进程。

以下是服务器的 Log:

212211574426ebcea0c9478729639888a3253c00

祈祷这个访客的爪机不会爆炸吧 /w\

我对 DiscuzX 不是很熟悉,因此联系到 BranchZero (DZ 签到插件的开发者)协助排查问题,以下细节均为 BranchZero 提供。

在 \static\js\forum_viewthread.js 大约 228 行有一个函数 succeedhandle_fastpost 代码如下:

这个 pid 用于回帖后去服务器获取对应楼层内容,并显示出来。看起来似乎没什么问题。

唯一有可能存在问题的地方就是 for 循环,因此把 i 和 replyreload 打印出来,发现 replyreload 值为 ,2,3,4,5,6,7

然而 i 一直停留在 5 并且一直在重复死循环。一定是 ajaxget 函数改变了 i ,继续跟踪看看:

QQ图片20151207164522 QQ图片20151207164527

Bug 就是这么来的╮(╯▽╰)╭

修复方法

succeedhandle_fastpost 函数的 i 变量改改名字即可,像这样:

DiscuzX 3.2 死循环GET漏洞修复方案 有 8 个评论

  1. 越来越感觉 Discuz! X 系列越做越不行,甚至不如 Discuz! 7.2。被 T 讯收购之后尤其如此。现在更是直接弃坑了。

  2. 求申请友情链接~然而没找到专门的页面,就只能在这里发了~

    标题:赵

    地址:https://www.zhaojin97.cn

发表评论

电子邮件地址不会被公开。 必填项已用*标注