禅道项目管理系统(ZenTaoPMS)高危漏洞分析与利用
字数 2383 2025-08-19 12:42:04

禅道项目管理系统(ZenTaoPMS)高危漏洞分析与利用指南

一、禅道项目管理系统简介

1.1 基本信息

ZenTaoPMS(禅道项目管理软件)是易软天创公司开发的项目管理软件,基于国际流行的敏捷项目管理方式Scrum,并融入了bug管理、测试用例管理、发布管理、文档管理等国内研发需求。

1.2 版本系列

  • 开源版(2009-2020):基础版本,仅包含项目管理基本模块
  • 专业版(2012-2020):开源版基础上增加增强功能
  • 企业版(2017-2020):专业版基础上增加运维管理、OA办公管理等功能
  • 集团版(2019-2020):主站平台+子站点架构,子站点基于企业版

1.3 使用情况

  • 全网使用量超过4万个网站
  • 75%以上用户位于中国
  • 主要分布在广东、浙江、北京、上海

二、高危漏洞列表

漏洞名称 影响版本 披露日期 漏洞类型
禅道8.2-9.2.1 SQL注入导致前台Getshell 禅道开源版8.2-9.2.1 2018 SQL注入
禅道后台代码注入漏洞 禅道开源版<=11.6 2019 代码注入
禅道后台任意文件删除漏洞 禅道开源版<=11.6 2019 文件删除
禅道后台任意文件读取漏洞 禅道开源版<=11.6 2019 文件读取
禅道后台文件包含漏洞 禅道开源版<=11.6 2019 文件包含
禅道后台SQL注入漏洞 禅道开源版<=11.6 2019 SQL注入
禅道任意文件上传漏洞 10.x < 禅道开源版 <12.4.3 2020 文件上传
禅道Pro 8.8.2命令注入漏洞 禅道Pro<=8.8.2 2020 命令注入

三、漏洞利用链分析

3.1 无需权限利用链

ZenTaoPMS (8.2-9.2.1) - GetShell

  • 影响版本:8.2-9.2.1
  • 漏洞类型:SQL注入
  • 利用条件:系统有文件写入权限
  • 检测方法:访问/zentao/index.php?mode=getconfig获取版本信息

3.2 低权限利用链

ZenTaoPMS <11.6 - GetShell

  • 需要后台用户账号或cookie
  • 通过代码注入生成shell

3.3 管理员权限利用链

  1. ZenTaoPMS <12.4.3 - GetShell

    • 仅适用于Windows/Linux一键安装版(未加安全限制)和安装包版
    • 需要管理员账号或cookie
  2. ZenTaoPMS Pro<=8.8.2 - GetShell

    • 命令执行无回显
    • 可通过certutil.exe下载远程恶意软件

四、技术背景:禅道路由模式

禅道有两种路由模式:

  1. PATH_INFO模式(默认):

    • 示例:user-login-L3plbnRhb3BtczEwLjMuMS93d3cv.html
    • 分隔符为"-",第一部分为模块名,第二部分为方法名
  2. GET模式

    • 示例:index.php?m=block&f=main&mode=getblockdata
    • m参数为模块名,f参数为方法名

路由解析流程:

  1. $app->parseRequest() - 解析请求
  2. $common->checkPriv() - 检查权限
  3. $app->loadModule() - 加载模块

五、重点漏洞详细分析

5.1 禅道8.2-9.2.1 SQL注入漏洞

漏洞原理

  • 位于module/block/control.php中的printCaseBlock()函数
  • orderby参数未过滤直接拼接SQL语句
  • 可构造limit部分闭合SQL语句并执行恶意代码

利用步骤:

  1. 构造SQL注入语句写入木马
  2. 将EXP进行ASCIIhex加密
  3. 构造payload:
    {"orderBy":"order limit 1;SET @SQL=0x(加密后字符串);PREPARE pord FROM @SQL;EXECUTE pord;-- -","num":"1,1","type":"openedbyme"}
    
  4. 对payload进行base64编码
  5. 访问:
    http://target/zentao/index.php?m=block&f=main&mode=getblockdata&blockid=case&param=base64编码字符串
    

5.2 禅道后台代码注入漏洞

漏洞原理

  • 通过module/api/control.php中的getModel方法越权调用其他模块
  • 可调用editor模块的save方法写入文件
  • 再通过文件包含执行写入的代码

利用步骤:

  1. 登录获取cookie
  2. 访问生成shell:
    api-getModel-editor-save-filePath
    
  3. 包含执行shell:
    api-getModel-api-getMethod-filePath=
    

5.3 禅道后台文件上传漏洞

漏洞原理

  • 位于module/client/model.php中的downloadZipPackage函数
  • link参数可使用HTTP/FTP/file等协议
  • 可下载远程文件到服务器

利用步骤:

  1. 登录获取cookie
  2. 访问下载远程文件:
    client-download-[version]-[base64编码的恶意文件地址]-1.html
    
  3. 访问下载的文件执行:
    data/cliten/1/[文件]
    

5.4 禅道Pro命令注入漏洞

漏洞原理

  • 位于module/repo/model.php中的checkConnection函数
  • client参数未过滤直接拼接执行命令

利用步骤:

  1. 管理员登录
  2. 通过/repo-create.html页面的client参数执行命令:
    SCM=Git&name=test2&path=C%3A%5CProgramData&encoding=utf-8&client=[命令]
    
  3. 可下载恶意软件或反弹shell

六、修复建议

  1. 升级到最新版本

    • 开源版:升级至12.4.3或更高
    • Pro版:升级至8.8.2或更高
  2. 临时缓解措施

    • 限制后台访问IP
    • 加强文件上传和命令执行过滤
    • 关闭不必要的模块和接口
  3. 安全配置

    • 修改默认路由分隔符
    • 加强权限验证机制
    • 定期安全审计

