yun 发表于 2017-10-2 12:43:56

Discuz! 任意文件删除漏洞,优化加强安全性

本帖最后由 yun 于 2017-10-2 12:46 编辑





Crossday Discuz! Board(简称 Discuz!)是北京康盛新创科技有限责任公司推出的一套通用的开源的社区论坛软件系统。采用 PHP 和 MySQL 构建的性能优异、功能全面的社区论坛平台。利用特殊构造的请求触发可参与文件删除操作,导致了任意文件删除漏洞的发生。早在2014年有白帽子向官方报告了一个类似的漏洞,但是由于没有修补全导致还有其他方式可以进行利用。

*由于Discuz官方暂未发布正式补丁及升级包,本站对漏洞细节暂不公开

影响范围
Discuz! X3.3
Discuz! X3.2
Discuz! X3.1
Discuz! X2.5

缓解措施
根据参考连接里的commit编辑upload/source/include/spacecp/spacecp_profile.php文件,删除和unlink相关代码。

文件发生了变化, 影响行数: (第5、6、14、20、24),总共5行@@ -178,8 +178,6 @@ if(submitcheck('profilesubmit')) {
          if($_GET['deletefile'] && is_array($_GET['deletefile'])) {
                  foreach($_GET['deletefile'] as $key => $value) {
                          if(isset($_G['cache']['profilesetting'][$key]) && $_G['cache']['profilesetting'][$key]['formtype'] == 'file') {
                                @unlink(getglobal('setting/attachdir').'./profile/'.$space[$key]);
                                 @unlink(getglobal('setting/attachdir').'./profile/'.$verifyinfo['field'][$key]);
                                  $verifyarr[$key] = $setarr[$key] = '';
                          }
                  }
@@ -215,17 +213,14 @@ if(submitcheck('profilesubmit')) {
                                  $attach['attachment'] = dhtmlspecialchars(trim($attach['attachment']));
                                  if($vid && $verifyconfig['available'] && isset($verifyconfig['field'][$key])) {
                                          if(isset($verifyinfo['field'][$key])) {
                                                 @unlink(getglobal('setting/attachdir').'./profile/'.$verifyinfo['field'][$key]);
                                                  $verifyarr[$key] = $attach['attachment'];
                                          }
                                          continue;
                                  }
                                  if(isset($setarr[$key]) && $_G['cache']['profilesetting'][$key]['needverify']) {
                                          @unlink(getglobal('setting/attachdir').'./profile/'.$verifyinfo['field'][$key]);
                                          $verifyarr[$key] = $attach['attachment'];
                                          continue;
                                  }
                                  @unlink(getglobal('setting/attachdir').'./profile/'.$space[$key]);
                                  $setarr[$key] = $attach['attachment'];
                          }
   
参考链接:https://gitee.com/ComsenzDiscuz/DiscuzX/commit/7d603a197c2717ef1d7e9ba654cf72aa42d3e574

feihu 发表于 2017-10-2 19:53:41

我擦,漏洞,咱们论坛肯定补了:lol

huangjia 发表于 2017-10-2 19:55:10

soga,原来如此

heimao 发表于 2017-10-6 07:36:59

之前就听说的

tang7738 发表于 2017-11-10 19:03:02

了解过,加深印象。

carpwind 发表于 2020-7-10 09:07:27

这个厉害了嘛
页: [1]
查看完整版本: Discuz! 任意文件删除漏洞,优化加强安全性