🌐 SSRFとは?
SSRF(Server-Side Request Forgery)
日本語では「サーバーサイドリクエストフォージェリ」。
攻撃者が“サーバーに”別の場所へリクエストを送らせる脆弱性
💡 かんたんに言うと
本来は:
/fetch?url=https://api.example.com/data
のように、
サーバーが外部APIにアクセスする機能。
でも攻撃者が:
/fetch?url=http://127.0.0.1/admin
のように改ざんすると…
👉 サーバー自身の内部管理画面にアクセスしてしまう
🔥 何が危険?
通常、
127.0.0.1localhost- 社内IP(192.168.x.x など)
- クラウドのメタデータAPI
は外部から直接アクセスできない。
でもSSRFがあると:
「サーバー自身」にアクセスさせられる
= 内部ネットワーク突破。
☁ 特に危ないケース(クラウド)
例:
http://169.254.169.254/latest/meta-data/
これはクラウド環境(例:Amazon Web Services)の
認証情報取得用メタデータAPI。
SSRFがあると:
- IAMキー取得
- S3アクセス
- サーバー乗っ取り
につながることも。
🧠 なぜ起きる?
コード例:
requests.get(request.GET["url"])
👉 ユーザー入力URLをそのままサーバーが取得している
🛡 対策
- URLのホワイトリスト制御
- 内部IPへのアクセス禁止
- DNS再解決対策
- メタデータAPIの制限(IMDSv2など)
- プロキシ経由で制御
🎯 一言まとめ
SSRF = 「サーバーを踏み台にして内部に侵入する攻撃」
🆚 他の脆弱性との違い
| 脆弱性 | 何を悪用? | 攻撃対象 |
|---|---|---|
| IDOR | ID | 他人のデータ |
| File Inclusion | ファイルパス | サーバーファイル |
| SSRF | URL | 内部ネットワーク |