Hello there, ('ω')ノ
🧭 水平方向の権限昇格とは?
水平方向の権限昇格とは、本来アクセスできるはずのない他のユーザーの情報や機能にアクセスしてしまうことを指します。これは「同じレベルのユーザー権限内」での不正アクセスを意味します。
🎯 例:
- 従業員Aが、従業員Bの勤怠情報や個人情報にアクセスできる
- 一般ユーザーが、他のユーザーの購入履歴やプロフィールを閲覧できる
🔓 なぜ起こるのか?
多くの場合、URLやパラメータで直接リソースを指定できる設計になっているためです。以下は典型例です:
https://insecure-website.com/myaccount?id=123
このように、自分のアカウント情報を取得するURLに含まれる「id=123
」を、例えば id=124
に書き換えるとどうなるか?
→ サーバーがこれを検証せずに処理してしまえば、別のユーザーのデータにアクセス可能になります。
🧨 IDOR(Insecure Direct Object Reference)とは?
この脆弱性の技術的名称が IDOR(インセキュア・ダイレクト・オブジェクト・リファレンス)です。
🔎 特徴:
- ユーザーが制御できる値(idなど)を使ってデータを参照
- アクセス制御が正しく機能していない
- 容易に予測・列挙できるID(数値連番など)が使われている
🔧 実際の攻撃手法
手順:
- 自分のアカウントページにアクセスして、URLやリクエストパラメータを観察。
- その中に、
id
やuser
,order
,account
などの値を含むパラメータがないか確認。 - 値を別の番号やユーザーIDに書き換えてレスポンスを確認。
- 別人の情報が取得できれば、水平方向の権限昇格成功。
🔐 対策方法
対策 | 内容 |
---|---|
サーバー側でのアクセス制御 | 現在のユーザーが対象リソースの所有者か確認 |
IDの難読化やトークン化 | 単純な数値IDの代わりにUUIDなどを使用 |
ロールベース認可の導入 | 権限に応じた操作制御を行う |
ログの監視 | 不審なアクセスパターン(ID列挙など)を検知 |
✅ まとめ
- 水平方向の権限昇格は、「自分と同レベルの他人のデータ」に不正アクセスする脆弱性。
- 多くの場合、IDORの形で現れる。
- 簡単なIDの書き換えだけで起こるため、見落とされやすく、非常に危険。
- サーバー側の検証と設計の見直しが、最も重要な防御策。
👨💻 ペンテスターを目指すなら、IDORのようなシンプルな論理的ミスを見逃さない観察力と、そこから展開する攻撃力が武器になります。URLやパラメータに含まれる数値には常に疑いの目を!
Best regards, (^^ゞ