Shikata Ga Nai

Private? There is no such things.

~/BugBounty/IDOR/”How I was able to exfiltrate any user’s credit coupons”を訳してみた

Hello there, ('ω')ノ

 

どのようにしてユーザのクレジットクーポンを盗み出すことができたのかを。

 

脆弱性:

 IDOR

 

記事:

 https://ja1sharma.medium.com/bugbounty-idor-how-i-was-able-to-exfiltrate-any-users-credit-coupons-49631d9f3bc8

 

今回は、単純な改ざんがどのようにクレジットを盗むIDORにつながったかを。

説明することに。


まず、ターゲットサブドメインは下記のとおりで。

 a.redacted.com

 b.redacted.com

 

a.redacted.comで、認証されたユーザがビジネスストアの割引クーポンを。

作成しているときに抜け穴を探したものの見つからなかったので。

 

次のスコープ内のサブドメインであるb.redacted.comに移動することに。

まずは、ユーザ認証なしで基本的なウェブサイトのクロールを行って。

次に、有効なユーザ資格情報を使用してアプリケーションにログインして。

ターゲットをクロールしているときに、興味深いAPIの呼び出しを見つけることに。

 

 OPTIONS /api/v1/client_info?email=user@web.com&external_id=00000111&customer_token=7ddf32e17a6ac5ce04a8ecbf782ca509&merch_id=60037

 

ユーザの電子メールIDは、OPTIONSメソッドを介して送信されたために。

単純な204応答が返されて。

基本的に、着信要求が安全かどうかを確認するためにトリガーされて。

 

f:id:ThisIsOne:20210914094156p:plain

 

次にOPTIONSメソッドを改ざんするために、GETに変更したところ。

user@web.comが、a.redacted.comで作成したすべてのユーザを含む。

クレジットクーポン、クレジット履歴、期限切れのクーポンなどが応答が返されて。

 

f:id:ThisIsOne:20210914094216p:plain

 

これで、電子メールIDを操作するだけで。

a.redacted.comから他のユーザのデータをフェッチできるか確認できて。

 

ただ、これには攻撃者が、被害者の電子メールとexternal_idを。

知っている必要があるわけで。

external_id値は増分値で、一意のユーザごとに一意であることがわかって。

さらに同じAPI呼び出しでレート制限が欠落していることがわかって。

他には、パスワードのリセット要求が開始されると。

同じexternal_idが共有されていたので。

 

被害者のテストアカウントを作成して。

被害者のemailexternal_idは、パスワードリセット機能を介して。

簡単に列挙/公開されるので取得できるので。

 

GETメソッドへの改ざんされたOPTIONSで同じ脆弱なリクエストを使用して。

被害者がa.redacted.comで作成したクーポン、有効なクレジットクーポンだけでなく。

期限切れのクーポン、現在の残高、その他の取引の詳細も取得できて。

 

f:id:ThisIsOne:20210914094105p:plain

 

Best regards, (^^ゞ