Shikata Ga Nai

Private? There is no such things.

第20回 Insecure Direct Object References(IDOR)の検証方法

Hello there, ('ω')ノ

IDORがよく発生する場所

  • プロフィールページ
  • 社内経費システムの明細ページ
  • 勤怠システムの打刻履歴
  • ファイルダウンロードURL

いずれも「id=」「user_id=」「file_id=」などがURLやリクエスト内に含まれているケースです。


実際のチェック手順① URLで確認する

  1. 対象システムにログイン
  2. 自分の情報ページを開く
  3. URL内に数字や文字列が含まれているか確認:

例: https://intra.example.co.jp/profile?id=123

  1. id= の数字を変えて再アクセス:

https://intra.example.co.jp/profile?id=124

✅ 他人の情報が見えた場合 → IDORリスク大


実際のチェック手順② APIリクエストで確認する

  1. F12キー → Networkタブ
  2. 自分のデータを取得するAPIリクエストを確認:

例:

GET /api/user/info?id=123

  1. idパラメーターを別の値に変更して再送信

✅ 成功すればIDOR成立 ✅ 403 Forbiddenやエラーになるのが正常な状態


よくあるパラメーター名リスト

  • id
  • user_id
  • file_id
  • token
  • receipt_id

単純な連番の場合は特に注意が必要です。


実際の社内システムチェック例

  • 勤怠打刻履歴
  • 経費精算明細
  • ダウンロードファイルURL

いずれも「id=」「file_id=」を変更して、データ漏洩がないか確認します。


チェックリストまとめ

  • [ ] URL内のidやuser_idを変更して確認したか?
  • [ ] APIリクエスト内のidやtokenを変更して再送信したか?
  • [ ] エラーや403 Forbiddenが適切に返るか?
  • [ ] 連番IDや予測しやすい番号を使っていないか確認したか?

注意事項

  • 本番環境でテストする場合は必ず事前許可を取ること
  • できればテスト環境やダミーアカウントで実施すること

まとめ

  • IDORはシンプルな操作で見つかる脆弱性
  • URLやAPIリクエスト内のidやtokenを意図的に変更するだけ
  • 他人のデータが見えた時点で重大リスク

Best regards, (^^ゞ