首页 科技正文

usdt不用实名(caibao.it):【组件攻击链】禅道项目治理系统(ZenTaoPMS)高危破绽剖析与行使

Sunbet官网 科技 2020-12-24 21:01:18 50 0

组件先容

1 基本信息

ZenTaoPMS(ZenTao Project Management System),中文名为禅道项目治理软件。ZenTaoPMS是用于解决众多企业在治理历程中泛起的杂乱,无序的征象,而开发出来的一套项目治理软件。

禅道项目治理软件的主要治理头脑基于国际盛行的迅速项目治理方式——Scrum。Scrum是一种注重实效的迅速项目治理方式,但众所周知,它只划定了焦点的治理框架,详细的细节还需要团队自行扩充。禅道在遵照其治理方式基础上,又融入了海内研发现状的许多需求,好比bug治理,测试用例治理,公布治理,文档治理等。因此禅道不仅仅是一款scrum迅速项目治理工具,更是一款完整的项目治理软件。基于Scrum,又不局限于Scrum。

禅道还首次创造性的将产物、项目、测试这三者的观点明确离开,产物职员、开发团队、测试职员,这三者分立,互相配合,又互相制约,通过需求、义务、bug来举行交相互动,最终通过项目拿到及格的产物。

2 版本先容

禅道项目治理软件基于自主研发的PHP开发框架——禅道PHP框架开发而成,企业或者第三方的开发者可以通过这套框架,天真的对禅道举行功效的修改或者扩展。经由逐年演化,禅道项目治理软件生长成为四大系列、功效完善的项目治理软件。禅道项目治理软件生长至今其焦点开发系列共有以下三个,即禅道企业版、禅道专业版、禅道团体版、禅道开源版。其中禅道开源版是基础版本;而专业版、企业版是凭据禅道开源版举行二次开发而成,其间仅存在功效性上的差别,以是专业版、企业版是兼容同级开源版的;而团体版仅为部署架构上的差别,焦点照样企业版,详细如下:

(1)禅道开源版(2009-2020)是禅道项目治理软件的基础版本,属于禅道项目的开发框架,其中仅开发了项目治理的基本模块。

(2)禅道专业版(2012-2020)是在禅道开源版的基础上增添增强功效。专业版推出的初衷是为IT企业或部门提供更完善的服务,专业版增强功效加倍适合企业的内部流程化治理。同时专业版的增强功效都以收费插件的方式公布在禅道官网里,为用户提供单独下载使用的服务。

(3)禅道企业版(2017-2020),在禅道专业版功效的基础上,增添了运维治理、OA办公治理、反馈治理,以及文档的版本治理及在线预览等功效,可以为企业项目治理流程提供更全面的支持。

(4)禅道团体版(2019-2020)主要包罗主站平台和子站点两部门。团体版用户可以通过主站平台给旗下的 部门、 子公司或者第三方开发团队划分开通一个自力的子站点举行项目治理。团体版的子站点由禅道项目治理软件企业版提供项目治理服务, 每个子站点的数据都是自力且互不影响。

版本细分如下图所示:

3 使用量及使用漫衍

凭据全网数据统计,使用ZenTaoPMS的网站多达4万余个,其中大部门集中在海内,占使用量的75%以上。其中,广东、浙江、北京、上海四省市使用量最高,由此可见,ZenTaoPMS在海内被广泛应用。通过网络空间搜索引擎的数据统计和柱状图表,如下图所示。

高危破绽先容

通过对ZenTaoPMS破绽的网络和整理,过滤出其中的高危破绽,可以得出如下列表。

从以上表可以看出,近年来禅道破绽频发,从2018年最先,每年都市爆出比较严重的高危破绽,通过这些高危破绽均可对服务器造成一定的影响,甚至可以获取服务器的最高权限。