七、总结

禅道项目管理系统的漏洞主要集中在:

  1. SQL注入导致的前台Getshell
  2. 后台越权调用导致的代码注入
  3. 文件上传和命令注入漏洞

这些漏洞大多需要一定权限,但危害严重,可导致服务器完全沦陷。建议用户及时升级并加强安全配置。

禅道项目管理系统(ZenTaoPMS)高危漏洞分析与利用指南 一、禅道项目管理系统简介 1.1 基本信息 ZenTaoPMS(禅道项目管理软件)是易软天创公司开发的项目管理软件,基于国际流行的敏捷项目管理方式Scrum,并融入了bug管理、测试用例管理、发布管理、文档管理等国内研发需求。 1.2 版本系列 开源版 (2009-2020):基础版本,仅包含项目管理基本模块 专业版 (2012-2020):开源版基础上增加增强功能 企业版 (2017-2020):专业版基础上增加运维管理、OA办公管理等功能 集团版 (2019-2020):主站平台+子站点架构,子站点基于企业版 1.3 使用情况 全网使用量超过4万个网站 75%以上用户位于中国 主要分布在广东、浙江、北京、上海 二、高危漏洞列表 | 漏洞名称 | 影响版本 | 披露日期 | 漏洞类型 | |---------|---------|---------|---------| | 禅道8.2-9.2.1 SQL注入导致前台Getshell | 禅道开源版8.2-9.2.1 | 2018 | SQL注入 | | 禅道后台代码注入漏洞 | 禅道开源版 <=11.6 | 2019 | 代码注入 | | 禅道后台任意文件删除漏洞 | 禅道开源版 <=11.6 | 2019 | 文件删除 | | 禅道后台任意文件读取漏洞 | 禅道开源版 <=11.6 | 2019 | 文件读取 | | 禅道后台文件包含漏洞 | 禅道开源版 <=11.6 | 2019 | 文件包含 | | 禅道后台SQL注入漏洞 | 禅道开源版 <=11.6 | 2019 | SQL注入 | | 禅道任意文件上传漏洞 | 10.x < 禅道开源版 <12.4.3 | 2020 | 文件上传 | | 禅道Pro 8.8.2命令注入漏洞 | 禅道Pro <=8.8.2 | 2020 | 命令注入 | 三、漏洞利用链分析 3.1 无需权限利用链 ZenTaoPMS (8.2-9.2.1) - GetShell 影响版本:8.2-9.2.1 漏洞类型:SQL注入 利用条件:系统有文件写入权限 检测方法:访问 /zentao/index.php?mode=getconfig 获取版本信息 3.2 低权限利用链 ZenTaoPMS <11.6 - GetShell 需要后台用户账号或cookie 通过代码注入生成shell 3.3 管理员权限利用链 ZenTaoPMS <12.4.3 - GetShell 仅适用于Windows/Linux一键安装版(未加安全限制)和安装包版 需要管理员账号或cookie ZenTaoPMS Pro<=8.8.2 - GetShell 命令执行无回显 可通过certutil.exe下载远程恶意软件 四、技术背景:禅道路由模式 禅道有两种路由模式: PATH_ INFO模式 (默认): 示例: user-login-L3plbnRhb3BtczEwLjMuMS93d3cv.html 分隔符为"-",第一部分为模块名,第二部分为方法名 GET模式 : 示例: index.php?m=block&f=main&mode=getblockdata m参数为模块名,f参数为方法名 路由解析流程: $app->parseRequest() - 解析请求 $common->checkPriv() - 检查权限 $app->loadModule() - 加载模块 五、重点漏洞详细分析 5.1 禅道8.2-9.2.1 SQL注入漏洞 漏洞原理 位于 module/block/control.php 中的 printCaseBlock() 函数 orderby 参数未过滤直接拼接SQL语句 可构造 limit 部分闭合SQL语句并执行恶意代码 利用步骤: 构造SQL注入语句写入木马 将EXP进行ASCIIhex加密 构造payload: 对payload进行base64编码 访问: 5.2 禅道后台代码注入漏洞 漏洞原理 通过 module/api/control.php 中的 getModel 方法越权调用其他模块 可调用 editor 模块的 save 方法写入文件 再通过文件包含执行写入的代码 利用步骤: 登录获取cookie 访问生成shell: 包含执行shell: 5.3 禅道后台文件上传漏洞 漏洞原理 位于 module/client/model.php 中的 downloadZipPackage 函数 link 参数可使用HTTP/FTP/file等协议 可下载远程文件到服务器 利用步骤: 登录获取cookie 访问下载远程文件: 访问下载的文件执行: 5.4 禅道Pro命令注入漏洞 漏洞原理 位于 module/repo/model.php 中的 checkConnection 函数 client 参数未过滤直接拼接执行命令 利用步骤: 管理员登录 通过 /repo-create.html 页面的 client 参数执行命令: 可下载恶意软件或反弹shell 六、修复建议 升级到最新版本 : 开源版:升级至12.4.3或更高 Pro版:升级至8.8.2或更高 临时缓解措施 : 限制后台访问IP 加强文件上传和命令执行过滤 关闭不必要的模块和接口 安全配置 : 修改默认路由分隔符 加强权限验证机制 定期安全审计 七、总结 禅道项目管理系统的漏洞主要集中在: SQL注入导致的前台Getshell 后台越权调用导致的代码注入 文件上传和命令注入漏洞 这些漏洞大多需要一定权限,但危害严重,可导致服务器完全沦陷。建议用户及时升级并加强安全配置。