Tomcat是一个独立的服务器,它可以用作Java应用程序的Web服务器,也可以作为Servlet容器集成到其他Web服务器(例如Apache HTTP服务器)中。它可以处理HTTP请求,并将它们传递给相应的Servlet或JSP进行处理,然后将结果返回给客户端。
Tomcat提供了许多功能,包括连接池、会话管理、安全性、Web应用程序部署、负载均衡等。它是Java企业级Web应用程序的常用部署环境,广泛用于开发和部署Java Web应用程序和服务。
笔者通过对数百个真实项目引入组件的分析选出了Tomcat组件的常见漏洞进行分析。本次分析的是CVE-2017-5648。该漏洞是Tomcat-catalina组件处理访问错误资源请求时,如404,500,此时若服务器存在自定义的错误页面则会将请求交给DefaultServlet处理,从而可能导致错误页面被重写。
漏洞编号:CVE-2017-5664
漏洞类型:CWE-755 异常情况处理不当
CVSS评分:CVSS v3.1:7.5
漏洞危害等级:高危
Apache Tomcat 8.5.0 ~ 8.5.14
Apache Tomcat 8.0.0.RC1 ~ 8.0.43
Apache Tomcat 7.0.0 ~ 7.0.77
其配置在$CATALINA_BASE/conf/web.xml文件中,其readonly属性默认为true,意味着HTTP请求方法的PUT或DELETE是被拒绝的。
- 升级Tomcat至该漏洞不存在的版本
更新 Apache Tomcat >= 9.0.0.M21
更新 Apache Tomcat >= 8.5.15
更新 Apache Tomcat >= 8.0.44
更新 Apache Tomcat >= 7.0.78
Tomcat官方的修复方案是在Service方法中多了一次验证,如果是因为错误转发过来的则当作GET处理请求。
https://tomcat.apache.org/
- 修改web.xml配置
将DefaultServlet的ReadOnly属性设置为true,让该Servlet拒绝PUT,DELETE请求。
- 更改自定义错误页面文件类型
静态的请求才会由DefaultServlet,也就.html文件。如果自定义的错误页面为404.jsp,就会由jspServlet对转发的请求进行处理。
安全工程师:hu1y40
2023 年 8 月 11 日晚
作者:洞源实验室