Shikata Ga Nai

Private? There is no such things.

Bugcrowd — Tale of multiple misconfigurations!!を訳してみた

Best regards, ('ω')ノ

 

複数の設定ミスの話を。

 

脆弱性

 アカウントの乗っ取り

 OAuth

 OTP バイパス

 パスワードのリセット

 

記事:

 https://infosecwriteups.com/bugcrowd-tale-of-multiple-misconfigurations-cb5b98f09302

 

今回は、ドメインで見つかった設定ミスに関する記事で。

これは非公開のプログラムなので、redacted.com と呼ぶことに。

 

アプリケーションの範囲は膨大でしたが、通常のサブドメイン スキャンと。

これらすべての高度な偵察から始めて。

メイン アプリケーションのテストを開始することにし。

Web アプリケーションは、多くの取引があるシンプルな E コマース Web サイトで。

 

普段はそういったサイトのビジネスロジック脆弱性を。

チェックしようとしているのですが、今回は認証の仕組みに目が留まり。

ということで、まずはアカウント作成して。

気づいたのは OAuth メカニズムで。

 

メールサインアップ

 

そこで、Pentest Book の美しい方法論と 2 つ目のダミー アカウントを使用して。

OAuth の脆弱性のチェックを開始しましたが、何も見つからず。

基本的な脆弱性チェックが忘れられていて。

さっそくダミーアカウントとBoomを使ってOAuthアカウントを作ってみたところ。

同じメールIDで2つのアカウントを作ることができて。

 

https://pentestbook.six2dez.com/enumeration/webservices/oauth#bugs

 

メールサインアップを使用して作成されたアカウント


同じ電子メールを使用した OAUTH ログイン


アカウント乗っ取り前の Oauth の構成ミス

 

手順全体を要約すると、次の手順が実行され。

1.Web サイトにアクセスし、[サインアップ] をクリックして。

2.未登録の被害者の電子メール (test@gmail.com など) を使用して。

 アカウントを作成し。

3.OAuth メカニズムを使用し、同じ OAuth アカウントを使用して。

 別のアカウントを作成して。

 

影響:

電子メールとパスワードを使用して作成されたアカウントは無効になるはずですが。

無効にならないということは、攻撃者が電子メールを使用して。

アカウントを作成するときに使用した資格情報を使用して。

ログインできることを意味し、アカウントの事前乗っ取りにつながって。

 

もっと探すと今回、パスワードを忘れる機能が目に留まり。

パスワードのリセットメカニズムは次のとおりで。

 

1.ユーザは自分の電子メールを入力し。

2.6桁のOTPが生成され、ユーザの電子メールに送信され。

3.ユーザが新しいパスワードを設定して。

 

認証バイパスを試して、被害者のパスワードを変更できるかどうかを確認すると。

メールを入力して OTP を要求し、間違った OTP を入力し。

応答をキャプチャして応答操作を試みましたが、うまくいかず。

しかし、アプリケーションが ajax を使用して。

パスワードのリセットを実行していることがわかり。

AJAX を使用すると、バックグラウンドでサーバと少量のデータを。

交換することにより、Web ページを非同期に更新できて。

 

手順:

1.サインイン ページに移動し、[パスワードを忘れた場合] をクリックし。

2.攻撃者のメールを入力して。

 自分のメールアドレスは attacker@gmail.com で。

3.次に、attacker@gmail.com で受信した正しい OTP を入力し。

 応答をキャプチャして保存し。

4.新しいパスワードの設定ページにリダイレクトされますが。

 代わりにパスワードを設定しないで。

 再度サインイン ページに移動し、[パスワードを忘れた場合] をクリックして。

5.被害者のメールアドレスを入力して。

 例:victim@gmail.com (この場合は aadesh004@protonmail.com )

 

 

被害者の電子メールを入力

 

6.ランダムな OTP、つまり 000000 を入力し、Burp Suiteを使用してリクエストを。

 インターセプトして。

 インターセプトを実行 ⇨ このリクエストへの応答

 

ランダムOTPを入力

 

7.応答で、応答を次のように操作して。

 {"successTextKey":"success","errors":null}


生成された応答


応答操作

 

8.リクエストを転送すると、新しいパスワードの設定にリダイレクトされ。

 今度はパスワードを設定してアカウントを乗っ取って。


新しいパスワードを設定


アカウント乗っ取り

 

Best regards, (^^ゞ