一个影响深远的“幽灵猫”漏洞
在2020年,一个名为 “幽灵猫”(Ghostcat) 的安全漏洞震惊了全球的Java Web应用生态。该漏洞被正式命名为 CVE-2020-1938,国内编号为 CNVD-2020-10487。它影响了全球数以万计使用Apache Tomcat作为Web服务器的系统,允许攻击者在无需认证的情况下,读取服务器上的敏感文件,甚至在特定条件下实现远程代码执行(RCE),获取服务器控制权。

作为一位专业的数码科技知识博主,本文将带你深入剖析这一经典漏洞的原理、影响范围、复现过程、利用方式及完整修复方案,帮助开发者和运维人员全面理解并防范此类安全风险。
漏洞简介:什么是“幽灵猫”(Ghostcat)?
CVE-2020-1938 是一个由Apache Tomcat服务器AJP(Apache JServ Protocol)协议处理缺陷引发的文件包含与任意文件读取漏洞。
漏洞核心原理
Tomcat默认开启AJP协议端口(通常是8009),用于与前端Web服务器(如Apache HTTP Server)进行高效通信。该协议在处理特定请求属性时存在缺陷,攻击者可以构造恶意的AJP请求包,操控以下三个关键参数:
javax.servlet.include.request_urijavax.servlet.include.path_infojavax.servlet.include.servlet_path
通过精心构造这些参数,攻击者可以绕过正常请求路径校验,触发Tomcat的DefaultServlet,从而实现对webapps目录下任意文件的读取或包含。
⚠️ 注意:由于AJP协议限制,攻击者无法使用
../进行路径遍历,因此可读取的文件范围被限制在webapps目录内,无法直接读取系统根目录文件(如/etc/passwd)。但webapps/WEB-INF/web.xml等配置文件的泄露,足以暴露数据库密码、应用结构等核心敏感信息。
影响范围:哪些版本的Tomcat受影响?
该漏洞影响范围广泛,涵盖Tomcat 6至9的多个旧版本。以下是官方确认的受影响版本:
| Tomcat 版本 | 安全版本(需升级至此或更高) |
|---|---|
| Apache Tomcat 9.x | < 9.0.31 |
| Apache Tomcat 8.x | < 8.5.51(部分资料为8.5.53) |
| Apache Tomcat 7.x | < 7.0.100 |
| Apache Tomcat 6.x | 所有版本 |
💡 建议:无论当前是否在受影响版本内,都应尽快升级至最新稳定版,并关闭不必要的AJP服务。
漏洞复现:如何验证系统是否受影响?
环境准备
靶机:运行受影响版本Tomcat(如Tomcat 8.5.32)的服务器,开放8080(HTTP)和8009(AJP)端口。
攻击机:Kali Linux或其他Linux系统,安装Python2环境。
工具:使用GitHub上的开源POC脚本,例如:
验证步骤
下载并进入POC目录:
执行文件读取测试:
将
192.168.1.100替换为你的目标IP。结果判断:
若成功返回
web.xml文件内容,则系统存在漏洞。若返回连接失败或无内容,则可能已修复或AJP服务未开启。
漏洞利用:从文件读取到GetShell
虽然该漏洞本身是文件读取,但结合文件上传功能,可升级为远程代码执行(RCE)。
利用前提
目标系统存在文件上传功能,且上传的文件(如JSP木马)能被保存在
webapps目录下。或者,攻击者已通过其他方式将WebShell上传至服务器。
GetShell 步骤简述
生成JSP反弹Shell:
将shell.jsp上传至目标服务器的webapps目录(可通过其他漏洞或权限)。
使用POC脚本包含并执行该JSP文件:
-c 1表示执行文件包含操作。在攻击机监听端口,接收反弹的Shell:
若成功,你将获得目标服务器的命令执行权限。
漏洞修复:三种有效防护方案
方案一:升级Tomcat版本(推荐)
最彻底的解决方案是升级到不受影响的版本:
Tomcat 9 → 升级至 9.0.31 或更高
Tomcat 8 → 升级至 8.5.51 或更高
Tomcat 7 → 升级至 7.0.100 或更高
方案二:关闭AJP服务(若无需使用)
如果系统不需要AJP协议(如未与Apache HTTP Server集成),直接关闭AJP连接器。
编辑
conf/server.xml文件。找到AJP连接器配置行并注释或删除:
重启Tomcat服务。
方案三:为AJP配置认证密钥(若需保留AJP)
如果必须使用AJP协议,可通过设置secret或requiredSecret参数增加认证。
Tomcat 7/9:
Tomcat 8:
🔐 安全提示:
secret值必须足够复杂,避免被暴力破解。
总结与建议
CVE-2020-1938(幽灵猫)是一个典型的“低门槛、高危害”漏洞。它提醒我们:
及时更新:保持中间件(如Tomcat、Nginx、Apache)的版本更新是安全防护的第一道防线。
最小化暴露:关闭不必要的服务端口(如8009),遵循“最小权限原则”。
纵深防御:即使存在文件上传功能,也应严格校验文件类型、后缀和内容,防止WebShell上传。
安全审计:定期使用专业工具对系统进行漏洞扫描。
作为开发者和运维人员,我们应时刻保持安全意识,防患于未然。希望本文能帮助你深入理解Tomcat 2020漏洞,并有效加固你的系统安全。
📌 关注我,获取更多网络安全、系统架构与数码科技干货!





















