05. 練習用の的(ターゲット)を立てる 🎯¶
🔊 音声で聴く
攻撃を学ぶには「攻撃していい的」が必要です。 ここではわざと脆弱に作られた練習用アプリを、自分のマシン内に立てます。
このページで立てる的¶
| 的 | 種類 | 使う脆弱性 |
|---|---|---|
| Vulhub の Struts2 (S2-045) | サーバーの脆弱性 | リモートコード実行(このノートの主役) |
| OWASP Juice Shop | Webアプリの脆弱性 | SQLi / XSS など(おまけ) |
なぜ Struts2 が主役か → Metasploit が一発できれいに刺さる定番の的で、 「偵察 → 攻撃 → 侵入後」の流れを学ぶのに最適だからです。
Vulhub とは¶
flowchart TB
V["Vulhub リポジトリ"] --> A["struts2/<br>s2-045, s2-052..."]
V --> B["log4j/<br>CVE-2021-44228"]
V --> C["weblogic/ ..."]
V --> D["(334個の的)"]
style V fill:#2d333b,stroke:#3fb950,stroke-width:2px,color:#e6edf3Vulhub は「脆弱性ごとの的」を詰め合わせた有名なリポジトリです。
フォルダごとに docker-compose.yml があり、その1つが「その脆弱性を持った的」の設計図になっています。
# Vulhub を取得(的の設計図集。これ自体は無害な設定ファイル群)
cd ~/web # 置き場所はどこでもよい
git clone --depth 1 https://github.com/vulhub/vulhub.git
💡 的は使うときだけ起動し、終わったら止めます(
docker compose down)。 わざと脆弱なので、動かしっぱなしにしないのが鉄則です。
Struts2 (S2-045) の的を立てる¶
このノートでは、後で「攻撃役コンテナ」と同じネットワークに置くため、
docker compose ではなく docker run で、ポートを localhost だけに公開して立てます。
# 的を起動(127.0.0.1 = 自分だけがアクセスできる形で公開)
docker run -d --name struts2-s2045 \
-p 127.0.0.1:8088:8080 \
vulhub/struts2:2.3.30
| オプション | 意味 |
|---|---|
-d |
バックグラウンドで起動 |
--name struts2-s2045 |
コンテナに名前をつける |
-p 127.0.0.1:8088:8080 |
自分(127.0.0.1)だけが 8088 番でアクセスできる。外部には出さない |
🔒 安全ポイント:
-p 8088:8080と書くと全ネットワークに公開されてしまいます。 必ず127.0.0.1:を頭につけて、自分だけがアクセスできるようにします。
起動を確認する¶
脆弱な的は Java(Tomcat/Jetty)なので、起動に少し時間がかかります。
# 応答が返るまで待つ(HTTP 200 が返れば起動完了)
curl -s -o /dev/null -w "HTTP %{http_code}\n" \
http://localhost:8088/showcase.action
ブラウザで http://localhost:8088/showcase.action を開くと、
「Struts2 Showcase」というサンプルアプリが見えます。
見た目はただのサンプルですが、これが攻撃対象です。
(おまけ)Juice Shop を立てる¶
Webアプリの脆弱性(SQLi/XSS)を手で触りたいとき用。
ブラウザで http://localhost:3000 を開くと、普通のジュース通販サイトに見えますが、
至る所に練習用の脆弱性が仕込まれています。
的を止める・消す¶
次は 06. 偵察(nmap) へ。