### 漏洞概述 在 Discuz 系统中,`uc_key` 是 UC 客户端与服务端通信的密钥。然而,由于 `/api/uc.php` 文件存在代码写入漏洞,黑客可能利用这一漏洞写入恶意代码,进而获取 `uc_key`。一旦成功获取密钥,攻击者便可轻松进入网站后台,导致数据泄漏等严重后果。
#### 漏洞名称: Discuz uc.key 泄露导致代码注入漏洞
#### 问题表现: 部分站长报告称,网站被攻击后,`/uc_server/data/tmp` 目录下被上传了恶意 Shell 文件。这表明攻击者已经成功利用了该漏洞。
### 补丁效果 通过阿里云提供的热修复补丁,目前该漏洞的风险已被有效排除。为了确保网站安全,建议所有使用 Discuz 的站长尽快检查并修复相关文件。
### 手工修复方案 如果无法立即应用官方补丁,可以手动修改以下文件以修复漏洞: #### 修改文件路径: `/api/uc.php`
#### 第一步:编辑第 39 行 查找以下代码:
require_once ' ../source/class/class_core.php ';
将其修改为:
require_once ' ../source/class/class_core.php ';
if (method_exists("C", "app")) {
$discuz = C::app();
$discuz->init();
}
#### 第二步:编辑第 273 行 查找以下代码:
function updateapps($get, $post) {
将其修改为:
function updateapps($get, $post) {
if($POST@['UC_API']) {
$POST@['UC_API'] = addslashes($POST@['UC_API']);
}
### 提示 请务必注意,不要轻信某些来源声称“漏洞早已修复”的说法。阿里云安骑士专业版提供的修复方案经过严格测试,能够有效解决此问题,推荐各位站长放心使用。
通过以上修复步骤,您可以显著降低网站遭受攻击的风险。同时,建议定期关注 Discuz 官方更新及安全公告,确保您的站点始终运行在最新且最安全的状态下。