Tomcat
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选
思路
我们首先要了解下Tomcat的下两个函数
org.apache.jasper.servlet.JspServlet
:默认处理jsp,jspx文件请求,不存在PUT上传逻辑,无法处理PUT请求
org.apache.catalina.servlets.DefaultServlet
:默认处理静态文件(除jsp,jspx之外的文件),存在PUT上传处理逻辑,可以处理PUT请求。
所以我们即使可以PUT一个文件到服务器但也无法直接PUT以jsp,jspx结尾文件,因为这些这些后缀的文件都是交由JspServlet处理的,它没法处理PUT请求。但是当我们利用Windows特性以下面两种方式上传文件时,tomcat并不认为其是jsp文件从而交由DefaultServlet处理,从而成功创建jsp文件
test.jsp%20 Windows下不允许文件名以空格结尾
test.jsp::$DATA Windows下NTFS文件格式
test.jsp/ 适合与Windows系统及Linux系统
当然这里的前提是Windows+配置文件readonly=false(支持PUT请求)
<init-param>
<param-name>readonly</param-name>
<param-value>false</param-value>
</init-param>
漏洞复现
docker部署完成后访问:8080
抓包
CVE-2020-1938
CVE-2020-1938:Tomcat AJP文件包含漏洞分析
Apache Tomcat 文件包含漏洞(CVE-2020-1938)威胁分析
tomcat8
思路
一个tomcat:tomcat弱口令登录上去,上传包含jsp的war包后在对应位置进行命令执行
Vulhub - Tomcat8 + 弱口令 && 后台getshell 漏洞复现