软件风向标,重度软件行业发展门户!

文章更新 | 热门文章
您的位置: 首页  →  攻略 → 《x3 tc攻略 宝马x3与x4怎么选

x3 tc攻略 宝马x3与x4怎么选

2023-06-01 15:12:18      小编:      我要评论

0x00

背景介绍

Discuz最新版本于2017年8月1日正式发布X3.在最新版本中修复了许多安全问题。CERT和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.影响版本

通过代码分析确定以下版本:

lDiscuz_X3.3_SC_GBK

lDiscuz_X3.3_SC_UTF8

lDiscuz_X3.3_TC_BIG5

lDiscuz_X3.3_TC_UTF8

lDiscuz_X3.2_SC_GBK

lDiscuz_X3.2_SC_UTF8

lDiscuz_X3.2_TC_BIG5

lDiscuz_X3.2_TC_UTF8

lDiscuz_X2.5_SC_GBK

lDiscuz_X2.5_SC_UTF8

lDiscuz_X2.5_TC_BIG5

lDiscuz_X2.5_TC_UTF8

3.修复版本

lDiscuz_X3.4_SC_GBK

lDiscuz_X3.4_SC_UTF8

lDiscuz_X3.4_TC_BIG5

lDiscuz_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主要由两部分组成:

MD部分5(前6位) random生成的10位

跟入random函数

因为字符生成集是固定的,没有重复字符,所以函数中的每生成hash都是唯一对应的chars数组中的一个位置使用相同的位置seed生成的。

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

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

Cookie前四个字节已知,使用相同的字节random所以想法很明显:

通过已知的四位计算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完成后续分析,形成报告

0x07 参考文档

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

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

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

宝马[共33款]

攻略[共135924款]

tc[共7款]

  • 发表评论
资讯排行 资讯中心 热门专区 软件评测
软件排行榜 软件攻略 软件下载 软件开测表
软件排行榜 软件礼包 软件下载 新软件测表
安卓排行榜 软件视频 软件下载
苹果排行榜