ゼロインタラクションの大量アカウントパスワードリセット脆弱性
ゼロインタラクションの大量アカウントパスワードリセット脆弱性こんにちはみなさん、お元気ですか。😊 この記事では、どのようにしてゼロインタラクションのパスワードリセットが可能な脆弱性を見つけたかを説明します。 説明: 対象のウェブサイト(例えば、xxx.comとしましょう、実際はサブドメインのxxxx.xxx.comでした)でテストを行っている間に、任意のユーザーのゼロインタラクションのパスワードリセットが可能な脆弱性を発見しました。🔍 通常のシナリオは何ですか? 通常のパスワードリセットプロセスでは、リセットリンクがユーザーのメールアドレスに送信されます。しかし、私は「hidden」と呼ばれる「pass_sent」というパラメーターを見つけました。この「pass_sent」をfalseからtrueに変更すると、サーバーが自動的に新しいパスワードを生成し、指定されたメールアドレスに送信されます。🔒これが脆弱性である理由は? 次のシナリオを考えてみてください:私のメールはabc@gmail.comで、パスワードはAbc@123です。攻撃者が私のメールをパスワードリセットに入力し、「pass_sent」をfalseからtrueに変更すると、サーバーが新しいパスワードを生成します。今、私の古いパスワードAbc@123は無効になり、サーバーが自動的に生成した新しいパスワードは有効です。⚠️ 再現手順: https://xxxx.xxx.com/xx?id=xx_forgot_password に移動します。 被害者のメールアドレスを入力します。 Burp Suiteなどのプロキシツールを使用して、リクエストをインターセプトします。 POSTリクエスト本文で「pass_sent」パラメーターをfalseからtrueに変更します。{ "emailEmpty": true, "pass_sent": false, "customer_email": "{victim's email}", "action": "changePassword", "sessionRotationTrigger": true}リクエストをサーバーに転送してください。影響: この操作により、被害者のパスワードが彼らの関与や認識なしに成功裏に変更され、古い資格情報が無効になります。🚫 この脆弱性により、攻撃者がユーザーの同意なしにパスワードを変更することが可能ですが、サーバーが生成した新しいパスワードが被害者のメールアドレスに送信されるため、これは低影響と見なされます。したがって、被害者はアカウントへのアクセスを維持します。ただし、脆弱性は被害者の古い資格情報が無効になるために依然として存在します。⚠️報酬💰: 報告書を送った後、2か月間返事がありませんでした。突然、バウンティに関する直接の返答がありました。彼らは報道機関に問題の修正方法を伝えないことを決定したと述べました。彼らは脆弱性を修正し、私に€€の報酬を与えました。💰💰B4baY4ga