Shikata Ga Nai

Private? There is no such things.

Cracking the 2FAを訳してみた

Hello there, ('ω')ノ

 

2FAのクラッキングを。

 

脆弱性:

 2FAバイパス

 

記事:

 https://medium.com/@rushikesh12gaikwad/cracking-the-2fa-215d24ccb29b

 

ツール:

 Burp Suite

 

二要素認証(2FA)とは、アカウントまたはシステムを保護するための。

セキュリティの第2層で。

ユーザは、アカウントまたはシステムへのアクセスを許可される前に。

2層のセキュリティを通過する必要があって。


応答操作とは何かというと。

通常、Burp Suiteでは何かを改ざんまたは変更したい場合は。

リクエストを変更して転送するものの。

 

f:id:ThisIsOne:20211030201235p:plain

 

応答操作では、適切なリクエストを探す必要があって。

そして、リクエストからの応答を取得する方法として。

「Intercept」ボタンの横にある「Action」ボタンをクリックして。

「DoIntercept」>「Response to this request」を選択して。

 

f:id:ThisIsOne:20211030200938p:plain

 

応答操作では、サーバからのデータを改ざんすることができて。

f:id:ThisIsOne:20211030201021p:plain

 

では、さっそくバグを見てみることに。

ターゲットを、example.comと呼ぶことに。

アカウント保護用に2FAがあって、ブルートフォースやその他の方法で。

適切に実装されていなかったので。

「リカバリコードを使用するオプション」があったので。

これをテストすることに。

 

手順:

1.攻撃者と被害者のアカウントで2FAを有効にして。

 GoogleAuthenticatorとMicrosoftAuthenticatorは。

 それぞれの関係を維持するためだけのもので。

 

2.攻撃者のアカウントに移動してログインすると。

 「2FAコードを入力してください」のすぐ下に。

 「リカバリコードを使用」オプションが表示されて。

 (コードは、認証アプリケーションにアクセスできない場合や。

  デバイスを紛失した場合のバックアップとして提供されていて)

 

3.「リカバリコードを使用」オプションを選択して。

 攻撃者のアカウントの正しいバックアップコードを入力してリクエストを傍受して。

 そのリクエストの応答を取得して。

 

 応答には、_example_session=somenosと呼ばれるセキュリティ目的の。

 セッショントークンがあって。

 正しいリカバリコードを入力したときに得られる応答は、下記のとおりで。

 この応答をコピーして、メモ帳に保存しておいて。

 

f:id:ThisIsOne:20211030201055p:plain

 

4.さて、これがこのバグの重要性で。

 応答をドロップすると、Webサイトサーバへの_example_sessionトークンの送信が。

 停止されて、Webアプリケーションはそのトークンを無効にしないので。

 

5.被害者のアカウントに移動して、攻撃者の場合と同じ手順に従って。

 (手順1.と2.)


 手順3.の実行中に、間違ったリカバリコードを任意の番号で入力して。

 リクエストをキャプチャして、そのレスポンスを取得すると。

 エラー応答にセッショントークンが提供されていないことがわかって。

 これは、セッショントークンが必要で、エラー文字列があったことを意味して。

 下記は、間違ったリカバリコードを入力したときの応答で。

 

f:id:ThisIsOne:20211030201130p:plain


6.これで、サーバからの攻撃者のアカウント応答が。

 被害者のアカウントのエラー応答に対するその応答に置き換わって。

 

何が悪かったのかというと。

1)_example_sessionと呼ばれるセッショントークンは。

 誰かが割り当てられて返されなかったときにサーバ側で無効化されておらず。

 

2)文字列エラーメッセージの応答に。

 セキュリティが完全に残っているセキュリティ対策があったものの。

 トークンが無効になっているため。

 セキュリティがバイパスされる可能性があって。

 

結論:

 セッショントークンが適切に検証されていることを常に確認して。

 応答を返送するときは、いくつかのIDトークンが添付されていることを確認して。

 

Best regards, (^^ゞ