从破绽漫衍的情形来看,禅道大部门的破绽均属于后台破绽,这源于禅道属于项目治理软件,均需要登录授权后方可操作系统中的随便模块,而系统中的未授权接口很少,在18年发作一个未授权破绽后,官方将对外开放的接口所有筛选修复,就导致对外开发接口少少,很难有破绽行使点,故停止到现在,禅道所发作的破绽均需要后台一定的权限账户才可执行。

我们可以看到2018年禅道发作出多个破绽,实在这些破绽原理基本一致,均为越权挪用getModel函数,后面我们会在详细剖析中解说该部门破绽的原理。另外,我们发现禅道发作的破绽基本存在于开源版,但这不意味着这些破绽仅存在于开源版,开源版是禅道其他系列的基础框架版本,以是开源版的破绽大概率也会在于对应兼容系列的对应版本中。且禅道具有可扩展性,以是大部门使用者均可接纳开源版,在举行二次开发,适用到自己项目中。

破绽行使链

基于ZenTaoPMS高危破绽,我们可以得出几种可以行使的高危行使链。

1 无需权限

ZenTaoPMS (8.2-9.2.1) - GetShell

● 首先明确ZenTao框架系列版本,接见该路径可获取版本信息:/zentao/index.php?mode=getconfig。

● 若是行使此破绽,需要系统有文件写入权限。

2 仅需低权限

ZenTaoPMS<11.6 - GetShell

● 首先明确ZenTao框架系列版本,接见该路径可获取版本信息:/zentao/index.php?mode=getconfig。

● 需要获取到ZenTaoPMS的后台用户登录账号密码或者cookie,执行以上破绽天生shell,最终可getshell。

3 需要治理员权限

ZenTaoPMS  < 12.4.3 - GetShell

● 首先明确ZenTao框架系列版本,接见该路径可获取版本信息:/zentao/index.php?mode=getconfig。

● 需要获取到ZenTaoPMS的后台治理员账户登录账号密码或者cookie。

● 破绽只适用于Windows一键安装版(未加平安限制)、Linux一键安装版(未加平安限制)、安装包版。Windows/Linux一键安装版(加入平安限制)由于做过新上传文件限制,无法执行上传后的文件,导致破绽无法行使。

ZenTaoPMS  Pro <= 8.8.2 - GetShell

● 需要获取到ZenTaoPMS的后台治理员账户登录账号密码或者cookie。

● 该破绽下令执行无回显,可通过certutil.exe下载安装远程可行使恶意软件,最终getshell。

高可行使破绽剖析

1 手艺靠山:禅道项目治理系统路由模式

禅道有两种路由模式PATH_INFO、GET方式,其中GET方式为常见的m=module&f=method形式通报模块和方式名,而PATH_INFO则是通过路径和分隔符的方式通报模块和方式名,路由方式及分隔符界说在config/config.php中。

● PATHINFO:

user-login-L3plbnRhb3BtczEwLjMuMS93d3cv.html 以伪静态形式在html名称中传参。

● GET:

index.php?m=block&f=main&mode=getblockdata 类似于其他通例cms在get参数中传参。

我们从禅道的入口index.php文件来举行解说:

从index.php文件,首先看到加载了一些framework中的框架类,然后声明晰一个路由$app,之后就做了一些系统的基本判断,最主要的就在最下方的三句话,划分是三个功效:剖析请求、检测权限、加载模块;

$app->parseRequest();

$common->checkPriv();

$app->loadModule();


即parseRequest()函数就是路由剖析入口。进入到\framework\base\router.class.php文件中的parseRequest()函数:

parseRequest()函数首先用于剖析判断url是否接纳了'GET'或者是'PATH_INFO'模式,其中有一个点就是isGetUrl()函数,该函数用于判断url是否接纳了GET模式,详细有以下三种模式:

我们回到parseRequest()函数中可以得出,若是系统的默认剖析模式是PATH_INFO,而你的url接纳的是GET模式,系统则会将此次接见的路由剖析模式设置修改GET,故当你的url模式与系统默认剖析模式差别,系统也会剖析,不会报错。以是禅道系统的两种路由剖析模式可同时使用。

