Hello there, ('ω')ノ
パラメータベースアクセス制御とは?
一部のアプリケーションでは、ユーザーの権限情報を以下の場所に保存して管理します:
- 隠しフィールド
- Cookie
- URLパラメータ(クエリストリング)
具体例:URLパラメータで権限管理しているケース
次のようなURLが使われている場合があります:
https://insecure-website.com/login/home.jsp?admin=true https://insecure-website.com/login/home.jsp?role=1
この値を変更するだけで、一般ユーザーでも管理者権限を得られることがあります。
なぜ危険なのか?
- ユーザーが自由に編集可能
- サーバー側で本当の認証確認をしていない
- ブラウザの開発者ツールやBurp Suiteなどで簡単に変更可能
診断手順と見つけ方
1. ページのURLパラメータを観察
admin=trueやrole=1など、権限に関係しそうなものが無いか確認。
2. パラメータを書き換えて試す
role=0→role=1admin=false→admin=true
3. Cookieやフォームのhiddenフィールドも確認
- ブラウザ開発者ツール →
Applicationタブを使う。
4. 変更後の挙動を確認
- 管理者ページへのリンクが現れたり、制限されていた機能が使えるようになれば脆弱性確定。
まとめ:安全なアクセス制御のポイント
サーバー側でユーザー情報を確認すること!
- クライアント側の情報は信用しない。
- パラメータやCookieに権限情報を入れない
セッション情報で正しく管理する
- 例:サーバー側でセッションIDと権限をひも付ける。
この方法を押さえておけば、パラメータベースアクセス制御の脆弱性を効率よく発見できます!
Best regards, (^^ゞ