1. authkey生成算法的安全性漏洞

Discuz_X3.3_SC_UTF8\upload\install\index.php中

authkey的生成方法如下:

1
$authkey substr(md5($_SERVER['SERVER_ADDR'].$_SERVER['HTTP_USER_AGENT'].$dbhost.$dbuser.$dbpw.$dbname.$username.$password.$pconnect.substr($timestamp, 0, 6)), 8, 6).random(10);

可以看出authkey主要由两部分组成:

MD5的一部分(前6位) + random生成的10位

跟入random函数

由于字符生成集合是固定的,且没有重复字符,那么函数中每一次生成hash都唯一对应了chars数组中的一个位置,而且是使用同一个seed生成的。

在之后的代码中使用了同样的random函数:

1
$_config['cookie']['cookiepre'] = random(4).'_';

Cookie的前四个字节是已知的,并且使用了同样的random函数,那么思路很明显:

通过已知的4位,算出random使用的种子,进而得到authkey后10位。那剩下的就需要搞定前6位,根据其生成算法,只好选择爆破的方式,由于数量太大,就一定要选择一个本地爆破的方式(即使用到authkey而且加密后的结果是已知的)。

在调用authcode函数很多的地方都可以进行校验,在这里使用找回密码链接中的id和sign参数:

sign生成的方法如下:

1
2
3
function dsign($str$length = 16){
    return substr(md5($str.getglobal('config/security/authkey')), 0, ($length ? max(8, $length) : 16));
}

爆破authkey 的流程:

1.通过cookie前缀爆破随机数的seed。使用php_mt_seed工具。

2.用seed生成random(10),得到所有可能的authkey后缀。

3.给自己的账号发送一封找回密码邮件,取出找回密码链接。

4.用生成的后缀爆破前6位,范围是0x000000-0xffffff,和找回密码url拼接后做MD5求出sign。

5.将求出的sign和找回密码链接中的sign对比,相等即停止,获取当前的authkey。

2. 后台任意代码执行漏洞

对比X3.4与X3.3版本发现漏洞存在于:

upload\source\admincp\admincp_setting.php

在2535行左右,在后台对UCenter的密码进行更新的时候,没有对输入的密码进行检查,直接写入到配置文件,导致我们可以闭合前面的单引号从而达到getshell的目的,这里仅做了一个连接测试,如果连接成功则写入配置文件。

0x04 漏洞利用验证


1. authkey生成算法的安全性漏洞

使用一个普通用户登录:

获取cookie前4位:uie7

使用上述脚本整理成php_mt_seed的参数格式:

接着再用php_mt_seed生成seed:

这里php_mt_seed的参数是:

1
0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 610 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 0 61 56 56 0 61 44 44 0 61 40 40 0 61 33 33 0 61

在这里需要注意:

php_mt_seed多参数时是4个数为一组,含义如下图:

我们拿到的是第11-14次的随机数,要去估算第1-10次的,所以前面要空10组位置。

得到所有的种子后(约250-300),使用如下脚本处理得到所有可能的random(10):

然后重置密码,得到找回链接:

整理后执行爆破脚本:

最后破解出来为: 7e2000vULc0oQETA

对比数据库中数据,可以看出是一致的。

2. 后台任意代码执行漏洞

在管理员输入UCenter的密码时,对于用户的输入没有过滤,导致了输入的数据直接写入文件中,利用步骤如下:

1.以管理员身份登录后台

2.设置一个可以远程访问的mysql,密码为:123');phpinfo();//

3.修改UCenter 数据库密码为上述密码

4.更新后即Getshell

配置文件中的内容也被修改:

0x05 修复建议


Discuz官方已经在2017年8月1日发布最新版,请用户检查自己使用的版本,并及时更新至最新版。

0x06 时间线


2017-08-01  Discuz官方安全更新

2017-08-07  360CERT和0KEE Team完成对新版本的首次分析

2017-08-22  360CERT和0KEE Team完成对后续分析并形成报告

0x07 参考文档


https://git.oschina.net/ComsenzDiscuz/DiscuzX/commit/8446bd9e897bb19672389cc4aed42716ccd0f537

https://git.oschina.net/ComsenzDiscuz/DiscuzX/commit/bb600b8dd67a118f15255d24e6e89bd94a9bca8a

http://www.openwall.com/php_mt_seed/

