Tomcat中间件漏洞复现
字数 1708 2025-08-12 11:34:09

Tomcat中间件漏洞复现与防御指南

一、Tomcat基础介绍

Tomcat是一个开源的轻量级Web应用服务器,是Apache软件基金会的项目,主要用于开发和调试JSP程序。

Tomcat目录结构

  • bin:Tomcat启动与停止脚本
  • conf:Tomcat配置文件
    • server.xml:配置端口号、host主机、context等
    • web.xml:部署描述文件
    • tomcat-user.xml:用户密码和权限配置
  • lib:Tomcat依赖的jar文件
  • logs:日志文件,如catalina.out
  • temp:临时目录
  • webapps:默认站点路径
  • work:缓存目录

Tomcat连接器

Tomcat默认配置两个连接器:

  1. HTTP协议端口(默认8080)
  2. AJP协议端口(默认8009),用于处理AJP协议请求

二、Tomcat常见漏洞及复现

1. 任意文件写入漏洞(CVE-2017-12615)

漏洞原理
当Tomcat配置了readonly=false时,允许用户使用PUT和DELETE方法,导致可以向服务器写入文件。

影响版本

  • Apache Tomcat 7.0.0-7.0.81(默认配置)
  • 如果配置了默认servlet,则在9.0.1(Beta)、8.5.23、8.0.47和7.0.82之前的所有版本

复现步骤

  1. 检查conf/web.xmlreadonly设置为false
  2. 使用PUT方法上传文件:
    PUT /test.txt HTTP/1.1
    Host: target:8080
    Content-Length: 5
    
    test
    
  3. 绕过jsp文件过滤:
    PUT /test.jsp/ HTTP/1.1
    
  4. 使用冰蝎等工具连接上传的webshell

修复方案

  • readonly设置为true
  • 升级到安全版本

2. 文件包含漏洞(CVE-2020-1938)

漏洞原理
Tomcat AJP协议设计缺陷,攻击者可以读取或包含Tomcat上所有webapp目录下的任意文件。

影响版本

  • Apache Tomcat 6.x
  • 7.x < 7.0.100
  • 8.x < 8.5.51
  • 9.x < 9.0.31

复现步骤

  1. 确认8009端口开放
  2. 使用漏洞利用脚本读取文件:
    python CNVD-2020-10487-Tomcat-Ajp-lfi.py target -p 8009 -f WEB-INF/web.xml
    
  3. 文件包含执行命令:
    python CNVD-2020-10487-Tomcat-Ajp-lfi.py target -p 8009 --rce
    
  4. 上传jsp木马并包含执行

修复方案

  1. 禁用AJP协议,注释或删除conf/server.xml中的:
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    
  2. 升级到安全版本

3. 弱密码漏洞

漏洞原理
默认或弱密码导致后台管理界面被爆破。

复现步骤

  1. 检查tomcat-users.xml中的用户配置
  2. 尝试常见弱密码组合(如tomcat/tomcat)
  3. 登录后台后上传war包getshell

修复方案

  1. 删除不必要的目录(docs、examples、host-manager、manager等)
  2. 使用强密码策略
  3. 限制管理界面访问IP

4. 远程代码执行漏洞(CVE-2019-0232)

漏洞原理
Windows平台下CGI将命令行参数传递给程序时存在命令注入漏洞。

影响版本

  • 7.0.0 ~ 7.0.93
  • 8.5.0 ~ 8.5.39
  • 9.0.0 ~ 9.0.17

复现步骤

  1. 修改conf/context.xml添加privileged="true"
  2. 启用CGIServlet并配置:
    <init-param>
      <param-name>enableCmdLineArguments</param-name>
      <param-value>true</param-value>
    </init-param>
    <init-param>
      <param-name>executable</param-name>
      <param-value></param-value>
    </init-param>
    
  3. 创建恶意bat文件并访问触发命令执行

修复方案

  1. 关闭enableCmdLineArguments参数
  2. 升级到安全版本

三、防御建议

  1. 及时更新:保持Tomcat版本为最新安全版本
  2. 最小化配置
    • 禁用不必要的功能(如AJP、CGI)
    • 删除示例和测试应用
  3. 权限控制
    • 限制管理界面访问
    • 使用强密码和最小权限原则
  4. 安全配置
    • 设置readonly=true
    • 禁用PUT和DELETE方法
  5. 日志监控:定期检查访问日志和错误日志

