【组件攻击链】禅道项目管理系统(ZenTaoPMS)高危漏洞分析与利用
字数 2856 2025-08-15 21:33:02

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

1. 禅道项目管理系统概述

1.1 系统简介

ZenTaoPMS(禅道项目管理软件)是一款基于Scrum敏捷项目管理方式开发的项目管理软件,主要功能包括:

  • 产品管理
  • 项目管理
  • 质量管理
  • 文档管理
  • 组织管理
  • 事务管理

1.2 版本系列

禅道项目管理软件分为四大系列:

  1. 开源版(2009-2020):基础版本,仅包含基本模块
  2. 专业版(2012-2020):在开源版基础上增加增强功能
  3. 企业版(2017-2020):在专业版基础上增加运维管理、OA办公等功能
  4. 集团版(2019-2020):包含主站平台和独立子站点架构

1.3 使用情况

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

2. 禅道路由机制分析

2.1 路由模式

禅道支持两种路由模式:

  1. PATH_INFO模式(默认):

    • 格式:user-login-L3plbnRhb3BtczEwLjMuMS93d3cv.html
    • 分隔符:-(可在config/config.php中配置)
  2. GET模式

    • 格式:index.php?m=block&f=main&mode=getblockdata
    • 参数说明:
      • m:模块名(module)
      • f:方法名(method)

2.2 路由解析流程

  1. 入口文件:index.php

  2. 主要处理函数:

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

    • isOpenMethod列表中的方法外,其他方法均需要登录
    • 开放方法包括:captchaajaxgetdropmenuajaxgetmatcheditems

3. 高危漏洞分析与利用

3.1 禅道8.2-9.2.1 SQL注入漏洞(前台Getshell)

漏洞描述

  • 类型:SQL注入
  • 影响版本:8.2 - 9.2.1
  • 危害:高危,可导致Getshell

漏洞原理

  • 漏洞位于ORM框架中
  • 拼接order by语句时未对limit部分过滤
  • 导致攻击者可构造执行任意SQL语句

利用步骤

  1. 访问不存在的路径获取文件存放路径(通过报错回显)
  2. 构造SQL注入语句写入木马
  3. 对EXP进行ASCIIhex加密
  4. 构造payload:
    {
      "orderBy":"order limit 1;SET @SQL=0x(加密后字符串);PREPARE pord FROM @SQL;EXECUTE pord;-- -",
      "num":"1,1",
      "type":"openedbyme"
    }
    
  5. 对payload进行base64编码
  6. 通过以下URL执行漏洞:
    http://target/zentao/index.php?m=block&f=main&mode=getblockdata&blockid=case&param=base64加密字符串
    

代码分析

  1. 漏洞入口:module/block/control.php中的main方法
  2. 关键漏洞点:$order = join(',', $orders).$limit;
  3. 攻击者可利用limit参数闭合SQL语句并执行恶意代码

3.2 禅道后台代码注入漏洞(11.6以下版本)

漏洞描述

  • 类型:代码注入
  • 影响版本:开源版 < 11.6
  • 危害:高危,可导致RCE

漏洞原理

  • 普通权限用户可越权调用getModel方法
  • 可调用module目录下所有model模块和方法
  • 导致SQL注入、任意文件读取、RCE等风险

利用步骤

  1. 登录获取cookie(zentaosid)
  2. 访问以下URL生成shell:
    /api-getModel-editor-save-filePath
    
  3. 文件包含执行shell:
    /api-getModel-api-getMethod-filePath=
    

代码分析

  1. 漏洞入口:module/api/control.php中的getModel方法
  2. 通过call_user_func_array回调进入editor模块
  3. editor模块的save函数使用file_put_contents写入文件
  4. api模块的getMethod通过include包含文件执行代码

3.3 禅道后台文件上传漏洞(12.4.3以下版本)

漏洞描述

  • 类型:文件上传
  • 编号:CNVD-C-2020-121325
  • 影响版本:10.x < 禅道开源版 < 12.4.3
  • 危害:高危,可导致RCE

漏洞原理

  • 通过fopen/fread/fwrite方法结合FTP/File协议
  • 可上传或读取任意文件

利用步骤

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

代码分析

  1. 漏洞入口:module/client/control.php中的download方法
  2. downloadZipPackage函数对link参数base64解码
  3. 可使用HTTP/file/ftp等协议绕过限制
  4. /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参数注入命令

利用步骤

  1. 使用管理员账户登录
  2. 通过client参数下载恶意软件:
    SCM=Git&name=test2&path=C%3A%5CProgramData&encoding=utf-8&client=cmd1
    
  3. 通过client参数反弹shell:
    SCM=Git&name=test2&path=C%3A%5CProgramData&encoding=utf-8&client=cmd2
    

代码分析

  1. 漏洞入口:module/repo/control.php中的create方法
  2. checkConnection函数未对参数过滤
  3. command参数直接与2>&1拼接后传入exec执行

4. 漏洞利用链总结

4.1 无需权限利用链

  • ZenTaoPMS (8.2-9.2.1) - GetShell
  • 需要系统有文件写入权限

4.2 低权限利用链

  • ZenTaoPMS <11.6 - GetShell
  • 需要后台用户账号或cookie

4.3 管理员权限利用链

  1. ZenTaoPMS < 12.4.3 - GetShell
    • 仅适用于未加安全限制的Windows/Linux一键安装版
  2. ZenTaoPMS Pro <= 8.8.2 - GetShell
    • 命令执行无回显,可通过certutil.exe下载恶意软件

5. 防护建议

5.1 官方修复方案

  • 及时升级到最新版本
  • 下载地址:https://www.zentao.net/download.html

5.2 深信服解决方案

  1. 下一代防火墙:更新至最新版本
  2. 云盾:已自动更新防护规则
  3. 安全感知平台:可检测并告警攻击行为
  4. 安全运营服务:提供7*24小时漏洞扫描
  5. 安全云眼:提供30天免费安全体验
  6. 云镜:已发布检测能力,可检测网络中受影响系统

5.3 通用防护措施

  1. 限制后台访问IP
  2. 加强账号密码复杂度
  3. 定期审计系统日志
  4. 关闭不必要的服务和端口
  5. 及时备份重要数据

6. 总结

禅道项目管理软件作为国内广泛使用的项目管理工具,近年来爆出多个高危漏洞,攻击者可以利用这些漏洞获取系统权限。本文详细分析了多个高危漏洞的原理和利用方法,并提供了相应的防护建议。建议用户及时升级到最新版本,并采取适当的安全防护措施。

禅道项目管理系统(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: 对payload进行base64编码 通过以下URL执行漏洞: 代码分析 漏洞入口: 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: 文件包含执行shell: 代码分析 漏洞入口: 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下载远程文件: 访问上传的文件执行代码: 代码分析 漏洞入口: 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 参数下载恶意软件: 通过 client 参数反弹shell: 代码分析 漏洞入口: 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. 总结 禅道项目管理软件作为国内广泛使用的项目管理工具,近年来爆出多个高危漏洞,攻击者可以利用这些漏洞获取系统权限。本文详细分析了多个高危漏洞的原理和利用方法,并提供了相应的防护建议。建议用户及时升级到最新版本,并采取适当的安全防护措施。