12 KiB
2FA/OTP バイパス
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksで会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを見つけてください。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksのグッズを手に入れましょう。
- 💬 Discordグループまたはtelegramグループに参加するか、Twitterで🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。
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無効化
- アカウントを作成し、2FAをオンにします。
- そのアカウントからログアウトします。
- パスワードリセットページに移動します。
- パスワードを変更します。
- 今度はログインしてみてください。
- 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 🎥
- サイバーセキュリティ企業で働いていますか? HackTricksであなたの会社を宣伝したいですか?または、PEASSの最新バージョンにアクセスしたり、HackTricksをPDFでダウンロードしたりしたいですか?SUBSCRIPTION PLANSをチェックしてください!
- The PEASS Familyを発見しましょう。独占的なNFTのコレクションです。
- 公式のPEASS&HackTricksグッズを手に入れましょう。
- 💬 DiscordグループまたはTelegramグループに参加するか、Twitter 🐦@carlospolopmをフォローしてください。
- ハッキングのトリックを共有するには、PRを hacktricks repo と hacktricks-cloud repo に提出してください。