Shikata Ga Nai

Private? There is no such things.

How I was able to take over accounts in websites deal with Github as an SSO providerを訳してみた

Hello there, ('ω')ノ

 

Githubを扱っているWebサイトでアカウントを引き継ぐことができた方法を。

 

脆弱性:

 ブルートフォース

 レート制限の欠如

 SSOバグ

 Eメール検証バイパス

 アカウント乗っ取り

 

記事:

 https://infosecwriteups.com/how-i-was-able-to-takeover-accounts-in-websites-deal-with-github-as-a-sso-provider-294290358e0c

 

シングルサインオン(SSO)は、ユーザが1セットの資格情報を使用して。

複数のアプリケーションやサービスに安全にアクセスできるようにする。

ユーザ認証ツールで。

就業日がSlack、Asana、Google Workspace、Zoomのいずれに依存している場合でも。

SSOは、すべての統合アプリにアクセスできる1つのパスワードのみを備えた。

ポップアップウィジェットまたはログインページを提供して。

SSOは、1日に12個のパスワードを使用する代わりに、1個だけを安全に保証して。

シングルサインオンは、複数のパスワードを覚えて入力する時代を終わらせ。

忘れたパスワードをリセットしなければならないという。

フラストレーションを解消して。

ユーザは、毎回ログインしなくても。

さまざまなプラットフォームやアプリにアクセスできて。


説明:

偵察から始めてGithubを見てみること。

興味深いものは何も見つからず。

 

次のフェーズに進み、アカウントの作成から始めまて。

Githubでのアカウントの作成は、アカウントの作成後に非常に簡単で。

メールに送信された6桁のコードでメールを確認するように求められるはずで。

メールにアクセスしたところ、コードを手動で入力できない場合は。

コードと一緒にリンクが送信されていることがわかって。

 

リンクには、送信されたのと同じ6桁のコードが含まれていて。

トークンなどの代わりに少し面白かったのですが。

手動フォームを使ってコードを入力しようとすると厳しいレート制限があったので。

コードをブルートフォースすることはできず。

 

リンクを使うとレート制限はなかったので。

コードをブルートフォース攻撃することに成功して。

有効なコードを取得するまで、約130,000(13万リクエスト)を送信して。

 

再現する手順:

1.被害者の電子メールでアカウントを作成して。

 

2.このフォームで、(「コードを再送信」)をクリックして。

 https://github.com/account_verifications


3.メールIDを取得するには、プロキシを開いて。


4.このURLに対してインターセプトされたPOSTリクエストが表示されて。

 これがメールID(〜email-id〜)で。

 /users/〜username〜/emails/〜email-id〜/request_verification

 

5.このURLをメールIDとユーザ名で次のように更新して。

 https://github.com/users/~username~/emails/〜email-id〜/confirm_verification/000000?via_launch_code_email=true


6.最後に、このリクエストをIntruderに送信し、ブルートフォーシングを開始して。

 

影響:

多くのウェブサイトがGithubをSSOプロバイダーとして扱っているため。

誰かがGithubにアカウントを持っていない場合は。

攻撃者はユーザのメールアドレスを使用してGithubにアカウントを作成し。

それらのウェブサイトでユーザのアカウントを乗っ取ることができて。

 

Best regards, (^^ゞ