2019-08-25Tomcat任意文件上传(复现)CVE-2017-12615

环境安装,参考一条博客(https://www.jianshu.com/p/d8fbb4f4aa52)

或者是Docker安装:

安装docker

检查kernel内核是否在3.10以上:

uname -a

检查Device Mapper:

sudo grep device-mapper /proc/devices

确保apt能使用https方式并且CA证书已安装

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

卸载可能存在的旧版本

sudo apt-get remove docker docker-engine docker-ce docker.io

添加Docker官方的gpg密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

设置stable存储库

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

更新apt

sudo apt-get update

安装最新版

sudo apt-get install -y docker-ce

停止docker服务:

sudo service docker stop

重启docker

systemctl daemon-reload sudo service docker start

查看docker信息

sudo docker info

进入docker

使用docker attach进入Docker容器:

创建一个守护态的Docker容器,然后使用docker attach命令进入该容器。

sudo docker run -itd ubuntu:14.04 /bin/bash

使用docker ps查看到该容器信息,接下来就使用docker attach进入该容器

sudo docker attach 15a853491341

进入到docker里面

可以加载对应的docker镜像

部署环境:

获取环境:

拉取镜像到本地

docker pull medicean/vulapps:t_tomcat_1

成功拉取镜像

启动环境

docker run -d -p 8080:8080 medicean/vulapps:t_tomcat_1

-p 8080:8080 前面的 8080 代表物理机的端口,可随意指定

环境配置成功:

只是CVE-2017-12615(tomcat任意文件上传)web.xml的配置需要修改一下

tomcat这个漏洞,需要允许tomcat进行PUT操作,修改 /conf/web.xml

添加只读为false

重启tomcat服务

为什么要加一个readonly属性为false:

web.xml文件中,已经注释的地方说明了默认情况下readonly是true,并且如果是true的话,那么PUT和DELETE方法是被拒绝的,因此如果手动将readonly选项开启为false,那么就能够通过PUT方法上传文件了

前期准备工作完成。

实操漏洞复现:

启动环境

http://192.168.182.143:8080/

访问 http://192.168.182.143:8080/抓去数据包

PUT直接不行

PUT /shell.jsp  与  PUT /shell.jsp/ 一个成功一个失败

查阅资料发现,原来default servlet只能处理静态文件,而处理jsp文件是jspservlet,但是只有defaultservlet

有PUT上传逻辑,解决的办法是通过构造特殊的后缀名来进行绕过,从而上传jsp木马。

经过验证,可以在文件名后面添加斜杠 / 或者 %20来进行绕过,应为在windows下,%20(空格)和 / 都是不合法文件名。

查看文件上传到服务器Root目录下

上传一个利用的命令执行脚本:

http://192.168.182.143:8080/shell.jsp?password=secfree&&command=ls

http://192.168.182.143:8080/shell.jsp?password=secfree&&command=cat%20/etc/passwd

https://github.com/iBearcat/CVE-2017-12615(poc)

修复方案:

1、配置readonly和VirtualDirContext值为True或注释参数,禁止使用PUT方法并重启tomcat

注意:如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。

2、根据官方补丁升级最新版本

总结:

1、注意需要配置readonly为false。

2、put文件的时候需要加/ 或者%20 绕过。

https://www.jianshu.com/u/bf0e38a8d400(主页)

https://zhuanlan.zhihu.com/c_178411142(知乎主页)

你可能感兴趣的:(2019-08-25Tomcat任意文件上传(复现)CVE-2017-12615)