(1)路由剖析中,GET模式属于非默认模式,然则该种剖析方式是PHP类CMS的通例剖析模式,即m=block&f=main,m参数卖力通报模块名(module),f参数卖力通报方式名(method),由此就可以定位到对应module中的control.php文件,以及该文件中对应的method。

(2)路由剖析中,PATH_INFO模式属于系统默认模式,我们在设置文件中可以看到系统默认模式以及对应的分隔符、参数寄义:

我们可以看出PATH_INFO的默认分隔符是 -,然后我们进入到path_info模式下的setRouteByPathInfo()函数,通过分隔符将url支解后,第一个值为模块名称module,第二个值即为方式method:

两种剖析模式剖析后获取的最终module、method通过 $this->setControlFile();方式来寻找对应的文件:

自此路由剖析竣事,定位到对应的模块方式后,就举行了权限验证,即使用者身份是否可以挪用该模块与方式,$common->checkPriv();,文件module/common/model.php:

今后方式看出,除了isOpenMethod之外,均需要登录后具有对应权限才可接见,不需登录的方式如下所示。

2 禅道 8.2-9.2.1 SQL注入破绽导致Getshell

2.1 破绽简介

破绽名称:禅道8.2-9.2.1SQL注入前台Getshell

破绽编号:无

破绽类型:SQL注入

CVSS评分:无

破绽危害品级:高危

2.2 破绽概述

禅道项目治理软件集产物治理、项目治理、质量治理、文档治理、组织治理和事务治理于一体,是一款功效完整的项目治理软件。该破绽影响版本为禅道8.2-9.2.1。破绽泛起在系统orm框架中,在拼接order by的语句历程的时刻,未对limit部门过滤并直接拼接,导致攻击者组织执行SQL语句。在mysql权限设置欠妥的情形下,攻击者可行使该破绽获取webshell。

2.3 破绽影响

禅道8.2 - 9.2.1

2.4 破绽修复

建议受影响的用户升级至ZenTao 9.2.1以上版本或打上对应补丁包,下载地址:https://www.zentao.net/download.html

2.5 破绽行使历程

0x0:随便接见一个不存在的路径,返回页面会泛起报错,报错回显出文件的存放路径为。

0x1:凭据报错回显的路径,组织SQL注入语句将木马写入系统的EXP。

0x2:将上述EXP举行ASCIIhex加密,获得加密后的字符串。

0x3:然后将加密后的字符串放入:

{"orderBy":"order limit 1;SET @SQL=0x(加密后字符串);PREPARE pord FROM @SQL;EXECUTE pord;-- -","num":"1,1","type":"openedbyme"}

0x4:然后将上述语句举行base64加密。

0x5:最终通过接见以下语句执行破绽

http://siteserver/zentao/index.php?m=block&f=main&mode=getblockdata&blockid=case&param=base64加密字符串

2.6 代码剖析

我们凭据破绽PoC来跟踪破绽执行流程,从手艺靠山中的路由剖析我们可以定位到破绽存在的模块是block模块中的main方式,在经由路由剖析后,系统将通过loadModule()方式加载对应模块,如下图所示:

在处置完url路由后,就最先处置方式中的种种参数,通过setParamsByGET()函数将参数剖析:

在参数剖析后,就对各个参数举行过滤检测,若没有问题,最终将剖析过滤后的参数举行保留:

在路由剖析和参数剖析过滤完之后,就需要通过call_user_func_array()函数来挪用对应模块的对应方式,然后就进入到block模块中的control.php文件:

在module/blocak/control.php文件中的组织函数中,存在一个判断,即需要存在referer,否则无法执行对应模块的函数。

在进入到block模块中的main函数中,通过mode参数进入到一下if分支,在该分支中,首先对params参数举行base64解码

,

欧博客户端_ALLbet6.com

