长亭百川云 - 文章详情

禅道开源版自动化安全审计

腾讯代码安全检查Xcheck

55

2024-07-13

0x00 禅道简介

ZenTaoPMS(ZenTao Project Management System),中文名为禅道项目管理软件。

禅道项目管理软件基于自主研发的PHP开发框架——禅道PHP框架开发而成。

禅道有四个版本,分别是开源版,专业版,企业版和集团版。

本文审计对象为禅道开源版,版本为v12.4.3。

0x01 禅道目录结构与路由

项目根目录如下图:项目根目录

其中framework目录包括具体路由分发的实现,这里细节不再展开,可参考《禅道pms-路由及漏洞分析》这篇,链接在文后。

framework目录

至于module目录,则是禅道应用程序具体功能的实现,包含60多个模块。

module目录

以其中一个模块为例,主要看control.php,model.php这两个文件。

模块示例

control.php中的函数可被用户请求直接访问到,下图为admin/control.php中的register函数,则访问请求为index.php?m=admin&f=register&from=1,请求中的from的值赋值给$from

即m为对应module,f为对应方法,方法的参数也与请求中的参数一一对应。

框架路由相关设置

0x02 CNVD-2020-65242 后台任意文件下载

漏洞入口位于file模块control.php中的sendDownHeader函数,

public function sendDownHeader($fileName, $fileType, $content, $type = 'content')   {     $this->file->sendDownHeader($fileName, $fileType, $content, $type);   }

其中,$this->file即当前模块目录中model.php中类对象的实例,这里为fileModel。

fileModel的sendDownHeader函数

漏洞代码位于922行,文件读取$content并输出,进入这个逻辑需要$file变量为字符串值file.

漏洞代码

所以漏洞触发为index.php?m=file&f=sendDownHeader&fileName=2&fileType=1&content=/etc/passwd&type=file

读取/etc/passwd

若存在open_basedir限制,可读取数据库配置文件:index.php?m=file&f=sendDownHeader&fileName=2&fileType=1&content=./../../config/my.php&type=file

读取配置文件

0x03 后台im模块downloadXxdPackage函数任意文件下载

漏洞代码

触发链接:index.php?m=im&f=downloadXxdPackage&xxdFileName=../../../../../../../../../etc/passwd

读取/etc/passwd

0x04 Xcheck适配与分析检查

禅道使用的框架是自研的一套禅道PHP框架,具有一定的复杂性,不在xcheck默认支持框架范围内。

对于框架的适配,xcheck这边均采用人工经验赋能检查器的思路进行相关规则的添加。从人工审计出发,将污点分析理论的关键点传递给检查器,使检查器能够理解新框架中的代码。

以本文的禅道为例,经过前面对路由请求的分析,可得以下人工审计经验:

  1. module目录下子模块中control.php函数可被用户直接访问,函数参数为用户请求参数,即污点

  2. file模块中$this->file即同模块当中的model.php中的fileModel对象,client模块中$this->client为同模块中model.php 中的clientModel对象,其他模块也类似

  3. 模块control.php中继承的父类control存在loadModel方法,loadModel方法为动态调用对象,如 $this->loadModel("file") 则调用的为file模块中model.php的fileModel对象

loadModel函数

通过将以上经验赋能给检查器,做一个禅道框架的简单适配,就可轻松检查发现项目中的安全漏洞。若由人工审计来做,对60多个子模块逐个审计,工作量可想而知。

downloadXxdPackage 任意文件下载

CNVD-2020-65242 后台任意文件下载

0x05 最后

对禅道的代码检查发现问题数较多,对于其中部分与业务密切相关导致利用失败的或者存在一定利用条件的,本文不再赘述。

由于是简单适配,相关分析和提及安全问题仅供参考,有兴趣的小伙伴可发送消息后台一起讨论交流。

0x06 参考


想了解Xcheck更多信息或者代码安全审计相关技术欢迎关注xcheck公众号~

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2