• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链
您的位置:首页 > 网络安全 >入侵防御 > Discuz X3.3补丁安全分析

Discuz X3.3补丁安全分析

作者:匿名 字体:[增加 减小] 来源:互联网

匿名向大家分享了Discuz X3.3补丁安全分析,其中包含discuz x3.3,discuz x3.3漏洞,discuz x3.3安装教程,discuz x3.3安装,discuz x3.3模板等知识点,遇到此问题的同学们可以参考下

Discuz官方于2017年8月1号发布最新版X3.4版本,在最新版本中修复了多个安全问题。360CERT和360 0KEE Team遂对该事件进行跟进。
0x01 漏洞概述
360CERT和360 0KEE Team通过对比Discuz_X3.3_SC_UTF8与Discuz_X3.4_SC_UTF8版本,发现X3.3_SC_UTF8版本存在数个漏洞。本报告主要涉及两个漏洞:
1. authkey生成算法的安全性问题:
用户在初次安装软件时,系统会自动生成一个authkey写入全局配置文件和数据库,之后安装文件会被删除。该authkey用于对普通用户的cookie进行加密等密码学操作,但是由于生成算法过于简单,可以利用公开信息进行本地爆破。
2. 后台任意代码执行问题:
管理员在后台对数据库连接密码进行修改时,由于没有对输入进行检查,导致任意代码执行。
0x02 漏洞攻击面影响
1. 影响面
Discuz基本上是基于Cookie而非Session,所以一旦authkey被获取,将导致Cookie的加密失效,进而可以解密Cookie的auth字段获取用户的密码。系统中其他逻辑也大量使用了authkey和authcode算法,该漏洞可导致一系列安全问题:伪造ulastactivity可控制session持久时间;邮箱校验的hash参数被破解,导致任意邮箱注册等。
另外一旦拥有一个管理员账号,则可利用后台任意代码执行漏洞,在后台Getshell进而控制服务器。
经过360CERT与360 0KEE Team研判后确认,漏洞风险等级高,影响范围广。
2. 影响版本
通过代码分析,确定涉及如下版本:
Discuz_X3.3_SC_GBK
Discuz_X3.3_SC_UTF8
Discuz_X3.3_TC_BIG5
Discuz_X3.3_TC_UTF8
Discuz_X3.2_SC_GBK
Discuz_X3.2_SC_UTF8
Discuz_X3.2_TC_BIG5
Discuz_X3.2_TC_UTF8
Discuz_X2.5_SC_GBK
Discuz_X2.5_SC_UTF8
Discuz_X2.5_TC_BIG5
Discuz_X2.5_TC_UTF8
3. 修复版本
Discuz_X3.4_SC_GBK
Discuz_X3.4_SC_UTF8
Discuz_X3.4_TC_BIG5
Discuz_X3.4_TC_UTF8
0x03 漏洞详情
1. authkey生成算法的安全性漏洞
Discuz_X3.3_SC_UTF8\upload\install\index.php中
 

authkey的生成方法如下:

$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函数:

$_config['cookie']['cookiepre'] = random(4).'_';
Cookie的前四个字节是已知的,并且使用了同样的random函数,那么思路很明显:
通过已知的4位,算出random使用的种子,进而得到authkey后10位。那剩下的就需要搞定前6位,根据其生成算法,只好选择爆破的方式,由于数量太大,就一定要选择一个本地爆破的方式(即使用到authkey而且加密后的结果是已知的)。
在调用authcode函数很多的地方都可以进行校验,在这里使用找回密码链接中的id和sign参数:
sign生成的方法如下:
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的参数是:

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完成对后续分析并形成报告

您可能想查找下面的文章:

  • Discuz X3.3补丁安全分析

相关文章

  • serv_u提权记录: 530 Not logged in, home directory does not exist
  • 渗透冰兰黑客基地
  • phpcms2008 注入漏洞 利用分析
  • 你的账号密码是怎样丢失的?暴力破解攻击的检测和防御
  • SQL注入攻击的种类和防范手段
  • DNS(域名服务器)欺骗技术
  • SQL配合3389的一次入侵(图)
  • 一个注射点,一个webshell甚至系统权限
  • 黑客入侵oracle数据库的一些心得
  • MSSQL2008一句话启用xp_cmdshell

文章分类

  • 安全教程
  • 安全设置
  • 杀毒防毒
  • 病毒查杀
  • 脚本攻防
  • 入侵防御
  • 工具使用
  • 业界动态
  • Exploit
  • 漏洞分析
  • 加密解密
  • 手机安全
  • 区块链

最近更新的内容

    • 网络入侵也玩双通道
    • 通杀动易2005的 XSS 攻击
    • 黑客总结的实用的网站渗透步骤
    • Linux入侵检测基础学习
    • TCP/IP筛选限制登陆3389终端的解除方法[注册表]
    • 黑客都很厉害吗 厉害的只是一小部分
    • ACCESS数据库后台sql语句执行导shell的方法
    • SQL 手工注射原理小结
    • 手动克隆管理员
    • 你的账号密码是怎样丢失的?暴力破解攻击的检测和防御

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有