欢迎进入欧博客户端(Allbet Game):www.aLLbetgame.us,欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

,

然后通过进一步的剖析参数,获取到执行getblocakdata操作的的函数为printCaseBlock()

然后进入到本文件中的printCaseBlock()函数中,通过剖析params参数后,获得type属性为openedbyme(可组织),进入到下面的elseif分支,我们可以看到参数要进入到orderby函数中举行处置,继续跟入到orderby函数中:

在oderby函数,系统将oder参数举行剖析,获取到orders和limit参数值

接下来就进入到了破绽发生的要害,即$order = join(',', $orders) . ' ' . $limit;

在该SQL语句中将$limit直接拼接到最后,导致limit 1;闭合了之前的SQL语句,而之后的攻击PoC就可被执行,由此就造成了该破绽的SQL注入,该SQL注入可以写入文件,导致最终的getshell。

3 禅道后台代码注入破绽

3.1 破绽简介

破绽名称:禅道后台代码注入破绽

破绽编号:无

破绽类型:代码注入

CVSS评分:无

破绽危害品级:高危

3.2 破绽概述

禅道项目治理软件集产物治理、项目治理、质量治理、文档治理、组织治理和事务治理于一体,是一款功效完整的项目治理软件。破绽属于一种越权挪用,通俗权限(用户组为1-10)的攻击者可通过module/api/control.php中getModel方式,越权挪用module目录下所有的model模块和方式,从而实现SQL注入、随便文件读取、远程代码执行、文件包罗等攻击。

3.3 破绽影响

禅道开源版 < 11.6

3.4 破绽修复

建议受影响的用户升级至ZenTao 11.6以上版本,下载地址:https://www.zentao.net/download.html

3.5 破绽行使历程

0x0:首先上岸获取上岸cookie:zentaosid。

0x1:然后接见api-getModel-editor-save-filePath后再api中天生shell。

0x2:最后接见api-getModel-api-getMethod-filePath=,最后文件包罗shell,执行PHP代码。

3.6 代码剖析

我们凭据破绽PoC来跟踪破绽执行流程,从手艺靠山中的路由剖析我们可以定位到破绽存在的模块是api模块中的getModel方式,在经由路由剖析后,系统将通过loadModule()方式加载对应模块,如下图所示:

进入到api的getModel()方式中,获取到需要挪用的三个参数module:editor,method:save,params:filePath。

然后通过回调函数call_user_func_array进入到editor模块中:

进入到editor模块中的model.php文件中的save()函数,通过save函数的file_put_contents将fileContent内容天生为一个文件,

最终将输出效果后,历程竣事。

然后通过接见api-getModel-api-getMethod-filePath文件,剖析出module为api,method为getModel(),在getmodel()函数中又挪用了api模块的getmethod()方式,

进入到getMethod方式中,进入到import方式:

在import()方式中,通过include()函数包罗了filePath下的文件,最终执行PHP代码

4 禅道后台文件上传破绽

4.1 破绽简介

破绽名称:禅道随便文件上传破绽

破绽编号:CNVD-C-2020-121325

破绽类型:文件上传

CVSS评分:无

破绽危害品级:高危

4.2 破绽概述

禅道官方公布了开源版12.4.3的更新通告,本次平安更新禅道官方修复了一个高危破绽:禅道随便文件上传破绽,破绽编号:CNVD-C-2020-121325。登录后的随便攻击者可通过fopen/fread/fwrite方式连系FTP、File等协议上传或读取随便文件,乐成行使该破绽可以执行随便代码,最终获取服务器最高权限。

4.3 破绽影响

10.x < 禅道开源版 < 12.4.3

4.4 破绽修复

建议受影响的用户升级至ZenTao 12.4.3及以上版本,下载地址:https://www.zentao.net/download.html

4.5 破绽行使历程

0x0:首先上岸获取上岸cookie:zentaosid。

0x1:然后接见client-download-[$version参数]-[base64加密后的恶意文件地址]-1.html后再下载远程文件到服务器中。

