hacktricks/pentesting-web/2fa-bypass.md

12 KiB
Raw Blame History

2FA/OTP バイパス

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

2要素認証のバイパス

直接バイパス

2FAをバイパスするには、単に次のエンドポイントに直接アクセスしてみてください次のエンドポイントのパスを知る必要があります。これが機能しない場合は、2FAページから来たかのようにリファラーヘッダーを変更してみてください。

トークンの再利用

以前にアカウント内で使用されたトークンを再利用して認証することができるかもしれません。

未使用のトークンの共有

アカウントからトークンを取得し、別のアカウントで2FAをバイパスするために使用できるか確認してください。

リークしたトークン

トークンはWebアプリケーションのレスポンスで漏洩しているかどうかを確認してください。

メールの確認リンク

アカウント作成時に受け取ったメールの確認リンクを使用して、2FAが設定されていてもそのリンクだけでプロフィールにアクセスできるか試してみてください記事)。

セッションの権限

同じセッションを使用して、自分のアカウントと被害者のアカウントでフローを開始します。両方のアカウントで2FAポイントに到達したら、自分のアカウントで2FAを完了させずに次のステップに被害者のアカウントのフローでアクセスしようとしてください。バックエンドがセッション内のブール値を設定して、2FAを正常にパスしたことを示している場合、被害者の2FAをバイパスすることができます。

パスワードリセット機能

ほとんどのWebアプリケーションでは、パスワードリセット機能はリセット手順が完了した後にユーザーを自動的にアプリケーションにログインさせます。
メールが送信され、パスワードをリセットするためのリンクが含まれているかどうかを確認し、被害者がメールアドレスを変更してもそのリンクを何度でも再利用してパスワードをリセットできるかどうかを確認してください。

パスワードリセット機能を使用して2FAをバイパスする別の方法は、メールにアクセスできる状態でパスワードをリセットし、新しいパスワードでログインすることです。パスワード変更後に2FAが使用されない可能性があります。

OAuth

信頼されたOAuthプラットフォームGoogle、Facebook...)でユーザーのアカウントを侵害できる場合

ブルートフォース

レート制限の不足

試行することができるコードの数に制限があるかどうかを確認して、単純にブルートフォースできるかどうかを確認してください。潜在的な「サイレント」レート制限に注意して、実際のコードを確認するためにいくつかのコードを試してから本物のコードを試してください。

フローレート制限があるがレート制限がない場合

この場合、フローレート制限があります非常にゆっくりとブルートフォースする必要があります1つのスレッドと2回の試行前に一定時間スリープします、しかしレート制限はありません。十分な時間があれば、有効なコードを見つけることができるでしょう。

コードの再送信と制限のリセット

レート制限があるが、「コードを再送信」すると同じコードが送信され、レート制限がリセットされます。そのため、コードを再送信する間にコードをブルートフォースして、レート制限に達しないようにすることができます。

クライアント側のレート制限バイパス

{% content-ref url="rate-limit-bypass.md" %} rate-limit-bypass.md {% endcontent-ref %}

ユーザーアカウントのレート制限の不足

アカウント内の一部のアクションメールの変更、パスワードなどに対して2FAを設定できる場合があります。ただし、ログインしようとしたときにレート制限がある場合でも、アカウント内のアクションを保護するためのレート制限はありません。

SMS経由でコードを再送信する際のレート制限の不足

2FAをバイパスすることはできませんが、会社のお金を無駄にすることはできます。

無限のOTP再生成

新しいOTPを無限に生成でき、OTPが十分に単純4桁の数字であり、生成されたOTPごとに4つまたは5つのトークンを試すことができる場合、毎回同じ4つまたは5つのトークンを試して、一致するまでOTPを生成し続けることができます。

レースコンディション

次のページの2FAバイパスのセクションを確認してください

{% content-ref url="race-condition.md" %} race-condition.md {% endcontent-ref %}

CSRF/Clickjacking

2FAを無効化するためのクロスサイトリクエストフォージェリCSRFまたはクリックジャッキングの脆弱性があるかどうかをチェックします。

「Remember me」機能

推測可能なクッキー

「Remember me」機能が推測可能なコードを使用して新しいクッキーを使用している場合、それを推測してみてください。

IPアドレス

「Remember me」機能があなたのIPアドレスに関連付けられている場合、被害者のIPアドレスを特定し、X-Forwarded-Forヘッダーを使用してそれをなりすますことができます。

古いバージョン

サブドメイン

ログイン機能を持つ「テスト」サブドメインを見つけることができれば、それらは2FAをサポートしていない古いバージョンを使用している可能性がありますそのため、直接バイパスされますまたはそれらのエンドポイントが脆弱な2FAのバージョンをサポートしている可能性があります。

API

2FAが/v*/ディレクトリ(例:"/v3/"の下にあるAPIを使用していることがわかった場合、おそらく古いAPIエンドポイントがあり、いくつかの種類の2FAバイパスに対して脆弱性がある可能性があります。

前のセッション

2FAが有効になっている場合、前のセッションは終了する必要があります。これは、クライアントがアカウントを侵害された場合、2FAを有効にして保護したい場合に、前のセッションが終了されていないと保護されないためです。

バックアップコードへの不適切なアクセス制御

バックアップコードは、2FAが有効になった直後に生成され、単一のリクエストで利用できます。その後のリクエストごとにコードが再生成されるか変更されない静的コード場合、CORSの誤構成/XSSの脆弱性など、バックアップコードエンドポイントのレスポンスリクエストからバックアップコードを「引っ張る」ことができる他のバグがある場合、攻撃者はコードを盗み、ユーザー名とパスワードがわかっている場合に2FAをバイパスすることができます。

情報漏洩

2FAページに以前知らなかった機密情報が表示される場合、これは情報漏洩の脆弱性と見なされる可能性があります電話番号

パスワードリセット == 2FA無効化

  1. アカウントを作成し、2FAをオンにします。
  2. そのアカウントからログアウトします。
  3. パスワードリセットページに移動します。
  4. パスワードを変更します。
  5. 今度はログインしてみてください。
  6. 2FAコードの入力を求められない場合、報告できます。

参考文献

{% embed url="https://medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35" %}

{% embed url="https://azwi.medium.com/2-factor-authentication-bypass-3b2bbd907718" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