四、工具与资源

  1. 漏洞检测工具:
  2. 漏洞利用框架:
    • Metasploit
    • 冰蝎(Behinder)
  3. 官方安全公告:

通过全面了解这些漏洞原理和防御措施,可以有效提升Tomcat服务器的安全性,防止攻击者利用这些漏洞获取系统权限。

Tomcat中间件漏洞复现与防御指南 一、Tomcat基础介绍 Tomcat是一个开源的轻量级Web应用服务器,是Apache软件基金会的项目,主要用于开发和调试JSP程序。 Tomcat目录结构 bin :Tomcat启动与停止脚本 conf :Tomcat配置文件 server.xml:配置端口号、host主机、context等 web.xml:部署描述文件 tomcat-user.xml:用户密码和权限配置 lib :Tomcat依赖的jar文件 logs :日志文件,如catalina.out temp :临时目录 webapps :默认站点路径 work :缓存目录 Tomcat连接器 Tomcat默认配置两个连接器: HTTP协议端口(默认8080) AJP协议端口(默认8009),用于处理AJP协议请求 二、Tomcat常见漏洞及复现 1. 任意文件写入漏洞(CVE-2017-12615) 漏洞原理 : 当Tomcat配置了 readonly=false 时,允许用户使用PUT和DELETE方法,导致可以向服务器写入文件。 影响版本 : Apache Tomcat 7.0.0-7.0.81(默认配置) 如果配置了默认servlet,则在9.0.1(Beta)、8.5.23、8.0.47和7.0.82之前的所有版本 复现步骤 : 检查 conf/web.xml 中 readonly 设置为false 使用PUT方法上传文件: 绕过jsp文件过滤: 使用冰蝎等工具连接上传的webshell 修复方案 : 将 readonly 设置为true 升级到安全版本 2. 文件包含漏洞(CVE-2020-1938) 漏洞原理 : Tomcat AJP协议设计缺陷,攻击者可以读取或包含Tomcat上所有webapp目录下的任意文件。 影响版本 : Apache Tomcat 6.x 7.x < 7.0.100 8.x < 8.5.51 9.x < 9.0.31 复现步骤 : 确认8009端口开放 使用漏洞利用脚本读取文件: 文件包含执行命令: 上传jsp木马并包含执行 修复方案 : 禁用AJP协议,注释或删除 conf/server.xml 中的: 升级到安全版本 3. 弱密码漏洞 漏洞原理 : 默认或弱密码导致后台管理界面被爆破。 复现步骤 : 检查 tomcat-users.xml 中的用户配置 尝试常见弱密码组合(如tomcat/tomcat) 登录后台后上传war包getshell 修复方案 : 删除不必要的目录(docs、examples、host-manager、manager等) 使用强密码策略 限制管理界面访问IP 4. 远程代码执行漏洞(CVE-2019-0232) 漏洞原理 : Windows平台下CGI将命令行参数传递给程序时存在命令注入漏洞。 影响版本 : 7.0.0 ~ 7.0.93 8.5.0 ~ 8.5.39 9.0.0 ~ 9.0.17 复现步骤 : 修改 conf/context.xml 添加 privileged="true" 启用CGIServlet并配置: 创建恶意bat文件并访问触发命令执行 修复方案 : 关闭enableCmdLineArguments参数 升级到安全版本 三、防御建议 及时更新 :保持Tomcat版本为最新安全版本 最小化配置 : 禁用不必要的功能(如AJP、CGI) 删除示例和测试应用 权限控制 : 限制管理界面访问 使用强密码和最小权限原则 安全配置 : 设置 readonly=true 禁用PUT和DELETE方法 日志监控 :定期检查访问日志和错误日志 四、工具与资源 漏洞检测工具: CNVD-2020-10487-Tomcat-Ajp-lfi 漏洞利用框架: Metasploit 冰蝎(Behinder) 官方安全公告: Apache Tomcat Security 通过全面了解这些漏洞原理和防御措施,可以有效提升Tomcat服务器的安全性,防止攻击者利用这些漏洞获取系统权限。