Hello there, ('ω')ノ
アカウント乗っ取りへの情報開示を。
脆弱性:
情報開示
OAuthの欠陥
アカウントの乗っ取り
認証のバイパス
記事:
https://sunilyedla.medium.com/information-disclosure-to-account-takeover-a21b2b54147a
今回は、被害者の介入なしにOAuthフロー。
または接続されたソーシャルアカウントを使用してサインアップしたすべての。
ユーザアカウントを完全に引き継ぐことができて。
脆弱性の1つは、下記のエンドポイントで発生していて。
https://
初めのの脆弱性:
この脆弱性は、ユーザがログイン要求を傍受しているときに捕捉されて。
ユーザが資格情報を入力してログインをクリックすると。
最初にそのユーザがターゲットデータベースに存在するかどうかを確認して。
このエンドポイントは、下記のとおりで。
/proxyservices/v1/users/validate?searchUser=<Victims_email>
応答には、ステータス、計画、電話番号などを含む、登録ユーザの詳細が表示されて。
脆弱性のエスカレーション:
今回は、googleSocialアカウントに接続されているメールアドレスを指定することに。
すると、追加のパラメータ値"idToken"を取得できて。
"idToken"は、base64でエンコードされたデータで。
デコードした後でも、他のトークン値がいくつか見つかったものの。
どこで使用するかわからず。
再テストを開始して、OAuthサインインをキャプチャしたときに。
リクエストに"idToken"パラメータを見つけたので。
2つのアカウント(attacker@gmail.comとvictim@gmail.com)を作成して。
OAuthを両方のアカウントに接続することに。
攻撃者は、下記のエンドポイントにGETリクエストを送信して。
応答から”idToken”値をコピーして。
https://
次に、ソーシャルアカウント[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, (^^ゞ