Tomcat
常见的一个中间件。百科介绍:Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
一些gadgets
以下方式都可以成功响应
1、正常请求
http://localhost:8080/urltest/index.jsp
2、"./"
http://localhost:8080/urltest/./././index.jsp
3、"../" 和 "..;/"
http://localhost:8080/urltest/noexist/../index.jsp
http://localhost:8080/urltest/noexist/..;/index.jsp
4、";/"
http://localhost:8080/urltest/;/;/;/index.jsp
5、";xxx/"
http://localhost:8080/urltest/;a/;bb/;ccc/index.jsp
任意文件上传(CVE-2017-12615)
影响版本:Apache Tomcat 7.0.0 - 7.0.81
当 Tomcat运行在Windows操作系统时,且启用了HTTP PUT请求方法,攻击者将有可能可通过精心构造的攻击请求数据包向服务器上传包含任意代码的 JSP 文件,JSP文件中的恶意代码将能被服务器执行,导致获取服务器权限。
利用方式
PUT /test.jsp%20
PUT /test.jsp::$DATA
经过测试,当 PUT 地址为/test.jsp/时,仍然会创建 JSP,这么便会影响 Linux 和 Windows 服务器,并且 Bypass 了之前的补丁
PUT /test.jsp/
所以由于存在去掉最后的 / 的特性,自然这个漏洞影响 Linux 以及 Windows 版本。且影响全部的 Tomcat 版本,从 5.x 到 9.x 。目前来说,最好的解决方式是将 conf/web.xml 中对于 DefaultServlet 的 readonly 设置为 true,才能防止漏洞。
Ajp协议文件包含(CVE-2020-1938)(CNVD-2020-10487)
影响版本:
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31
Tomcat AJP默认开放在8009端口,直接poc执行
因此,若不需要使用Tomcat AJP协议,可直接关闭AJP Connector,编辑