漏洞简介
漏洞描述:前台权限绕过,可以调用后台的功能,可配合后台的远程命令执行漏洞
影响版本:
禅道系统 | 影响版本 |
---|---|
开源版 | 17.4以下的未知版本<=version<=18.0.beta1 |
旗舰版 | 3.4以下的未知版本<=version<=4.0.beta1 |
企业版 | 7.4以下的未知版本<=version<=8.0.beta1 8.0.beta2 |
漏洞分析
环境搭建
源码下载地址:https://www.zentao.net/dynamic/zentaopms18.0.beta1-81862.html
权限绕过
这里出现权限绕过的原因,就是当他判断你权限出问题后,处理方式不是直接return,而是丢出一个异常,这就导致代码仍然往下执行,触发loadModule
这里判断没有权限,然后进入deny
进入deny后,由于没有权限,所以利用的这个end,直接抛出异常,但是程序仍然进行
这里进入catch,发现只是echo出来,程序没退出
直接loadModule了
但是这里还有一个先决条件,他判断权限之前,还有一层判断,这里必须得有一个$this->app->user
|
|
所以你的zentaosid还不能随便写,得写一个注册了的,而zentaosid可以在这里注册
注册了zentaosid后,就可以在前面绕过权限了,所以我们就可以研究后台有什么漏洞可以组合利用
命令执行
命令执行的调用栈
首先loadModule到edit里
进入update,在update里进入checkConnection
到这里解析POST数据,然后当scm为Subversion的时候,client参数进行命令注入
漏洞修复
权限绕过修复
可以看到权限绕过的修复的也很简单,只需要把他die掉,不会继续往下loadModule就可以了,
命令执行修复
然后对于命令执行的修复,在update这里进行了一个checkClient,检测post表单中的client是否非法
参考链接: