Shikata Ga Nai

Private? There is no such things.

Bypassing SSO Authentication from the Login Without Password Feature Lead to Account Takeoverを訳してみた

Hello there, ('ω')ノ

 

パスワードなしログイン機能による SSO 認証のバイパスはアカウント乗っ取りにつながるを。

 

脆弱性:

 SSO 認証

 

記事:

 https://aidilarf.medium.com/bypassing-sso-authentication-from-the-login-without-password-feature-lead-to-account-takeover-d2322a33a208

 

要約:

ブログ記事「Bypassing SSO Authentication from the Login Without Password Feature Lead to Account Takeover」では、パスワードなしでログインする機能を利用してSSO認証をバイパスし、アカウント乗っ取りにつながる脆弱性について説明しています。

著者はバグハンティング中にこの問題を発見しました。

この脆弱性が存在するウェブサイトは、メールアドレスを複数のアカウントにリンクできること、そしてSSOログインがユーザネームのみを使用し、リンクされたメールアドレスを使用しないことをサポートしています。

著者は、同じメールアドレスをリンクした2つの異なるユーザネーム(attacker1とattacker2)を持つ2つのアカウントを例に挙げています。

著者は「パスワードなしでログイン」機能にアクセスし、アカウントのメールアドレスを入力すると、そのメールアドレスにOTP(ワンタイムパスワード)が送信されることを説明しています。

その後、OTPを入力すると、パスワードなしでSSOログインするためのアカウント選択ページが表示されます。

このページでは、同じメールアドレスにリンクされた異なるユーザネームを持つ2つのアカウントが必要です。

1つのアカウントのみの場合、正しいOTPを入力してもアカウント選択ページは表示されず、直接そのアカウントにログインされます。

著者は、パスワードなしでSSOログインするアカウント選択ページでアカウントの1つを選択する際のリクエストをキャッチし、リクエスト内の「username」パラメータの値を被害者のユーザーネームに置き換えることで、被害者のアカウントの最終エンドポイントにSSOがリダイレクトされることを発見しました。

これにより、アカウント乗っ取りの脆弱性を発見しました。

 

ーーーーーーーーーー

 

バグハンティングを行ったところ、パスワードなしでログイン機能を発見し。

パスワードなしのログイン機能は、有効なアカウント ユーザがパスワードなしで

ログインするか、有効なアカウント ユーザがリンクされたアカウントの

電子メールに送信された OTP (ワンタイム パスワード) を使用してのみ

ログインできる機能で。

 

 

続行する前に、これらの脆弱な Web サイトに関する情報を次の形式で提供して。

 

Web サイトでは、ログインするために実装されている SSO がユーザ名のみを使用し

リンクされた電子メールは使用しないため、

複数のアカウントでの電子メールの使用がサポートされていて。

 

ここで、攻撃者である私は、同じ電子メールを使用してリンクされた、

異なるユーザ名を持つ 2 つのアカウントを持っていて。

 

Username : attacker1

 

Username : attacker2

 

次に、パスワードなしでログイン機能を試してみて。

次に、アカウントのメールアドレスを入力し。

以下はスクリーンショットで。

 

 

その後、OTP が自分のメールアドレス (attacker@gmail.com) に送信され。

 

 

次に、OTP を入力すると、次のようなパスワードなしで SSO ログインするための

アカウント選択ページが表示され。

 

 

ノート:

パスワードなしで SSO ログインするためのアカウント選択ページ上の

スクリーンショットから、異なるユーザ名を持つ 2 つのアカウントが

同じ電子メールにリンクされている必要があり。

その電子メールのアカウントが 1 つしかない場合、パスワードなしで

SSO ログイン要求に正しい OTP を入力すると、上記のスクリーンショットのように

パスワードなしの SSO ログイン用のアカウント選択ページは表示されませんが

SSO ログインはすぐにアカウントにリダイレクトされて。

 

その場合は、パスワードなしで SSO ログインするためのアカウント選択ページで

アカウントの 1 つを選択するときにリクエストをキャッチし。

リクエストは次のとおりで。

 

    POST /api/sso/login-without-password/auth HTTP/2
    Host: sso.redacted.com
    Cookie: [COOKIE]
    User-Agent:
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Origin: https://www.redacted.com/
    Sec-Fetch-Dest: empty
    Sec-Fetch-Mode: cors
    Sec-Fetch-Site: same-origin
    Te: trailers
    Content-Length: 226

    {“track”:006,”action”:”login-without-password”,”code”:”[OTP]”,”token”:”22123w2DS4543jg23324e35SD==”,”username”:”attacker1"}

 

以下はリクエストのスクリーンショットで。

 

 

そこにはいくつかのパラメータがあることがわかりますが、

username パラメータを見て驚き。

興味があったので、username パラメータの値を被害者のユーザ名に

置き換えてみて。

それは機能し、SSO は被害者アカウントの最終エンドポイントにリダイレクトされ。

 

 

ついにここでアカウント乗っ取りの脆弱性が見つかって。

 

Best regards, (^^ゞ