Tomcat渗透合集
字数 2036 2025-08-09 19:58:18

Tomcat渗透测试全面指南

1. Tomcat基础介绍

Tomcat是一个开源的轻量级Web应用服务器,广泛用于中小型系统和并发访问量不大的场景。它是开发和调试JSP程序的首选。

  • 版本信息:当前主流版本为7~10
  • 默认端口:8080
  • 运行要求:需要Java环境支持,版本需匹配(Tomcat 8+需要Java 7+)

2. Tomcat关键配置文件

2.1 核心配置文件

  1. server.xml:配置Tomcat启动的端口号、host主机、Context等
  2. web.xml:部署描述文件,包含默认servlet配置
  3. tomcat-users.xml:存储Tomcat用户密码与权限信息

2.2 上传目录

Tomcat默认上传目录位于webapps目录下,这是渗透测试中需要重点关注的区域。

3. Tomcat渗透漏洞详解

3.1 Tomcat任意文件写入漏洞(CVE-2017-12615)

影响范围

  • Apache Tomcat 7.0.0-7.0.81(默认配置)

漏洞原理

配置不当导致,当conf/web.xml中的readonly参数设置为false时,攻击者可以使用PUT方法上传任意文件。

复现步骤

  1. 使用vulhub环境搭建测试环境
  2. 通过PUT方法上传文件:
    PUT /test.txt HTTP/1.1
    Host: target:8080
    Content-Length: 5
    
    test
    

绕过jsp上传限制的方法

  1. Windows空格绕过PUT /shell.jsp%20 HTTP/1.1
  2. NTFS流绕过PUT /shell.jsp::$DATA HTTP/1.1
  3. 非法字符绕过PUT /shell.jsp/ HTTP/1.1

修复方案

conf/web.xml中的readonly参数改为true:

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

3.2 Tomcat远程代码执行漏洞(CVE-2019-0232)

影响范围

  • Apache Tomcat 9.0.0.M1 to 9.0.17
  • Apache Tomcat 8.5.0 to 8.5.39
  • Apache Tomcat 7.0.0 to 7.0.93

漏洞原理

CGIServlet组件在处理Windows平台上的命令行参数时存在缺陷,导致命令注入。

复现步骤

  1. 修改conf/web.xml启用CGIServlet:
    <servlet>
        <servlet-name>cgi</servlet-name>
        <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
        <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>
    </servlet>
    
  2. 修改conf/context.xml添加privileged="true"属性
  3. 创建测试文件并访问执行命令

修复方案

  1. 升级到修复版本(Tomcat 9.0.19+)
  2. 关闭enableCmdLineArguments参数

3.3 Tomcat弱口令与后台getshell漏洞

常见弱口令组合

  • 用户名/密码:tomcat/tomcat
  • 用户名/密码:admin/admin

利用方法

  1. 访问管理后台:http://target:8080/manager/html
  2. 上传WAR格式的webshell
  3. 自动部署后访问webshell

WAR包制作方法

  1. 将JSP马压缩为ZIP文件
  2. 修改后缀为.war
  3. 或使用命令:jar -cvf shell.war shell.jsp

MSF利用模块

use exploit/multi/http/tomcat_mgr_upload
set HttpUsername tomcat
set HttpPassword tomcat
set rhosts target_ip
set rport 8080
exploit

修复建议

  1. 修改默认密码为复杂密码
  2. 限制manager页面只允许本地IP访问
  3. 创建专用Tomcat服务用户并限制权限

3.4 Tomcat manager暴力破解

破解方法

  1. 抓取登录请求包
  2. 注意认证头是Base64编码的"用户名:密码"
  3. 使用Burp Suite等工具进行暴力破解

修复方案

  1. 取消manager/html功能
  2. 配置账户锁定机制
  3. 启用双因素认证

3.5 Tomcat AJP文件包含漏洞(CVE-2020-1938)

影响范围

  • 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

漏洞原理

AJP协议设计缺陷导致可以读取或包含Tomcat上所有webapp目录下的任意文件。

利用工具

使用公开的Python脚本:

python2 tomcat-ajp-lfi.py target_ip -p 8009 -f /WEB-INF/web.xml

文件包含RCE方法

  1. 上传包含恶意代码的txt文件
  2. 通过AJP协议包含执行

修复方案

  1. 升级到安全版本
  2. 禁用AJP协议(注释掉server.xml中的AJP Connector)
  3. 配置AJP认证

4. 综合防御建议

  1. 最小权限原则:以低权限运行Tomcat
  2. 及时更新:保持Tomcat版本为最新
  3. 配置加固
    • 禁用不必要的功能
    • 修改默认端口
    • 启用访问控制
  4. 日志监控:监控异常访问行为
  5. 网络隔离:将Tomcat部署在内网环境

