Shikata Ga Nai

Private? There is no such things.

Weird Email Verification Bypassを訳してみた

Hello there, ('ω')ノ

 

奇妙な電子メール検証バイパスを。

 

脆弱性:

 

記事:

 https://medium.com/@vaibhavatkale/weird-email-verification-bypass-96c793c36d7e

 

今回は、メール検証の実装を回避する方法を説明する記事を。

target.comとしてターゲットを想定すると。

基本的にtarget.comはeコマースのWebサイトで。

ユーザが自分のメールアドレスを使用してサインアップできる場合でも。

アカウントにアクセスするには、ユーザーが自分のメールアドレスに。

送信されたリンクを使用して自分のメールを確認する必要があって。

プログラムを探し始めるときはいつでも、最初に認証の問題をチェックするので。

以下の手順に従って。

 

1.test1@gmail.comとtest2@gmail.comの2つのアカウントを作成して。

 電子メールアドレスに送信された電子メール検証リンクを観察して。

 

2.test1@gmail.comの場合:

  https://target.com/o/blah/blah?user_id=1028356&confirm_key=Token1


3.test2@gmail.comの場合:

  https://target.com/o/blah/blah?user_id=1028357&confirm_key=Token2


4.上記の電子メール検証リンクを観察した場合、電子メール検証リンクを。

 クラックするには、2つのパラメータuser_idとconfirm_keyが。

 必要であることがわかり。

 

5.ユーザ作成リクエストへの応答を注意深く分析したところ。

 user_idが応答ヘッダでリークされていることがわかって。


6.次のタスクはconfirm_keyパラメータをクラックすることで。

 md5が暗号化されているか、推測できるか、タイムスタンプで何かを。

 行う必要があるかどうかを確認するために、さまざまなアプローチに従って。

 Token1とToken2を比較してみると。

 ほぼ同様のメールアドレス(test1@gmail.comとtest2@gmail.com)で。

 アカウントを作成したため、トークンの一部のみが異なる可能性がありますが。

 両方とも完全に異なっており、推測することはできず。

 

今回、複数(5–6)のアカウントを作成し。

メモ帳にそれらすべてをコピーしてすべての電子メール検証リンクを観察すると。

驚いたことに、それらは次のとおりで。

 

 https://target.com/o/blah/blah?user_id=1028361&confirm_key=Token1
 https://target.com/o/blah/blah?user_id=1028362&confirm_key=Token2
 https://target.com/o/blah/blah?user_id=1028363&confirm_key=Token1
 https://target.com/o/blah/blah?user_id=1028364&confirm_key=Token2
 https://target.com/o/blah/blah?user_id=1028365&confirm_key=Token1
 https://target.com/o/blah/blah?user_id=1028366&confirm_key=Token2

 

上記の電子メール検証リンクが表示されている場合、アプリケーションが、

Token1とToken2の2つのconfirm_key値のみを生成していることがわかって。

そして、ユーザ作成リクエストの応答でuser_id値をすでに取得していて。

つまり、メール確認リンクをクラックするためのすべてが揃っているということで。

 

プログラムのドメイン名(user@target.comなど)でアカウントをすばやく作成して。

メールの確認をバイパスできるかどうかを確認すると。

おそらく、追加の内部タブにアクセスできるようになり。

したがって、脆弱性を再現するための最終ステップは次のとおりで。

 

1.メールアドレスuser@target.comでアカウントを作成して。

 

2.たとえば、応答からuser_idパラメータを書き留めて、102838だとすると。


3.次に、下記のURLのの下を押してみて。

 https://target.com/o/blah/blah?user_id=102838&confirm_key=Token1

 

4.上記が機能しない場合は、もう1つを試して。

 https://target.com/o/blah/blah?user_id=102838&confirm_key=Token2


5.したがって、上記の2つのいずれかが確実に機能するため。

 メールの確認が行われ、メールアドレスuser@target.comを使用して。

 アプリケーションにログインしましたが、そのメールアドレスにアクセスできず。


6.ただし、プログラムドメインの電子メールID(user@target.com)で。

 ログインしたユーザがアクセスできる追加機能はなく。

 

電子メール検証バイパスとして問題を報告すると。

チームは、アカウントの乗っ取りとして分類し、重大度が高いと判断されて。

 

いつも言っているように、観察が鍵で。

電子メール検証のバグをテストするときは常に、すべての応答を確認し。

複数のアカウント(少なくとも6〜7)を作成してみて。

 

Best regards, (^^ゞ