返回列表 发新帖
查看: 5648|回复: 2

Discuz X3.2 uc.key泄露导致代码注入漏洞(/api/uc.php) 漏洞分析及修复补丁(方案)

[复制链接]

1万

热度

1万

元宝

1万

贡献

金牌草根

发表于 2016-8-22 09:34:01 | 显示全部楼层 |阅读模式
本帖最后由 民审-M 于 2016-9-29 22:21 编辑

漏洞名称:Discuz uc.key泄露导致代码注入漏洞
漏洞文件:
/api/uc.php
漏洞描述:在Discuz中,uc_key是UC客户端与服务端通信的通信密钥,discuz中的/api/uc.php存在代码写入漏洞,导致黑客可写入恶意代码获取uckey,最终进入网站后台,造成数据泄漏。您也可以登录官方网站更新到最新版本解决。



漏洞查找:编辑/api/uc.php
查找:
  1. if(substr($v['findpattern'], 0, 1) != '/' || substr($v['findpattern'], -3) != '/is') {
  2.                                         $v['findpattern'] = '/' . preg_quote($v['findpattern'], '/') . '/is';
  3.                                 }
复制代码

如果存在以上语句,则证明你存在此漏洞,且不是最新的dz程序:
修复补丁:
fix.zip (3.4 KB, 下载次数: 61)
使用方法:解压上传api目录到dz论坛根目录覆盖即可修复。【最新DZ程序已经修复,可以忽略阿里云安骑士漏洞提示。】



阿里云安骑士专业版自动修复后的修复文件手动修改方法:
首先找到这个文件/api/uc.php

第一处修改

  1. if(!API_UPDATEBADWORDS) {
  2.             return API_RETURN_FORBIDDEN;
  3.         }

  4.         $data = array();
  5.         if(is_array($post)) {
  6.             foreach($post as $k => $v) {        
  7. //dz uc-key
  8.       if(substr($v['findpattern'], 0, 1) != '/' || substr($v['findpattern'], -3) != '/is') {
  9.          $v['findpattern'] = '/' . preg_quote($v['findpattern'], '/') . '/is';
  10.       }
  11. //end            
  12.                 $data['findpattern'][$k] = $v['findpattern'];
  13.                 $data['replace'][$k] = $v['replacement'];
  14.             }
  15.         }
复制代码
第二处修改
  1. function updateapps($get, $post) {
  2.         global $_G;

  3.         if(!API_UPDATEAPPS) {
  4.             return API_RETURN_FORBIDDEN;
  5.         }
  6.                
  7. //$UC_API = $post['UC_API'];
  8. //dz uc-key
  9.         $UC_API = '';
  10.         if($post['UC_API']) {
  11.             $UC_API = str_replace(array('\'', '"', '\\', "\0", "\n", "\r"), '', $post['UC_API']);
  12.             unset($post['UC_API']);
  13.         }
  14. //end
  15.         $cachefile = DISCUZ_ROOT.'./uc_client/data/cache/apps.php';
复制代码
第三处修改
查找:
  1. $configfile = preg_replace
复制代码
修改为:
  1. $configfile = preg_replace("/define\('UC_API',\s*'.*?'\);/i", "define('UC_API', '".addslashes($UC_API)."');", $configfile);
复制代码


最新版本的UC里面都做了以上的修复的,如果你的是最新版本的X3.2就不需要更新,直接忽略阿里云的提示即可。
本文来源于网友学习研究交流 www.caogen8.co,请以学习研究交流为主。
如果您没有贡献积分,可以直接免费领取,免费领取
如果你需要加入本学习研究交流,请以学习研究交流为目的,免责声明
如果找不到您要的资源,请搜索一下,点击搜索

1万

热度

1万

元宝

1万

贡献

金牌草根

 楼主| 发表于 2016-10-9 22:54:29 | 显示全部楼层
本帖最后由 民审-M 于 2016-10-9 22:58 编辑

Discuz uc.key泄露导致代码注入漏洞【完整修复】.zip (4.37 KB, 下载次数: 1, 售价: 1 贡献)
Discuz uc.key泄露导致代码注入漏洞【完整修复】.zip.png
本文来源于网友学习研究交流 www.caogen8.co,请以学习研究交流为主。
如果您没有贡献积分,可以直接免费领取,免费领取
如果你需要加入本学习研究交流,请以学习研究交流为目的,免责声明
如果找不到您要的资源,请搜索一下,点击搜索

1

热度

6

元宝

0

贡献

步入草根

发表于 2017-2-2 18:19:42 | 显示全部楼层
老大我只是想下载个东西
返回列表 发新帖
 懒得打字嘛,点击右侧快捷回复【最新发布】   【赞助草根吧享更多权益】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

收藏帖子 返回列表 搜索

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

小黑屋|手机版|草根吧