Hello there, ('ω')ノ
リセットパスワードによるOTPのバイパスを。
脆弱性:
OTPバイパス
記事:
https://infosecwriteups.com/bypassing-otp-via-reset-password-f004a29020c
ツール:
Burp Suite
今回は、電子メールアドレスを介してパスワードをリセットすることにより。
ワンタイムパスワードをバイパスすることができた方法を説明することに。
また、このプライベートプログラムtarget.comと呼ぶことに。
説明を続ける前に、この脆弱性は、APIを介したパスワードのリセット方法の。
誤った適用が原因で発生したことを考慮する必要があって。
これにより、応答でユーザのライブトークンが漏洩して。
このターゲットで偵察を行っている間に。
例外なくすべての関数が1つのAPIに直接関連していることに気づいて。
このターゲットは、そのAPIのインターフェースだったので。
関数のバグをスキャンすることから始めるのは理にかなっていて。
そして、アカウントの設定を確認している間に。
電話番号でOTPオプションを見つけたので。
電源を入れてログアウトすることに。
直接ログインして、レート制限のバイパスやOTPに関連するその他のバグを。
確認することにしたものの、API自体にレート制限の実装があって。
それを回避することはできず。
メールアドレスでパスワードをリセットしてOTPをバイパスできるかどうかも。
確認したものの、アプリは新しいパスワードで再度サインインして。
SMS経由で送信された6桁のOTPコードを挿入するように要求してくるので。
それを回避することができず。
それで、すべての要求とその応答をチェックすることに。
Burp Suiteのインターセプトをオンにして。
パスワードのリセットボタンの応答を確認することから始めたところ。
何も面白くなくて。
アカウントのメールアドレスを開いて。
パスワードのリセットリンクを確認しても。
リンク内のトークンは複雑で、ブルートフォース攻撃はできないので。
リンクを開いて新しいパスワードを挿入して。
パスワードの変更ボタンを押して、応答を確認してみると。
パスワードのリセットAPIメソッドがアカウントに新しいライブトークンを設定して。
応答でトークンをリークしていることを確認できて。
このライブトークンによって、アプリのインターフェースにサインインしなくても。
APIを介してアカウントのすべてのメソッドを使用できて。
しかしながら、サインインせずにOTPを停止する方法を見つけることにして。
アカウント設定を確認した後に。
OTPを停止するAPIリクエスト(Disable OTP API)を見つけることができたので。
リピータにリクエストを入力して。
APIのライブトークンを介してOTPを停止することができると。
アプリのインターフェイスにログインできて。
下記が、Disable OTP APIのリクエストで。
概要:
メールアドレスでパスワードをリセットすることで。
OTPをバイパスすることができて。
パスワードのリセットメソッドの応答でリークが発生するAPIライブトークンを。
介して、アカウント内のすべてのメソッドを使用できたことを。
考慮する必要があって。
しかし、OTPを停止するために方法を見つけることを好んだので。
OTPAPIリクエストを無効にして停止して。
そして、OTPコードを挿入することなくアカウントを開くことができて。
Best regards, (^^ゞ