【漏洞分析】Discuz X3.3补丁安全分析相关推荐

  1. Discuz! X3.1 后台代码执行

    Discuz! X3.1 后台代码执行 漏洞描述 Discuz! X3.1后台存在任意代码执行问题,要后台权限. 实验步骤 一.访问后台地址: http://域名/admin.php 账号:admin ...

  2. (4.2.32)各大热补丁方案分析和比较

    选自: [腾讯bugly干货分享]微信Android热补丁实践演进之路 各大热补丁方案分析和比较 继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术.其中比较著名的 ...

  3. Discuz!NT论坛代码小分析

    Discuz开源代码结构分析 2008-4-11 右图是DiscuzNt(以下简称DZ)开源代码的方案结构 20个项目,看上去好像很庞大,现在我们来分析一下它的层次,从本人的个人分析角度上看discu ...

  4. 各大热补丁方案分析和比较

    markzhai's home 首页 分类 关于 归档 标签 各大热补丁方案分析和比较 发表于 2015-11-20   |   分类于 android   |   11条评论 最近开源界涌现了很多热 ...

  5. 02-扫盲篇-操作系统常见安全漏洞攻击方式及操作系统用户权限分析

    文章目录 操作系统常见安全漏洞攻击: WINDOWS操作系统用户权限分析 LINUX操作系统用户权限分析 Linux的单用户多任务 Linux的多用户多任务 用户(user)和用户组(group) 用 ...

  6. Discuz!NT论坛代码小分析【转】

    Discuz开源代码结构分析 2008-4-11 Carl Xu Discuz开源代码结构分析 2008-4-11 Carl Xu /* 分析DZNT的开源代码大体层次结构 */ 右图是DiscuzN ...

  7. 2017年安全漏洞审查报告:安全补丁在不断增加,用户却不安装

    软件漏洞难修复吗? 年度FLexera漏洞审查报告显示,全部安全漏洞当中有81%已经拥有与之匹配的修复补丁,但多数常见软件项目的补丁安装率却相当低下. 作为一家面向应用程序开发商与企业客户的软件安全漏 ...

  8. 使用nginx搭建Discuz X3.4论坛的QQ互联登录失败问题

    问题描述 使用nginx搭建了一个基于http协议的Discuz X3.4论坛.在安装QQ互联插件后,尝试登录问题是失败,提示以下内容: 抱歉,当前存在网络问题或服务器繁忙,详细错误:connect_ ...

  9. Comsenz 核心产品 Discuz! X3.3 正式版【2017-07-01】 -论坛搭建

    https://www.discuz.net/thread-3796882-1-1.html 产品介绍 Discuz! X3.3 在继承和完善 Discuz! X3.2 的基础上,针对 PHP7 进行 ...

最新文章

  1. 代友招中高级.NET开发工程师【上海-徐汇】
  2. 聊聊 Linux 中的五种 IO 模型
  3. ubuntu18.04 安装qt5.12.8及环境配置的详细教程
  4. Swimming Balls
  5. ubuntu - 如何以root身份使用图形界面管理文件?
  6. 【传智播客】Libevent学习笔记(三):事件循环
  7. Sentinel 1.8.0 年度版本发布,熔断降级重构升级!
  8. windows下WMI使用C++查询用户硬件信息
  9. 集训被虐第一天7.31
  10. C# 与 C++ 数据类型对照
  11. SpringBoot自动装配原理解析
  12. 整理:OJ系统及ACM测试题库大全
  13. html jquery图片轮播代码,jQuery实现图片轮播效果代码,jquery实现代码
  14. lnmp、lamp、lnmpa一键安装包(Updated: 2021-01-06)
  15. Mac中彻底删除搜狗拼音输入法一法
  16. ie首页被篡改解决方法 ie浏览器 ie浏览器首页设置 iexplore.exe触犯注册表防护规则
  17. Unity 贴图Meta文件的探究
  18. 天津大学仁爱学院c语言期末考试题,天津大学仁爱学院2014-2015学年第1学期期末C语言复习...
  19. 麦克风测试软件 ios,iOS开发麦克风权限判断
  20. 新手学习嵌入式开发要学什么

热门文章

  1. 计算机不上电维修流程,电脑坏了自己怎么修,电脑维修流程
  2. 项目出问题,凭什么让程序员背锅?
  3. 50道简单易学的家常菜谱(附图) - 健康程序员,至尚生活!
  4. 创维酷开电视安装第三方软件
  5. 中国汽轮机及辅机制造经营效益与盈利能力分析报告2021-2026年
  6. Stretch的Uniform和UniformToFill
  7. android图库源码,android从系统图库中取图片的实例代码
  8. 70个JAVA问答!
  9. 智能焊接机器人系统的软件构成
  10. 自顶向下语法分析原理与设计思想