5. 渗透测试工具集

  1. 漏洞扫描:Nmap, Nessus
  2. 暴力破解:Burp Suite, Hydra
  3. 漏洞利用:Metasploit, 公开PoC脚本
  4. Webshell管理:冰蝎, 蚁剑

通过全面了解这些漏洞和防御措施,安全人员可以更好地评估Tomcat服务器的安全性,并采取适当的防护措施。

Tomcat渗透测试全面指南 1. Tomcat基础介绍 Tomcat是一个开源的轻量级Web应用服务器,广泛用于中小型系统和并发访问量不大的场景。它是开发和调试JSP程序的首选。 版本信息 :当前主流版本为7~10 默认端口 :8080 运行要求 :需要Java环境支持,版本需匹配(Tomcat 8+需要Java 7+) 2. Tomcat关键配置文件 2.1 核心配置文件 server.xml :配置Tomcat启动的端口号、host主机、Context等 web.xml :部署描述文件,包含默认servlet配置 tomcat-users.xml :存储Tomcat用户密码与权限信息 2.2 上传目录 Tomcat默认上传目录位于webapps目录下,这是渗透测试中需要重点关注的区域。 3. Tomcat渗透漏洞详解 3.1 Tomcat任意文件写入漏洞(CVE-2017-12615) 影响范围 Apache Tomcat 7.0.0-7.0.81(默认配置) 漏洞原理 配置不当导致,当 conf/web.xml 中的 readonly 参数设置为false时,攻击者可以使用PUT方法上传任意文件。 复现步骤 使用vulhub环境搭建测试环境 通过PUT方法上传文件: 绕过jsp上传限制的方法 Windows空格绕过 : PUT /shell.jsp%20 HTTP/1.1 NTFS流绕过 : PUT /shell.jsp::$DATA HTTP/1.1 非法字符绕过 : PUT /shell.jsp/ HTTP/1.1 修复方案 将 conf/web.xml 中的 readonly 参数改为true: 3.2 Tomcat远程代码执行漏洞(CVE-2019-0232) 影响范围 Apache Tomcat 9.0.0.M1 to 9.0.17 Apache Tomcat 8.5.0 to 8.5.39 Apache Tomcat 7.0.0 to 7.0.93 漏洞原理 CGIServlet组件在处理Windows平台上的命令行参数时存在缺陷,导致命令注入。 复现步骤 修改 conf/web.xml 启用CGIServlet: 修改 conf/context.xml 添加 privileged="true" 属性 创建测试文件并访问执行命令 修复方案 升级到修复版本(Tomcat 9.0.19+) 关闭 enableCmdLineArguments 参数 3.3 Tomcat弱口令与后台getshell漏洞 常见弱口令组合 用户名/密码:tomcat/tomcat 用户名/密码:admin/admin 利用方法 访问管理后台: http://target:8080/manager/html 上传WAR格式的webshell 自动部署后访问webshell WAR包制作方法 将JSP马压缩为ZIP文件 修改后缀为.war 或使用命令: jar -cvf shell.war shell.jsp MSF利用模块 修复建议 修改默认密码为复杂密码 限制manager页面只允许本地IP访问 创建专用Tomcat服务用户并限制权限 3.4 Tomcat manager暴力破解 破解方法 抓取登录请求包 注意认证头是Base64编码的"用户名:密码" 使用Burp Suite等工具进行暴力破解 修复方案 取消manager/html功能 配置账户锁定机制 启用双因素认证 3.5 Tomcat AJP文件包含漏洞(CVE-2020-1938) 影响范围 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 漏洞原理 AJP协议设计缺陷导致可以读取或包含Tomcat上所有webapp目录下的任意文件。 利用工具 使用公开的Python脚本: 文件包含RCE方法 上传包含恶意代码的txt文件 通过AJP协议包含执行 修复方案 升级到安全版本 禁用AJP协议(注释掉server.xml中的AJP Connector) 配置AJP认证 4. 综合防御建议 最小权限原则 :以低权限运行Tomcat 及时更新 :保持Tomcat版本为最新 配置加固 : 禁用不必要的功能 修改默认端口 启用访问控制 日志监控 :监控异常访问行为 网络隔离 :将Tomcat部署在内网环境 5. 渗透测试工具集 漏洞扫描 :Nmap, Nessus 暴力破解 :Burp Suite, Hydra 漏洞利用 :Metasploit, 公开PoC脚本 Webshell管理 :冰蝎, 蚁剑 通过全面了解这些漏洞和防御措施,安全人员可以更好地评估Tomcat服务器的安全性,并采取适当的防护措施。