SSRFを学んでいると、こんな疑問が出てきます。
- localhost(ローカルホスト)って何?
- 192.168.x.xって何?
- この2つって何が違うの?
どちらも「内部っぽい」ので混乱しやすいですが、意味はまったく違います。
この記事では、localhostと内部ネットワークの違いを、図解イメージでシンプルに整理します。
結論
まずは一言でまとめます。
- localhost → 自分自身(同じサーバー)
- 内部ネットワーク → 同じネットワーク内の別の機械
localhost(ローカルホスト)とは何か
localhostは、サーバー自身を指す特別なアドレスです。
localhost = 127.0.0.1イメージ図
[Webサーバー]
↑
└── localhost(自分自身)
どういう意味か
サーバーが localhost にアクセスすると、自分自身にアクセスしているという状態になります。
よくある使われ方
- 管理画面(
/admin) - 内部API
- デバッグ用機能
外部からは見えないが、内部からは使える機能です。
内部ネットワークとは何か
内部ネットワークは、同じネットワーク内の別のサーバーです。
192.168.x.x
10.x.x.x
172.16.x.xイメージ図
[Webサーバー] ─── [DBサーバー]
│
└── 192.168.0.10
どういう意味か
サーバーが内部IPにアクセスすると、同じネットワーク内の別サーバーにアクセスになります。
よくある構成
- Webサーバー
- データベースサーバー
- キャッシュサーバー
- 社内API
実務では複数のサーバーで構成されることが多いです。
localhostと内部ネットワークの違い
ここを整理すると一気に理解できます。
| 項目 | localhost | 内部ネットワーク |
|---|---|---|
| 意味 | 自分自身 | 別のサーバー |
| 例 | 127.0.0.1 | 192.168.0.10 |
| 範囲 | 同一マシン | 同一ネットワーク |
| 用途 | 内部機能 | サーバー間通信 |
SSRFでの違い
ここが一番重要です。
localhostを狙う場合
http://localhost/admin図にすると
攻撃者 → Webアプリ → localhost(同じサーバー)
アプリ内部の機能にアクセス。
内部ネットワークを狙う場合
http://192.168.0.10:8080イメージ図
攻撃者 → Webアプリ → 社内サーバー
別のシステムに侵入することになります。
なぜこの違いが重要なのか
攻撃の意味が変わるからです。
localhostの場合
- 管理画面の突破
- 内部APIの実行
- 権限バイパス
アプリ内部の問題。
内部ネットワークの場合
- 社内システムへの侵入
- ポートスキャン
- データベース探索
インフラ全体への影響。
WordPressで考えると
WordPressでもこの違いはそのまま当てはまります。
localhostに対するSSRF
- プラグインの内部処理
- 管理機能の呼び出し
内部ネットワークに対するSSRF
- 別サーバーのDB
- キャッシュサーバー
- 社内API
特に外部通信機能がある場合は注意が必要です。
まとめ
localhostと内部ネットワークの違いはシンプルです。
- localhostは自分自身
- 内部ネットワークは別のサーバー
そしてSSRFでは、
- localhost → アプリ内部の突破
- 内部ネットワーク → 社内システムへの侵入
という違いになります。
