实战之低版本tomcat-getshell
字数 901 2025-08-12 11:34:39
低版本Tomcat Getshell实战教学文档
环境背景
- 目标系统: Linux
- Tomcat版本: 6.0
- 初始发现: 存在弱口令漏洞
常规War包上传尝试
第一次尝试
- 直接修改文件后缀为.war尝试上传
- 结果: 部署失败,显示"false"
- 尝试点击"start"也无法成功部署
- 无法通过web访问上传的war包
War包生成方式改进
- 使用标准命令生成war包:
jar cvf jmc.war ./ - 结果: war包成功部署
- 问题: 访问时出现502错误
JSP文件问题排查
- 尝试将jsp文件改为txt后缀上传
- 结果: txt文件可以正常访问
- 结论: 问题出在jsp文件处理或目录结构上
JSP马子尝试
- 测试了多种低版本兼容的jsp马子:
- 1.8jdk版本的马子
- 各种低版本兼容马子
- 命令执行马子
- 大马
- 结果: 均无法正常工作
目录结构尝试
- 尝试多层目录结构部署
- 结果: 仍然失败
Axis2部署突破方案
发现思路
- 研究axis2与tomcat的上传问题
- Axis2可以通过aar后缀文件进行部署
实施步骤
- 获取合适的aar包(从GitHub找到其他师傅分享的aar包)
- 通过aar后缀进行部署
- 结果: 成功部署
最终成果
- 成功获取shell
- 解决了低版本Tomcat常规war包部署失败的问题
关键知识点总结
-
Tomcat 6.0特性:
- 对某些war包部署方式有特殊要求
- JSP处理可能存在兼容性问题
-
War包生成:
- 必须使用标准jar命令生成
- 直接修改后缀可能导致部署失败
-
Axis2部署:
- 可作为低版本Tomcat的替代部署方案
- 使用aar后缀而非war
- 需要特定构造的aar包
-
问题排查流程:
- 从简单到复杂逐步尝试
- 通过txt文件验证基础功能
- 关注错误代码(如502)的含义
防御建议
-
针对管理员:
- 升级Tomcat到最新版本
- 修改默认密码为强密码
- 限制上传文件类型
- 监控部署目录变化
-
针对开发者:
- 避免在生产环境使用低版本Tomcat
- 禁用不必要的部署功能
- 实现文件上传白名单机制
-
针对安全人员:
- 了解低版本Tomcat的特殊利用方式
- 收集各类aar利用包
- 掌握多种部署失败时的替代方案