【组件攻击链】禅道项目管理系统(ZenTaoPMS)高危漏洞分析与利用
字数 2856 2025-08-15 21:33:02
禅道项目管理系统(ZenTaoPMS)高危漏洞分析与利用指南
1. 禅道项目管理系统概述
1.1 系统简介
ZenTaoPMS(禅道项目管理软件)是一款基于Scrum敏捷项目管理方式开发的项目管理软件,主要功能包括:
- 产品管理
- 项目管理
- 质量管理
- 文档管理
- 组织管理
- 事务管理
1.2 版本系列
禅道项目管理软件分为四大系列:
- 开源版(2009-2020):基础版本,仅包含基本模块
- 专业版(2012-2020):在开源版基础上增加增强功能
- 企业版(2017-2020):在专业版基础上增加运维管理、OA办公等功能
- 集团版(2019-2020):包含主站平台和独立子站点架构
1.3 使用情况
- 全网使用量:超过4万个网站
- 主要分布:75%以上在国内,集中在广东、浙江、北京、上海
2. 禅道路由机制分析
2.1 路由模式
禅道支持两种路由模式:
-
PATH_INFO模式(默认):
- 格式:
user-login-L3plbnRhb3BtczEwLjMuMS93d3cv.html - 分隔符:
-(可在config/config.php中配置)
- 格式:
-
GET模式:
- 格式:
index.php?m=block&f=main&mode=getblockdata - 参数说明:
m:模块名(module)f:方法名(method)
- 格式:
2.2 路由解析流程
-
入口文件:index.php
-
主要处理函数:
$app->parseRequest():解析请求$common->checkPriv():检查权限$app->loadModule():加载模块
-
权限控制:
- 除
isOpenMethod列表中的方法外,其他方法均需要登录 - 开放方法包括:
captcha、ajaxgetdropmenu、ajaxgetmatcheditems等
- 除
3. 高危漏洞分析与利用
3.1 禅道8.2-9.2.1 SQL注入漏洞(前台Getshell)
漏洞描述
- 类型:SQL注入
- 影响版本:8.2 - 9.2.1
- 危害:高危,可导致Getshell
漏洞原理
- 漏洞位于ORM框架中
- 拼接order by语句时未对limit部分过滤
- 导致攻击者可构造执行任意SQL语句
利用步骤
- 访问不存在的路径获取文件存放路径(通过报错回显)
- 构造SQL注入语句写入木马
- 对EXP进行ASCIIhex加密
- 构造payload:
{ "orderBy":"order limit 1;SET @SQL=0x(加密后字符串);PREPARE pord FROM @SQL;EXECUTE pord;-- -", "num":"1,1", "type":"openedbyme" } - 对payload进行base64编码
- 通过以下URL执行漏洞:
http://target/zentao/index.php?m=block&f=main&mode=getblockdata&blockid=case¶m=base64加密字符串
代码分析
- 漏洞入口:
module/block/control.php中的main方法 - 关键漏洞点:
$order = join(',', $orders).$limit; - 攻击者可利用
limit参数闭合SQL语句并执行恶意代码
3.2 禅道后台代码注入漏洞(11.6以下版本)
漏洞描述
- 类型:代码注入
- 影响版本:开源版 < 11.6
- 危害:高危,可导致RCE
漏洞原理
- 普通权限用户可越权调用
getModel方法 - 可调用module目录下所有model模块和方法
- 导致SQL注入、任意文件读取、RCE等风险
利用步骤
- 登录获取cookie(
zentaosid) - 访问以下URL生成shell:
/api-getModel-editor-save-filePath - 文件包含执行shell:
/api-getModel-api-getMethod-filePath=
代码分析
- 漏洞入口:
module/api/control.php中的getModel方法 - 通过
call_user_func_array回调进入editor模块 editor模块的save函数使用file_put_contents写入文件api模块的getMethod通过include包含文件执行代码
3.3 禅道后台文件上传漏洞(12.4.3以下版本)
漏洞描述
- 类型:文件上传
- 编号:CNVD-C-2020-121325
- 影响版本:10.x < 禅道开源版 < 12.4.3
- 危害:高危,可导致RCE
漏洞原理
- 通过
fopen/fread/fwrite方法结合FTP/File协议 - 可上传或读取任意文件
利用步骤
- 登录获取cookie
- 访问以下URL下载远程文件:
/client-download-[version]-[base64加密的恶意文件地址]-1.html - 访问上传的文件执行代码:
/data/cliten/1/[文件名]
代码分析
- 漏洞入口:
module/client/control.php中的download方法 downloadZipPackage函数对link参数base64解码- 可使用HTTP/file/ftp等协议绕过限制
- 在
/data/client/${version}目录下创建文件并写入内容
3.4 禅道Pro版本命令执行漏洞(8.8.2及以下)
漏洞描述
- 类型:命令执行
- 编号:CVE-2020-7361
- CVSS评分:2.0-9.0/3.x-8.8
- 影响版本:禅道 Pro <= 8.8.2
- 危害:高危,SYSTEM权限执行命令
漏洞原理
/pro/repo-create.html文件存在OS命令注入- 通过
path参数注入命令
利用步骤
- 使用管理员账户登录
- 通过
client参数下载恶意软件:SCM=Git&name=test2&path=C%3A%5CProgramData&encoding=utf-8&client=cmd1 - 通过
client参数反弹shell:SCM=Git&name=test2&path=C%3A%5CProgramData&encoding=utf-8&client=cmd2
代码分析
- 漏洞入口:
module/repo/control.php中的create方法 checkConnection函数未对参数过滤command参数直接与2>&1拼接后传入exec执行
4. 漏洞利用链总结
4.1 无需权限利用链
- ZenTaoPMS (8.2-9.2.1) - GetShell
- 需要系统有文件写入权限
4.2 低权限利用链
- ZenTaoPMS <11.6 - GetShell
- 需要后台用户账号或cookie
4.3 管理员权限利用链
- ZenTaoPMS < 12.4.3 - GetShell
- 仅适用于未加安全限制的Windows/Linux一键安装版
- ZenTaoPMS Pro <= 8.8.2 - GetShell
- 命令执行无回显,可通过certutil.exe下载恶意软件
5. 防护建议
5.1 官方修复方案
- 及时升级到最新版本
- 下载地址:https://www.zentao.net/download.html
5.2 深信服解决方案
- 下一代防火墙:更新至最新版本
- 云盾:已自动更新防护规则
- 安全感知平台:可检测并告警攻击行为
- 安全运营服务:提供7*24小时漏洞扫描
- 安全云眼:提供30天免费安全体验
- 云镜:已发布检测能力,可检测网络中受影响系统
5.3 通用防护措施
- 限制后台访问IP
- 加强账号密码复杂度
- 定期审计系统日志
- 关闭不必要的服务和端口
- 及时备份重要数据
6. 总结
禅道项目管理软件作为国内广泛使用的项目管理工具,近年来爆出多个高危漏洞,攻击者可以利用这些漏洞获取系统权限。本文详细分析了多个高危漏洞的原理和利用方法,并提供了相应的防护建议。建议用户及时升级到最新版本,并采取适当的安全防护措施。