Discuz! X3.4 和 X3.3 是广泛使用的论坛系统,然而近期发现了一个严重的安全漏洞。此漏洞存在于 UC(/uc_server/data/tmp)上传执行环节,可能导致恶意代码注入,从而引发一系列安全问题。本文将详细介绍该漏洞的成因、影响以及修复方案,帮助站长们及时解决安全隐患。
### 漏洞概述 在 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 官方更新及安全公告,确保您的站点始终运行在最新且最安全的状态下。