Shikata Ga Nai

Private? There is no such things.

第23回 サーバーサイドリクエストフォージェリ(SSRF)発見のコツ

Hello there, ('ω')ノ

SSRFとは?

通常、社内システムは社内ネットワーク内でしかアクセスできないページやサーバーがあります。

ですが、次のような機能がある場合:

  • 画像URLを指定してアップロード
  • PDFやサイトのプレビュー機能
  • Webhookの設定画面

本来見せたくない内部情報まで取得できてしまうことがあります。


よくあるSSRFが発生する場面

✅ 画像やファイルURL指定型アップロード機能

✅ URL入力欄があるフォーム

✅ Webhookや通知設定画面

こういった場所で、外部URL以外も指定できてしまわないか? という視点で見ます。


実際のチェック手順① URL入力欄を探す

  • 管理画面や設定画面を中心に
  • URLを入力する欄を探します

例:

  • Webhook通知先URL
  • 画像取得用URL

実際のチェック手順② ローカルIPなどを指定してみる

通常は次のようなURLを入力して動作確認をします:

✅ 観察ポイント:

  • 正常なエラーメッセージが出るか?
  • 何らかのレスポンスが返ってくるか?
  • 内部限定の情報が表示されないか?

実務でのチェック例

社内システム設定画面:

→ これを: http://127.0.0.1:8000 http://192.168.x.x などに変更して送信テスト

結果:

  • 通信エラー → 正常
  • 200 OK → SSRF疑いあり

チェックリストまとめ

  • [ ] URL入力欄をすべて洗い出したか?
  • [ ] ローカルIPや内部アドレス指定を試したか?
  • [ ] クラウド用特殊IP(169.254.169.254など)を試したか?
  • [ ] エラーやレスポンス内容を確認したか?

注意事項

  • 本番環境でのチェックは必ず許可を取ること
  • 特に社内限定サーバーや機密システムに影響がないか注意
  • AWSやクラウド環境では事故につながる可能性があるため慎重に

まとめ

  • SSRFは「サーバーを経由して内部システムにアクセスできるか」を見る
  • URL入力欄やWebhook設定画面が要チェックポイント
  • 127.0.0.1 や AWS用特殊IPを使ったテストが基本手順

Best regards, (^^ゞ