Hello there, ('ω')ノ
興味深いアカウント乗っ取りの欠陥をどのようにして発見したかを。
脆弱性:
記事:
https://infosecwriteups.com/how-i-discovered-an-interesting-account-takeover-flaw-18a7fb1e5359
今回は、アカウント乗っ取りの欠陥について。
この問題の根本的な原因は、パスワードリセットトークンを。
生成していたアルゴリズムにあって。
アプリケーションをprogram.comとすると。
Web上の他のアプリケーションと同様に。
このアプリケーションにもパスワードを忘れる機能があって。
アカウントのパスワードを忘れたリセットリンクを要求すると。
このアカウントのリセットリンクを要求するたびに。
トークンの最初の3文字は常に同じままであることに気づいたので掘り始めることに。
https://program.com/forgot_password/
数分後、これらの3文字が自分のメールの4番目の文字から2番目の文字への。
逆の順序であることに気付いて。
たとえば、電子メールアドレスjohndoe@domain.comで。
パスワードリセットリンクを要求すると。
このアカウントのトークンの最初の3文字は、常に「nho」になって。
アプリケーションが行ったことは、メールの4番目の文字(n)を選択して。
2番目の文字(o)まで逆の順序でトラバースしたことで。
これを見つけた後、トークンの最初の3文字はランダムではなかったので。
残りの文字にも意味がある可能性があって。
もう1つのテストアカウントでトークンを複数回要求したところ。
最後の数文字がタイムスタンプでして。
理解しなければならないのは、「nho」とタイムスタンプの間にある。
2文字の意味だけで。
この2文字の意味がわからず。
この2つのキャラクタをブルートフォースしようと考えて。
幸い、アプリケーションにはレート制限がなかったので。
2つの同一の電子メールアドレス
johndoe@domain.com
johndoe@domain2.com
のパスワードリセットリンクをまったく同時に要求して。
リクエストを同時に送信すると、メールのユーザ名部分が同じであるため。
両方のアカウントに送信されるトークンは。
ランダムな2文字を除いて同じになって。
2通目のメールの受信トレイを確認して。
リクエストを傍受してリセットリンクをクリックして。
次に、Burp SuiteのIntruderにリクエストを送信して。
2つのキャラクタに対してブルートフォース攻撃を開始すると。
いくつかのリクエストを送信した後、302応答が表示されて。
これは、最初のアカウントのリセットトークンを正常に見つけることができて。
最終的にアカウントを乗っ取ることができたことを意味して。
Best regards, (^^ゞ