Shikata Ga Nai

Private? There is no such things.

Business Logic Error on Registration Leads to SMS Validation Bypassを訳してみた

Hello there, ('ω')ノ

 

登録時のビジネスロジックエラーがSMS検証バイパスにつながるを。

 

脆弱性:

 2FAバイパス

 

記事:

 https://infosecwriteups.com/business-logic-error-on-registration-leads-to-sms-validation-bypass-80380b3ff629

 

今回は、基本的にビジネスロジックエラーであり。

登録時にSMS検証をバイパスすることができて。


目標:

今回のターゲットは、金融サービス会社で。

スコープ内の資産はほとんどなくて。

登録/ログインパネルと、機能を備えていないいくつかの静的Webサイトと。

登録パネルだけに機能があるので、簡単にテストして他のプログラムに進むことに。

対象のウェブサイトは「redacted.com」とすることに。

 

登録フロー:

機能やアプリをテストする際に最初に行うことは、通常のユーザのように使用し。

フローを完全に理解することで。

Burp Suiteを起動し、すべてのリクエストとレスポンスをログに記録しながら。

以下で説明する登録プロセスを実行して。

 

1.redacted.com/registrationに移動して。

2.ユーザは、自分の名、姓、電子メールアドレス、および電話番号を。

 入力するように求められて。

 アプリケーションは、ユーザを。

 redacted.com/registration/api/email-confirmationに転送して。

3.必要な情報を提供した後、最初に6桁の英数字の確認コードが。

 電子メールアドレスに送信されて。

 ユーザは確認コードを入力し、別のエンドポイントの。

 redacted.com/registration/api/confirm-mobileで次のステップに進んで。

4.このステップでは、6桁の数字の確認コードがSMSで。

 ユーザの電話に送信されて。

 ユーザがコードを入力すると。

 redacted.com/registerration/api/user-credentialsにリダイレクトされて。

5.最後のステップとして、ユーザは自分のユーザー名とパスワードを。

 入力するように求められて

 ユーザが資格情報を提供すると、登録プロセスが完了して

 

---------------------

内容を読んでもわかりづらいので上記をまとめてみると。

 

2.redacted.com/registration

 名前、姓、電子メールアドレス、電話番号を入力

3.edacted.com/registration/api/email-confirmation

 メールの6桁の英数字の確認コード

4.redacted.com/registration/api/confirm-mobile

 SMSの6桁の数字の確認コード

5.redacted.com/registerration/api/user-credentials

 ユーザー名とパスワード

登録プロセス完了

---------------------

 

搾取:

ステップ3で、ユーザが電子メールに送信された確認コードを入力すると。

POSTリクエストが次のリクエスト本文とともに送信されて。


ステップ3)確認メール

f:id:ThisIsOne:20220325094247p:plain

 

next、step、およびoptionalのパラメータは重要ではなく。

重要なのは、nextとstepだけで。

ステップ4で、SMSで送信されたコードを確認すると。

次の本文で別のPOSTリクエストが開始されて。


ステップ4)SMS確認

f:id:ThisIsOne:20220325094314p:plain

 

実行ステップ:

1.ステップ3で、インターセプトをオンにして。

 メールアドレスに送信された確認コードを入力して。

 本文では、上の最初の図に示すように。

 step(confirmMail,confirm-mail)は電子メールによる確認として指定されていて。

 ここで、リクエストを転送する前に、最初の画像で強調表示された領域を。

 次の画像で強調表示された領域に置き換えて、リクエストを転送して。

2.ユーザはSMSで送信された確認コードを入力するように求められて。

 これは、ユーザが現在ステップ4を実行していることを意味して。

 URLは現在、redacted.com/registration/api/confirm-mobileで。

3.SMSコードを入力せずに、redacted.com/registrationに移動すると。

 3番目の手順の後、アカウントのユーザ名とパスワードを入力するように。

 求められたので、SMS検証を正常にバイパスしたことを示して。


起こった理由:

メール確認リクエストの本文(最初の画像のパラメータ)を。

SMS確認リクエストの本文(2番目の画像のパラメータ)に変更すると。

アプリケーションはメールコードを有効として受け入れて。

ただし、本体パラメータを変更したため、SMS確認も行われたと想定して。

正常に応答して。

URLにredacted.com/registrationを手動で入力すると。

アプリケーションはSMSコードの検証がすでに完了していると想定したため。

ユーザ名とパスワードの入力を求められたページにリダイレクトされて。

 

まとめ:

プログラムのスコープに特定の機能またはエンドポイントがある場合は。

できる限りそれを試して。

この機能はスコープで直接指定されていたりと。

 

Best regards, (^^ゞ