说说 Discuz! 网站安全 #2

本文由 Coxxs 原创,转载请注明原文链接:https://dev.moe/604

上一篇文章中,我们提到了六个加强网站安全性的通用措施。在本文中,我们会针对性的对 Discuz! X 的一些遗留安全问题进行修复。在阅读本文前,我们假设你已经升级到了最新版的 Discuz! X(撰写本文时最新版本为 Discuz! X3.4 20180101)。

本文提及的所有的修复所对应的漏洞此前都已在互联网上公开。

请依次完成以下安全修复步骤:

1. 重置站点安全密钥

如果在你安装 Discuz! 时,使用的版本为 Discuz! X3.4 20180101 或以上的版本,可跳过本步骤。

早期 Discuz! 安装程序产生的安全密钥不够安全,可被破解,需要重新生成安全密钥。

打开 config/config_global.php,找到:

$_config['security']['authkey'] = 'xxxxxx';

xxxxxx 是指你的旧密钥。请将旧密钥改为新的密钥。新密钥没有特殊格式要求,建议生成一个 32 位以上的英文、数字组成的随机字符串。此密钥请注意保密。

再找到:

$_config['cookie']['cookiepre'] = 'xxxx_';

将其中的 xxxx 改为新的字符串。字符串没有特殊格式要求,输入一个新的 4-5 位左右的英文、数字组成的随机字符串即可(如 ab12)。

完成以上两处修改后,需要进入后台重新设置一下远程附件 FTP 密码及支付宝密钥(如果此前有的话),同时论坛中所有会员将自动登出。新填入的密钥可有效避免被破解。

2. 加强 UCenter 初始密码安全性

安装 Discuz! X 时,会同时安装 UCenter 系统(下称 UC),默认在 /uc_server/ 目录下。黑客获取 UC 权限等同于获取整站权限,且 UC 的初始密码是站长在安装 Discuz! 时设置的密码,如果没有通过以下步骤专门修改过,即使在 Discuz! 中修改过管理员密码,UC 密码也是不会变动的。

如果安装网站时使用了易于破解的弱密码,请登录 UC 后台(默认在 example.com/uc_server/ 下),在下图位置设置一个新密码。

3. 修复 UCenter 密码爆破漏洞

UCenter 还存在一处爆破密码的漏洞,已被大量攻击者利用,官方尚未修复该问题。请打开 /uc_server/control/app.php,找到:

function onadd() {

在该行下面添加:

exit;

后续如果要将新网站接入 UC,可暂时撤销该改动。

4. 防止 IP 伪造

Discuz! X 的默认设置允许攻击者任意伪造 IP,进而绕过次数限制爆破会员密码。

打开 source/class/discuz/discuz_application.php,找到:

$ip = $_SERVER['REMOTE_ADDR'];

在下面添加一行

return $ip == '::1' ? '127.0.0.1' : $ip;

即可防止伪造 IP。

如果网站使用了 CDN,进行本修改后,获取到的 IP 将为 CDN 的 IP。这种情况下,nginx 用户可以使用 ngx_http_realip_module,指定 CDN 白名单,由 nginx 对访客 IP 进行还原。


完成以上步骤后,可以避免目前一部分常见的、针对 Discuz! X 的批量扫描。

安全永远是动态的,在撰文时,还有几个 0day 尚未修复、公开。建议站长参考上一篇文章中所提到的方案,降低风险。同时在 Discuz! X 发布新版本时,及时完成更新。

Coxxs

说说 Discuz! 网站安全 #2》有3个想法

  1. 我觉得中国互联网环境下,论坛不是有大手子/资源帝/技术大佬在的话估计随着时间流逝也会没落了(
    咦貌似应该发在上一篇文章的评论区里(

    1. 公网上能找到,具体就不说了。这篇博文不讨论漏洞利用。

发表回复

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