Hello there, ('ω')ノ
Githubを扱っているWebサイトでアカウントを引き継ぐことができた方法を。
脆弱性:
ブルートフォース
レート制限の欠如
SSOバグ
Eメール検証バイパス
アカウント乗っ取り
記事:
シングルサインオン(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, (^^ゞ