游客发表

APACHE TOMCAT常见漏洞补丁

发帖时间:2026-10-17 04:47:39

Tomcat 的漏洞漏洞补丁,很多人是补丁等出了事才去查。去年有个做电商的漏洞朋友,服务器被挖矿程序占满 CPU,补丁排查半天发现是漏洞 Tomcat 的 Ghostcat 漏洞(CVE-2020-1938)。他用的补丁还是 8.5.50 版本,AJP 端口没关,漏洞攻击者直接读到了 WEB-INF 下的补丁配置文件。这事不复杂,漏洞补丁早就发了,补丁只是漏洞没人管。

Tomcat 的补丁漏洞大体分几类:信息泄露、远程代码执行、漏洞拒绝服务。补丁每类对应的漏洞补丁策略不一样,但核心逻辑就一条——版本要对,配置要改。

Ghostcat:AJP 协议的老问题

CVE-2020-1938 影响 Tomcat 6、7、8、9 多个版本。问题出在 AJP 协议上,默认监听 8009 端口,攻击者可以通过它读取应用目录下的任意文件。如果应用允许文件上传,还能进一步 getshell。

修复方式有两种。升级到 9.0.31、8.5.51、7.0.100 及以上版本,这是最省事的。如果暂时不能升级,直接注释掉 server.xml 里的 AJP Connector:

<!-- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -->

我见过不少运维图省事,只改了端口没禁协议,这等于没补。AJP 如果确实要用,必须配 secretRequired 和 allowedRequestAttributesPattern,但大多数场景下直接关掉最干净。

反序列化漏洞:CVE-2019-0232 和它的变种

Windows 环境下 Tomcat 的 CGI Servlet 有个命令注入漏洞,CVE-2019-0232。enableCmdLineArguments 默认开启时,攻击者能通过 URL 参数执行系统命令。这个漏洞只在 Windows 上触发,但危害直接——服务器权限直接丢。

补丁在 9.0.18、8.5.40、7.0.94 里。如果还在用老版本,把 conf/web.xml 里的 enableCmdLineArguments 改成 false:

<init-param> <param-name>enableCmdLineArguments</param-name> <param-value>false</param-value> </init-param>

另外 CGI Servlet 本身就不该在生产环境开着。我经手的服务器里,十个有八个 web.xml 里 CGI 配置还留着,虽然没映射 .cgi 请求,但保不齐哪天有人手抖加上去。

文件上传与 JSP 编译漏洞

CVE-2017-12615 是个 PUT 方法任意文件写入漏洞。Tomcat 的 DefaultServlet 在 readonly 设为 false 时,允许通过 PUT 上传 JSP 文件。攻击者传个 shell.jsp 上去,直接就是 webshell。

修复很简单,conf/web.xml 里确认 readonly 是 true:

<init-param> <param-name>readonly</param-name> <param-value>true</param-value> </init-param>

但有些业务需要 WebDAV,那就得升级到 9.0.10、8.5.31、7.0.83 以上。这些版本对 PUT 做了更严格的路径校验。

Session 持久化与 DoS

CVE-2020-9484 是 Session 持久化导致的反序列化漏洞。攻击者控制 session 文件路径,触发 RCE。影响 10.0.0-M1 到 M4、9.0.0.M1 到 9.0.34、8.5.0 到 8.5.54、7.0.0 到 7.0.103。

补丁版本是 10.0.0-M5、9.0.35、8.5.55、7.0.104。如果没法升级,关掉 PersistentManager 的 session 文件存储,或者确保 session 文件目录不可被外部写入。

还有一类是慢速攻击,比如 CVE-2020-13935,WebSocket 帧处理不当导致 CPU 打满。升级到 9.0.37、8.5.57、7.0.105 就行。这类漏洞不直接 getshell,但能把服务拖垮,云环境里按量计费的话,账单会很难看。

补丁之外的事

版本升级是最直接的,但很多人卡在业务兼容性上。我的建议是:先升小版本,比如 8.5.x 升到 8.5.100,再考虑跨大版本。跨大版本前,把 web.xml、server.xml、context.xml 里的自定义配置列出来,对照官方迁移文档逐条改。

另外,Tomcat 的 manager 和 host-manager 应用默认是关的,但有些安装包会带上。如果不需要,直接删掉 webapps 下的 manager 和 host-manager 目录。这个不算漏洞,但能减少攻击面。

最后说个细节:Tomcat 的版本号在 404 页面和响应头里会暴露。改 conf/server.xml 的 Server 属性,或者用防火墙规则把 Server 头抹掉。不是必须的,但能省掉一些自动化扫描的骚扰。

补丁这事,别等出事再补。定个季度检查,看看 Tomcat 版本和官方安全公告的差距,比事后救火便宜得多。

    热门排行

    友情链接