一、漏洞信息
tomcat put方法任意写文件介绍:
当 Tomcat 运行在 Windows 主机上,且启用了 HTTP PUT 请求方法(例如,将 readonly 初始化参数由默认值设置为 false),攻击者将有可能可通过精心构造的攻击请求向服务器上传包含任意代码的 JSP 文件。之后,JSP 文件中的代码将能被服务器执行。
2、漏洞原理:
漏洞本质Tomcat配置了可写(readonly=false),导致我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进行读写操作。
这里还有一个细节:
其实tomcat会对上传的文件内容进行限制,比如说禁止上传 .jpg 后缀的文件,只不过,这个过滤机制可以通过一些windows 或着 linux的特性绕过。
3、影响版本:
CVE-2017-12616影响范围:Apache Tomcat 7.0.0 - 7.0.80
CVE-2017-12615影响范围:Apache Tomcat 7.0.0 - 7.0.79
从 5.x 到 9.x 均受到影响
本次测试版本:Tomcat版本:8.5.19
4、绕过上传方式
①Windows下 Windows下不允许文件以空格结尾
PUT /x.jsp%20 HTTP/1.1
②windows会被自动去掉末尾空格 Windows NTFS流
PUT /x.jsp::