近日,国内安全公司长亭科技披露一个在 Tomcat 中潜伏十多年的安全漏洞——Ghostcat (幽灵猫),其编号为 CVE-2020-1938 。
据悉,Ghostcat(幽灵猫)由长亭科技安全研究员发现,它是存在于 Tomcat 中的安全漏洞。
由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。
Tomcat Connector 是 Tomcat 与外部连接的通道,它使得 Catalina 能够接收来自外部的请求,传递给对应的 Web 应用程序处理,并返回请求的响应结果。默认情况下,Tomcat 配置了两个 Connector,它们分别是 HTTP Connector 和 AJP Connector。
并且,在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。
影响过去 13 年所有 Apache Tomcat 版本
众所周知, Java 是目前 Web 开发中最主流的编程语言,而 Tomcat 是当前最流行的 Java 中间件服务器之一,从初版发布到现在已有二十多年历史,在世界范围内被广泛使用。
据长亭科技官方介绍,这个漏洞影响全版本默认配置下的 Tomcat(已确认影响 Tomcat 9/8/7/6 全版本),这意味着 Ghostcat 在 Tomcat 中潜伏十多年。
“通过 Ghostcat 漏洞,攻击者可以读取 Tomcat 所有 webapp 目录下的任意文件。”长亭科技在博客上写道。
此外,如果网站应用提供文件上传的功能,攻击者能先向服务端上传一个内容含有恶意 JSP 脚本代码的文件(上传的文件本身可以是任意类型的文件,比如图片、纯文本文件等),然后利用 Ghostcat 漏洞进行文件包含,从而达到代码执行的危害。
下列版本的 Tomcat 受 Ghostcat 漏洞影响:
- Apache Tomcat 9.x < 9.0.31
- Apache Tomcat 8.x < 8.5.51
- Apache Tomcat 7.x < 7.0.100
- Apache Tomcat 6.x
修复漏洞
长亭科技提示:对于处在漏洞影响版本范围内的 Tomcat 而言,若其开启 AJP Connector 且攻击者能够访问 AJP Connector 服务端口的情况下,即存在被 Ghostcat 漏洞利用的风险。
并且,Tomcat AJP Connector 默认配置下即为开启状态,且监听在 0.0.0.0:8009。
要正确修复 Ghostcat 漏洞,首先要确定服务器环境中是否有用到 Tomcat AJP 协议:
- 如果未使用集群或反向代理,则基本上可以确定没有用到 AJP;
- 如果使用了集群或反向代理,则需要看集群或反代服务器是否与 Tomcat 服务器 AJP 进行通信
早在 1 月初,长亭科技向 Apache Tomcat 官方提交漏洞。
目前,Tomcat 官方已经发布 9.0.31、8.5.51 及 7.0.100 版本针对此漏洞进行修复。因此,建议 Tomcat 用户尽快升级到最新版本。