禅道 11.6版本 任意文件读取漏洞

漏洞描述

禅道 11.6 版本中对用户接口调用权限过滤不完善,导致调用接口执行SQL语句导致SQL注入

影响版本

Note

禅道 11.6

环境搭建

这里使用docker环境搭建

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

访问 http://xxx.xxx.xxx.xxx:8084 按步骤安装即可

漏洞复现

这里造成漏洞的原因同样是调用接口权限无限制的原因

接口出现漏洞的原因具体参考可以查看上一篇 禅道 11.6版本 SQL注入漏洞 关于此漏洞的完整分析

第一种方法

查看module/file/moudel.php下的parseCSV方法

这里可以看到以file为模块名、parseCSV为方法名去调用读取文件

读取的文件名$filename参数可控,例如读取/etc/passwd

注意以 .php .txt 结尾的会被 /framework/base/router.class.php中的parsePathInfo方法 过滤

第二种方法

查看module/api/moudel.php下的getMethod方法

这里与第一种大同小异,只是调用了不同模块的方法

看到$fileName = dirname($filePath);这段则为返回的目录名

所以读取/etc/passwd则需要写为/etc/passwd/1来绕过

Last updated

Was this helpful?