0x2:最后接见data/cliten/1/文件,执行PHP代码。

4.6 代码剖析

我们凭据破绽PoC来跟踪破绽执行流程,从手艺靠山中的路由剖析我们可以定位到破绽存在的模块是client模块中的download方式,在经由路由剖析后,系统将通过loadModule()方式加载对应模块:

进入到client的download()方式中,获取到需要挪用的2个参数$version和$link

然后跟进到download()重点中的downloadZipPackage()函数,全局中共有两个downloadZipPackage函数,其中一个在module/client/ext/model/xuanxuan.php:进入到该函数中,我们发现该函数首先将$link参数举行base64解码后,然后通过pcre举行过滤,即路径的协议无法使用http://,然则我们可以使用HTTP或者file、ftp等协议绕过该限制,然后返回到正式的downloadZipPackage函数,parent::downloadZipPackage($version, $link);

接下来进入到module/client/model.php中的接下来进入到module/client/model.php:

在该方式中,我们可以看到version参数用于建立一个新的文件夹,即/data/client/${version},

然后将link参数值举行base64解码,最终在新建文件夹下新建文件,然后将远程文件写入到该文件中,最终到达远程文件上传破绽的目的。

5 禅道Pro版本随便下令执行破绽

5.1 破绽简介

破绽名称:禅道项目治理软件Pro版本随便下令执行破绽

破绽编号:CVE-2020-7361

破绽类型:下令执行

CVSS评分:CVSS 2.0:9.0; CVSS 3.x:8.8

破绽危害品级:高危

5.2 破绽概述

EasyCorp ZenTao Pro是一套开源项目治理软件。该软件包罗产物治理、项目治理、质量治理和文档治理等功效。EasyCorp ZenTao Pro 8.8.2及之前版本中的/pro/repo-create.html文件存在操作系统下令注入破绽。攻击者可借助‘path’参数行使该破绽以SYSTEM权限执行随便下令。

5.3 破绽影响

禅道 Pro <= 8.8.2

5.4 破绽修复

建议受影响的用户升级至ZenTao pro 8.8.2以上版本,下载地址:https://www.zentao.net/download.html

5.5 破绽行使历程

0x0:首先上岸到治理员账户。

0x1:通过/repo-create.html(/index.php?m=repo&f=create)页面下的client参数执行系统下令,将恶意软件下载到服务器中。

SCM=Git&name=test2&path=C%3A%5CProgramData&encoding=utf-8&client=cmd1

0x2:通过repo-create.html页面下的client参数执行系统下令,使用反弹shell,以到达getshell的目的。

SCM=Git&name=test2&path=C%3A%5CProgramData&encoding=utf-8&client=cmd2

5.6 代码剖析

我们凭据破绽PoC来跟踪破绽执行流程,从手艺靠山中的路由剖析我们可以定位到破绽存在的模块是repo模块中的create方式,在经由路由剖析后,系统将通过loadModule()方式加载对应模块,如下图所示:

然后通过call_user_func_array()函数挪用对应模块以及对应方式:

在module/repo/control.php文件中的create()函数中,若是是post的数据,首先进入到$repoID = $this->repo->create();该处的create()方式是挪用的model.php文件中的create()方式:

k

进入到module/repo/model.php方式中,首先进入到create()方式中,发现第一步需要执行checkConnection():

在checkConnection()函数中,首先获取到对应参数值,由此发现参数在此未做过滤,继续往下看:

若是SCM=git的话,则判断path下的文件是否存在,若是不存在则返回false。

然后进入到本破绽的触发点了,command参数直接与tag 2>&1拼接,带入到exec()函数执行:


资讯
版权声明

本文仅代表作者观点,
不代表本站环球UG官网的立场。
本文系作者授权发表,未经许可,不得转载。

发表评论

评论列表(0人评论 , 50人围观)
☹还没有评论,来说两句吧...

标签列表