列挙とブルートフォース
認証列挙
有効なユーザー名の識別
有効なユーザー名がわかれば、攻撃者はパスワードだけに集中できます。ユーザー名は、ログイン時やパスワードのリセット時にアプリケーションがどのように応答するかを観察するなど、さまざまな方法で推測できる
「このアカウントは存在しません」や「パスワードが正しくありません」などのヒントは、アカウントがシステム上に存在しているということがわかる
パスワードポリシー
「パスワードには英数字大文字小文字含んで、記号も含んでください」みたいな注意書きが出てきた時、このパスワードポリシーに従って攻撃者は、辞書を生成できる可能性がある
列挙する一般的な場所
登録ページ
登録を試行したときに、ユーザー名または電子メールがすでに使用されているというメッセージが表示される場合、アプリケーションは、登録しようとしているすべてのユーザーにその存在を無意識のうちに確認していることになる。
攻撃者は、潜在的なユーザー名または電子メールをテストすることでこの機能を悪用し、基盤となるデータベースに直接アクセスすることなく、アクティブ ユーザーのリストを作成することができる
パスワードリセット機能
アプリケーションの応答の違いにより、意図せずに機密情報が漏洩する可能性がある。
たとえば、ユーザー名が存在するかどうかに関するアプリケーションのフィードバックに違いがあると、攻撃者はユーザーの身元を確認することができる。
これらの応答を分析することで、攻撃者は有効なユーザー名のリストを絞り込み、その後の攻撃の有効性を大幅に向上させることができる
詳細なエラー
「ユーザー名が見つかりません」と「パスワードが間違っています」が区別されている場合、より標的を絞って攻撃できる
データ侵害情報
過去のセキュリティ侵害のデータは、侵害されたユーザー名とパスワードがさまざまなプラットフォームで再利用されているかどうかをテストできるため、攻撃者にとって金鉱
攻撃者が一致を見つけた場合、ユーザー名が再利用されているだけでなく、特にプラットフォームが以前に侵害されている場合は、パスワードが再利用されている可能性があることが示唆される
この手法は、さまざまなオンライン ID 間のつながりを悪用して、単一のデータ侵害の影響が複数のプラットフォームに波及することを示している
詳細エラーによるユーザーの列挙
内部パス:
隠された宝物へと導く地図のように、これらは、通常のユーザーには表示されない構成ファイルや秘密キーが含まれている可能性のあるアプリケーション サーバーのファイル パスとディレクトリ構造を明らかにします。
データベースの詳細
データベースを覗き見ることができるこれらのエラーにより、テーブル名や列の詳細などの秘密が漏れる可能性があります。
ユーザー情報
場合によっては、これらのエラーによってユーザー名やその他の個人データが示唆され、さらに調査を進める上で重要な手がかりが提供されることがあります。
無効なログイン試行
SQLインジェクション
ファイルの包含/パス トラバーサル
アプリケーション ファジング
アプリケーションのさまざまな部分に予期しない入力を送信して、その反応を確認すると、弱点を特定するのに役立ちます。たとえば、Burp Suite Intruderなどのツールは、プロセスを自動化するために使用され、さまざまなペイロードをアプリケーションに大量に送信して、どのペイロードが有益なエラーを引き起こすかを確認します。
列挙とブルートフォースの役割
認証を侵害する場合、列挙とブルートフォース攻撃がしばしば連携して行われます。
ユーザーの列挙
有効なユーザー名を検出することで準備が整い、その後の総当たり攻撃での推測作業が減ります。
試すユーザー名の辞書
詳細エラーによるユーザーの列挙のセクションで、ユーザーメールアドレスの辞書攻撃を行うpythonスクリプトある
詳細なエラーの悪用: これらのエラーから得られる洞察により、パスワード ポリシーやアカウント ロックアウト メカニズムなどの側面が明らかになり、より効果的なブルート フォース戦略への道が開かれます。
こんな感じで、ユーザーのメルアドがあるのかないのかの確認もする
脆弱なパスワードリセットロジックの悪用
メールベースのリセット
ユーザーがパスワードをリセットすると、アプリケーションはリセット リンクまたはトークンを含むメールをユーザーの登録済みメール アドレスに送信します。次に、ユーザーがこのリンクをクリックすると、新しいパスワードを入力して確認できるページに移動します。または、システムが自動的にユーザーの新しいパスワードを生成します。この方法は、ユーザーのメール アカウントのセキュリティと、送信されるリンクまたはトークンの機密性に大きく依存します。
セキュリティ質問ベースのリセット
これには、アカウント作成時に設定した一連の事前設定されたセキュリティの質問にユーザーが答えることが含まれます。答えが正しければ、システムはユーザーがパスワードのリセットを続行することを許可します。この方法は、ユーザーのみが知っているべき情報を要求することでセキュリティの層を追加しますが、攻撃者が個人を特定できる情報 ( PII ) にアクセスした場合、簡単に見つかったり推測されたりする可能性があるため、セキュリティが侵害される可能性があります。
SMSベースのリセット
これは電子メールベースのリセットと同様に機能しますが、SMS を使用してリセット コードまたはリンクをユーザーの携帯電話に直接送信します。ユーザーはコードを受信すると、提供された Web ページに入力してパスワード リセット機能にアクセスできます。この方法では、ユーザーの電話へのアクセスが安全であると想定されていますが、SIM スワッピング攻撃や傍受に対して脆弱になる可能性があります。
これらの各方法には脆弱性があります。
予測可能なトークン: リンクまたは SMS メッセージで使用されるリセット トークンが予測可能であったり、連続したパターンに従っていたりする場合、攻撃者は推測したり、ブルート フォース攻撃を行って有効なリセット URL を生成する可能性があります。
トークンの有効期限の問題: トークンの有効期限が長すぎたり、使用後すぐに有効期限が切れなかったりすると、攻撃者に攻撃の機会を与えてしまいます。この機会を制限するには、トークンがすぐに期限切れになることが重要です。
不十分な検証: セキュリティの質問や電子メールベースの認証など、ユーザーの身元を確認するためのメカニズムは、質問が一般的すぎる場合や電子メール アカウントが侵害されている場合には、脆弱になり、悪用される可能性があります。
情報漏洩: 電子メール アドレスまたはユーザー名が登録されているかどうかを指定するエラー メッセージは、攻撃者がアカウントの存在を確認して列挙するのに役立つ可能性があります。
安全でないトランスポート: リセット リンクまたはトークンを HTTPS 以外の接続経由で送信すると、これらの重要な要素がネットワーク盗聴者によって傍受される可能性があります。
予測可能なトークンの活用
単純で予測可能なトークンや有効期限が長いトークンは、傍受やブルート フォース攻撃に対して特に脆弱になる可能性があります。たとえば、以下のコードは、予測可能なトークン ラボでホストされている脆弱なアプリケーションで使用されています。