基于Vulhub靶场 | CVE-2017-12615 Tomcat文件上传漏洞
一、漏洞简述
漏洞产生原因:
1、开启PUT请求方法
2、配置不当(非默认配置):将配置文件conf/web.xml中的readonly参数设置为false。
这样将导致可以使用PUT方法上传任意文件(tomcat的安全机制是不允许直接上传.jsp的文件,但是可以绕过上传),可以在用户服务器上执行任意代码,可能会导致用户获取服务器的权限使数据遭到篡改、泄露。
漏洞影响范围:
Apache Tomcat 7.0.0-7.0.81
漏洞修复方法:
1、禁用PUT方法(如果应用依赖PUT方法,可参考下面方法)
2、升级Apache Tomocat版本为7.0.81以上
3、将配置文件conf/web.xml中的readonly参数设置为ture
4、安全防护系统/软件,如WAF等。
漏洞绕过方法:
Linux服务器部署
/绕过:因为 / 在文件名中是非法的,会被去除【1.jsp/】
Windows服务器部署
/绕过:因为 / 在文件名中是非法的,会被去除【1.jsp/】
%20绕过:Windows文件不允许以空格结尾,空格会被自动去掉【1.jsp%20】
Windows NTFS流绕过:【1.jsp::$DATA】
二、漏洞复现环境
靶场:Linux通过Docker部署的Vulhub(Vulhub靶场文件所在位置:vulhub/tomcat/CVE-2017-12615)
工具:BurpSuite、冰蝎/菜刀/哥斯拉等
三、漏洞复现过程
1、进入靶场目录,启动靶场环境
[root@localhost CVE-2014-0160]# cd /usr/vulhub/tomcat/CVE-2017-12615/
2、查看配置文件conf/web.xml中的readonly参数被设置未false(写入权限),这样设置导致我们可以将文件写入服务器。
[root@localhost ~]# docker exec -ti 【CONTAINER ID】 bash //进入目录
3、 Web界面访问靶场环境【IP:8080】
4 、查看请求方法是GET
5、修改GET未PUT测试上传文件成功
6、查看服务器文件,成功上传1.txt文件
7、测试上传可执行文件.jsp
直接传会报错
1、/绕过
查看服务器,上传成功
2、%20(空格绕过)
查看服务器,上传成功
3、Windows NTFS流绕过
jsp后添加::$DATA
查看服务器,上传成功