CVE中文申请站

一、漏洞摘要

漏洞名称: doccms后台模板getshell
上报日期: 2018-10-27
漏洞发现者: kr1sten
产品首页: http://www.doccms.com/
软件链接: http://www.doccms.com/?p=40
版本: 2016.5.12[正式版]
CVE编号: CVE-2018-18835


二、漏洞概述

后台模板上传位置 未检查上传内部的代码 导致getshell。

三、利用方法

登录后台发现后台具有上传功能,且限定了格式。
1.png

首先找到自带的模板的位置,然后复制一份改个名字,打包成压缩文件再上传的时候进行抓包 看其调用的方法,可以看到 burp抓取到的数据包已经显示出来了,从其中可以看到他调用了system文件夹下的changeskin.php这个文件的upload_template函数,于是我们定位到这个函数 看看他的代码是怎么样的逻辑。
4.png
5.png
从第八行开始到第三十一行之间 就是处理上传模板这个功能的代码逻辑,分析一下:
6.png

15-16行就是定义一个临时的保存路径:
7.png

17-29行,第一个if判断是不是一个zip文件,如果是文件就进入真区间进行下一步的判断,然后进行解压 如果解压成功就安装成功否则失败,如果不是zip文件就提示上传失败 最后重定向回模板管理的页面。代码中有一点没考虑到,只是判断是不是zip文件,并没有判断文件里面是不是有某些威胁的存在。于是可以在模板文件里面构造攻击代码,比如写一个一句话木马或者直接在模板文件的某php文件里面写入一句话木马代码。比如在原先的模板文件里面新建一个文件夹 此处叫做test文件夹,在里面新建一个php文件,写入<?php phpinfo();?> 然后在进行打包上传。
8.png
上传成功后,点击一下“应用到pc站” 然后去前台看效果。
10.png

直接访问模板url地址返回403错误码,说明模板目录访问权限控制。
11.png
通过修改原来模板文件里的index.php代码,比如在最前面加上一句phpinfo的代码,再重复上传-应用的步骤,前台效果如下:
12.png

代码成功的被执行了,换成一句话木马代码上传并应用,再用菜刀进行连接,如下:
14.png

四、参考信息

CVE中文申请网:http://www.iwantacve.cn/index.php/archives/65/
CVE官方:http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-18835
exploit-db:发布中

标签: doccms, getshell