Hello there, ('ω')ノ
バグチェーンは大量アカウントの乗っ取りにつながるを。
脆弱性:
情報開示
パスワードリセットの欠陥
アカウントの乗っ取り
記事:
https://medium.com/@shubhayumajumdar/bug-chain-leads-to-mass-account-takeover-25dc76205f5d
今回のウェブサイトをredated.inと呼ぶことに。
アカウント乗っ取りの脆弱性によって、攻撃者はアプリケーションの認証の欠陥を。
悪用して、被害者のアカウントへの不正なフルアクセスを取得できて。
それでは、バグを個別に調べることに。
見つかったバグ:
デフォルトのSQLデータダンプ
パスワードリセット機能によるアカウントの乗っ取り
同じメールアドレスでの再登録
概要を説明するとパスワードリセット機能に存在する論理的な欠陥を介して。
ユーザのアカウントを簡単に引き継ぐことができて。
それに加えて、SQLダンプはすべてのユーザの情報を公開して。
さらに、これまでにウェブサイトでアカウントを作成したことのあるすべての。
ユーザのアカウントを引き継ぐことができて。
デフォルトのSQLデータダンプ:
ウェブサイトをテストしていると、いくつかの興味深いエンドポイントに出くわして。
それらのうちの2つは、データダンプで。
1.redated.in/backupで、メインデータベースから。
バックアップデータベースが更新されて。
下記は、redated.in/backupへのアクセスの応答で。
2.redated.in/backup.sqlで、バックアップされたデータをダンプして。
下記は、redated.in/backup.sqlへのアクセスの応答で。
また、このデータダンプには、ユーザがアカウントの登録に使用したモードによって。
ユーザ名、パスワード(MD5ハッシュ)、メールアドレス/電話番号などの。
すべてのユーザのログイン情報が含まれていて。
ここで、自分のユーザ名、ハッシュされたパスワード値、および電子メールが。
ダンプされて。
パスワードリセット機能によるアカウントの乗っ取り:
パスワードをリセットしてアカウントを回復しようとすると。
リセットページにユーザ名とメールアドレスが表示されて。
アカウントが存在するかどうかが検証されて。
検証時には、パスワードリセットリンク/OTPを送信せずに。
新しいパスワードを設定するオプションを直接提供していて。
このようなWebサイトのパスワードリセットロジックが不十分だとは思ってなくて。
下記が、redated.inのパスワードリセットページで。
同じメールアドレスを使用した再登録:
また、すでに使用しているメールに別のユーザ名を登録できることもわかって。
さらに何らかの理由で、両方のアカウントがパスワードをリセットできなくなって。
これはそれ自体が大きな脆弱性でもあって。
バグの連鎖:
SQLデータダンプからユーザの詳細を簡単に見つけて。
それを使用してすべてのユーザのアカウントを引き継ぐことができて。
新しいパスワードを適用した後にランダムなユーザ名と被害者のアカウントと。
同じメールアドレスを使用して別のアカウントを作成して。
これで、パスワードのリセットによってアカウントを回復できないようになって。
アカウントを作成したすべてのユーザと将来アカウントを作成する予定の。
すべてのユーザは、アカウントを永久に失う可能性があって。
パスワードリセット中にパスワードリセットリンクまたはOTPを送信することで。
脆弱性を回避できた可能性があって。
同じメールアドレスで複数のアカウントを作成しないようにするべきで。
Best regards, (^^ゞ