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

2021-07-08 8,233

image32.png

0x00 禅道简介

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

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

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

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

image.png

0x01 禅道目录结构与路由

项目根目录如下图:

image.png

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


image.png

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

image.png

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

image.png

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

image.png


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

image.png

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

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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

image.png

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对象

image.png

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

image.png

image.png

0x05 最后

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

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

0x06 参考

  • 《禅道pms-路由及漏洞分析》https://www.anquanke.com/post/id/160473

  • 《【组件攻击链】禅道项目管理系统(ZenTaoPMS)高危漏洞分析与利用》https://mp.weixin.qq.com/s/LIugWEiETPwYmmLwZLe7Ag


专注于代码安全 | 公众号:腾讯代码安全检查Xcheck

本文作者:Xcheck

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/162217.html

Tags:
评论  (0)
快来写下你的想法吧!

Xcheck

文章数:9 积分: 65

专注于代码安全 | 公众号:腾讯代码安全检查Xcheck

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号