Shikata Ga Nai

Private? There is no such things.

LAB: ユーザープロファイルでロールIDを改ざんして管理者になる方法

Hello there, ('ω')ノ

🎯 ラボの目的

  • 通常ユーザーとしてログイン。
  • プロファイル情報(メールアドレスなど)を更新するリクエストの中で、roleid を 2(管理者)に書き換える。
  • /admin にアクセスできるようになったら、ユーザー carlos を削除。
  • 成功すればラボクリア。

🔐 アカウント情報

ユーザー名: wiener
パスワード: peter

🧪 手順:ユーザープロファイル改ざんによる管理者昇格

1. 通常通りログイン

  • 上記の資格情報でログインし、自分のアカウントページに移動。

2. メールアドレス変更リクエストを確認

  • Burp Suiteでメールアドレス更新リクエストをキャプチャ。
  • 例(JSON形式):
  {
    "email": "test@example.com"
  }

3. roleid を手動で追加

  • 上記のリクエストを Burp Repeater に送信。
  • JSONボディに "roleid": 2 を追加:
  {
    "email": "test@example.com",
    "roleid": 2
  }

4. 送信してレスポンスを確認

  • レスポンスに roleid: 2 が含まれていれば昇格成功!

🛠 管理者ページにアクセス・操作

5. /admin にアクセス

  • ブラウザまたは Repeater で /admin を開く。
  • 管理者メニューが表示されれば昇格に成功している。

6. ユーザー carlos を削除

  • 管理者ページ内の削除ボタンでユーザー carlos を削除。
  • 削除成功メッセージが表示され、ラボクリア!

💡 ポイントとセキュリティ的な示唆

リスク 解説
クライアントから送られた roleid を信頼している 検証がサーバー側で行われていない設計ミス
本来、ロール変更はユーザーに許可すべきでない UIに見えなくてもAPIで通ると危険
入力値のサーバー側バリデーションが不十分 「できるはずがない」が実はできてしまう

🎓 この脆弱性は、インプットバリデーションと権限管理の甘さに起因する典型的な論理的脆弱性です。UIに制限があっても、APIリクエストが通るかどうかをBurpで確かめることで、見落とされがちなバックエンドの穴を突くことができます。

Best regards, (^^ゞ