Tomcat 任意文件读取漏洞复现 CVE-2020-1938
字数 925 2025-08-11 00:08:50

Tomcat 任意文件读取漏洞(CVE-2020-1938)分析与复现指南

漏洞概述

漏洞名称: Tomcat AJP协议任意文件读取漏洞 (Ghostcat漏洞)
CVE编号: CVE-2020-1938
发现时间: 2020年
发现者: 长亭科技安全研究员
影响范围: 潜伏时间长达十多年,影响Tomcat全版本默认配置

受影响版本

  • Apache Tomcat = 6
  • 7.0.0 <= Apache Tomcat < 7.0.100
  • 8.0.0 <= Apache Tomcat < 8.5.51
  • 9.0.0 <= Apache Tomcat < 9.0.31

漏洞原理

  1. AJP协议缺陷: Tomcat的AJP(Apache JServ Protocol)协议在设计上存在安全缺陷
  2. 文件读取: 攻击者可通过Tomcat AJP Connector读取webapp目录下的任意文件
  3. 潜在RCE: 若目标应用有文件上传功能,配合文件包含可实现远程代码执行

漏洞危害

  • 读取敏感配置文件(如web.xml)
  • 获取应用程序源代码
  • 可能导致系统信息泄露
  • 在特定条件下可升级为远程代码执行

环境搭建与复现

准备工作

  1. 创建实验目录:

    mkdir tomcat-ghostcat
    cd tomcat-ghostcat
    
  2. 下载靶场启动脚本:

    wget repo.vulab.io/tomcat/CVE-2020-1938/1.0.1 -O tomcat-ghostcat
    
  3. 启动漏洞容器:

    sudo docker-compose -f tomcat-ghostcat up
    

验证服务

  1. 访问Tomcat服务(默认192.168.52.130)
  2. 使用nmap扫描端口:
    sudo nmap -v -sS -p1-9000 -Pn -T4 -A 192.168.52.130 --script http-methods
    
    确认8009(AJP协议端口)是否开放

漏洞检测

使用xray工具扫描:

xray_windows_386.exe servicescan --target 192.168.52.130:8009

利用POC

可使用公开POC验证漏洞:

python CNVD-2020-10487-Tomcat-Ajp-lfi.py -p 8009 192.168.52.130

修复方案

  1. 版本升级:

    • 升级到Tomcat 9.0.31+
    • 升级到Tomcat 8.5.51+
    • 升级到Tomcat 7.0.100+
  2. 禁用AJP协议:

    • 注释或删除server.xml中的AJP Connector配置
  3. 配置认证:

    • 设置AJP协议的secret和secretRequired属性
    • 示例配置:
      <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" 
                 secret="YOUR_SECRET_KEY" secretRequired="true" />
      

参考资源

  1. xray工具
  2. CNVD-2020-10487-Tomcat-Ajp-lfi
  3. 长亭科技Ghostcat漏洞分析

注意事项

  1. 实验应在授权环境下进行
  2. 生产环境应立即评估并修复
  3. 禁用AJP协议是最彻底的解决方案
  4. 升级后应进行完整测试确保业务不受影响
Tomcat 任意文件读取漏洞(CVE-2020-1938)分析与复现指南 漏洞概述 漏洞名称 : Tomcat AJP协议任意文件读取漏洞 (Ghostcat漏洞) CVE编号 : CVE-2020-1938 发现时间 : 2020年 发现者 : 长亭科技安全研究员 影响范围 : 潜伏时间长达十多年,影响Tomcat全版本默认配置 受影响版本 Apache Tomcat = 6 7.0.0 <= Apache Tomcat < 7.0.100 8.0.0 <= Apache Tomcat < 8.5.51 9.0.0 <= Apache Tomcat < 9.0.31 漏洞原理 AJP协议缺陷 : Tomcat的AJP(Apache JServ Protocol)协议在设计上存在安全缺陷 文件读取 : 攻击者可通过Tomcat AJP Connector读取webapp目录下的任意文件 潜在RCE : 若目标应用有文件上传功能,配合文件包含可实现远程代码执行 漏洞危害 读取敏感配置文件(如web.xml) 获取应用程序源代码 可能导致系统信息泄露 在特定条件下可升级为远程代码执行 环境搭建与复现 准备工作 创建实验目录: 下载靶场启动脚本: 启动漏洞容器: 验证服务 访问Tomcat服务(默认192.168.52.130) 使用nmap扫描端口: 确认8009(AJP协议端口)是否开放 漏洞检测 使用xray工具扫描: 利用POC 可使用公开POC验证漏洞: 修复方案 版本升级 : 升级到Tomcat 9.0.31+ 升级到Tomcat 8.5.51+ 升级到Tomcat 7.0.100+ 禁用AJP协议 : 注释或删除server.xml中的AJP Connector配置 配置认证 : 设置AJP协议的secret和secretRequired属性 示例配置: 参考资源 xray工具 CNVD-2020-10487-Tomcat-Ajp-lfi 长亭科技Ghostcat漏洞分析 注意事项 实验应在授权环境下进行 生产环境应立即评估并修复 禁用AJP协议是最彻底的解决方案 升级后应进行完整测试确保业务不受影响