本文由 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
我觉得中国互联网环境下,论坛不是有大手子/资源帝/技术大佬在的话估计随着时间流逝也会没落了(
咦貌似应该发在上一篇文章的评论区里(
有没有那个密码爆破的细节,谢谢大佬
公网上能找到,具体就不说了。这篇博文不讨论漏洞利用。