游客发表

discuz 漏洞

发帖时间:2026-10-17 04:44:51

Discuz! Q 的漏洞漏洞,说实话,漏洞比老版 Discuz! X 有意思多了。漏洞老版是漏洞 PHP 写的,漏洞大多围绕 SQL 注入和上传绕过,漏洞套路固定,漏洞扫一眼代码基本能猜个八九不离十。漏洞但 Q 是漏洞 ThinkPHP 框架 + Vue 前后端分离,攻击面一下子宽了,漏洞而且很多开发者从 X 时代转过来,漏洞思维还停留在“改改模板、漏洞拼拼 SQL”的漏洞老路上,这就容易出事。漏洞
我印象最深的漏洞是一个逻辑漏洞,出在找回密码的漏洞验证码环节。正常的流程是:用户请求验证码 → 系统生成随机码 → 发送到邮箱或手机 → 用户输入验证码 → 重置密码。但 Discuz! Q 的某个版本里,验证码的校验居然只检查“是否存在”而不检查“是否匹配”。什么意思?你随便填一个不存在的验证码,只要格式对,比如六位数字,系统就直接放行,让你进到下一步设置新密码。当时我拿测试站试了一下,填了 `000000`,居然真的跳过去了。这玩意儿不是代码写得烂,是典型的“想当然”逻辑——开发者觉得验证码肯定会被正确校验,结果漏了最关键的比对步骤。
还有个更隐蔽的问题,出在附件下载接口。Discuz! Q 允许用户上传图片、文件,下载时走的是一个带签名的 URL,签名是 `md5(file_id + secret)`。看着挺安全对吧?但问题在于,`file_id` 是自增的整数,而且签名算法里没有加时间戳。这意味着,只要你拿到一个合法签名,就能算出这个 secret 的规律——因为 md5 是不可逆的,但你可以通过多次请求,构造出 `file_id=1,2,3...` 的签名样本,然后反推 secret 的哈希值。一旦拿到 secret,整个站点的所有私有文件都能下载,包括用户上传的身份证照片、合同扫描件。我当时跟朋友开玩笑说,这等于把保险柜的钥匙放在密码锁旁边,锁还用的是出厂默认密码。
说句难听的,这类漏洞在 Discuz! Q 的代码库里不算少。官方修得也快,但架不住用户量大的老站还在跑旧版本。很多站长是从 X 2.5 一路升上来的,数据库里几十万条帖子,不敢轻易动。他们宁愿忍着漏洞,也不愿意冒迁移风险。这种心态我懂,但现实是,黑客可不会管你“历史包袱重不重”,一个批量扫描脚本下去,全网搜 Discuz! Q 的特征路径,三分钟就能把暴露在公网的站点列成清单。你不动,别人替你动。
最后说个细节。Discuz! Q 的安装包默认带了 `admin` 账号,密码是随机生成的,但安装日志里会明文记录。如果你服务器上的日志目录权限没设好,比如 `storage/logs` 可被 web 访问,那等于把管理员密码直接挂在门口。我见过不止一个站,源码是好的,漏洞也没触发,就是日志泄露把后台拱手送人。安全这行,最怕的不是漏洞多,而是你以为自己没漏洞。

    热门排行

    友情链接