Shikata Ga Nai

Private? There is no such things.

Information Disclosure to Account Takeoverを訳してみた

Hello there, ('ω')ノ

 

アカウント乗っ取りへの情報開示を。

 

脆弱性:

 情報開示

 OAuthの欠陥

 アカウントの乗っ取り

 認証のバイパス

 

記事:

 https://sunilyedla.medium.com/information-disclosure-to-account-takeover-a21b2b54147a

 

今回は、被害者の介入なしにOAuthフロー。

または接続されたソーシャルアカウントを使用してサインアップしたすべての。

ユーザアカウントを完全に引き継ぐことができて。

脆弱性の1つは、下記のエンドポイントで発生していて。

 https:///proxyservices/v1/users/validate?searchUser=<Victims_email>

 

初めのの脆弱性:

この脆弱性は、ユーザがログイン要求を傍受しているときに捕捉されて。

ユーザが資格情報を入力してログインをクリックすると。

最初にそのユーザがターゲットデータベースに存在するかどうかを確認して。

このエンドポイントは、下記のとおりで。

 /proxyservices/v1/users/validate?searchUser=<Victims_email> 


応答には、ステータス、計画、電話番号などを含む、登録ユーザの詳細が表示されて。

 

f:id:ThisIsOne:20210918165729p:plain

 

脆弱性のエスカレーション:

今回は、googleSocialアカウントに接続されているメールアドレスを指定することに。

すると、追加のパラメータ値"idToken"を取得できて。

"idToken"は、base64でエンコードされたデータで。

デコードした後でも、他のトークン値がいくつか見つかったものの。

どこで使用するかわからず。

 

f:id:ThisIsOne:20210918165840p:plain

 

再テストを開始して、OAuthサインインをキャプチャしたときに。

リクエストに"idToken"パラメータを見つけたので。

2つのアカウント(attacker@gmail.comvictim@gmail.com)を作成して。

OAuthを両方のアカウントに接続することに。

 

攻撃者は、下記のエンドポイントにGETリクエストを送信して。

応答から”idToken”値をコピーして。

 https:///proxyservices/v1/users/validate?searchUser=victim@gmail.com 

 

次に、ソーシャルアカウント[Google]を使用して。

attacker@gmail.comとしてログインして。

Burp Suiteでリクエストをキャプチャするとリクエストは下記のようになって。

 

POST /proxyservices/v1/auth/add/SocialMailUser HTTP/1.1
Host: target.tld
XXX
Content-Disposition: form-data; name=”idToken”
<Attackers_idToken> ⇦ ”idToken”


Content-Disposition: form-data; name=”authType”
SOCIAL_GMAIL


Content-Disposition: form-data; name=”genPassword”
<genpassword>

 

ここで、攻撃者の ”idToken”値を被害者の”idToken”値に置き換えて。

genpassword値はそのままで、リクエストを送信すると。

攻撃者は、被害者の介入なしに被害者のアカウントに正常にログインできて。

 

Best regards, (^^ゞ