Hello there, ('ω')ノ
攻撃の短い時間枠でOAuthの設定ミスの発見を。
脆弱性:
OAuthの設定ミス
記事:
ツール:
Burp Suite
重要度:
低い重大度(BugcrowdのP4)
今回のプログラムには。
電子メール(サインアッププロセス後のドメイン独自のアカウント管理)または。
Facebookクレデンシャルのいずれかを介してログインを提供するスコープ内の。
ドメインがあって。
Facebookアカウントでログインすることで、期待通り簡単にログインできて。
ログインを成功させるために、アプリケーションサーバは。
認証のOAuthフローに従って。
このフローでは、資格情報が正しい場合は。
Facebookサーバはログイン用のアクセスコードを返して。
アプリケーションサーバへのアクセス要求は、下記の形式で。
https://redacted.com/login?id=xxx&code=x-xxxxxx-xxxxxxxxx-xxxxxxxxxxxxxx
Facebookアカウントからではなく、アプリケーションからログアウトすると。
同じブラウザでFacebookにすでにログインしているので。
シングルクリックでアプリケーションに再度ログインできるのが普通ですが。
アプリケーションとFacebookアカウントからログアウトすると。
アプリケーションは、アカウントのアクセスを許可するために。
Facebookのクレデンシャルを再度要求して。
実際に認証のOAuthフローに従って、資格情報が再び正しい場合は。
Facebookサーバはログイン用の新しいアクセスコードを返して。
最初にしたことは、Facebookアカウントだけでなくアプリケーションからも。
ログアウトすることで。
次に、アプリケーションのインターフェイスで。
[Facebookでログイン]をクリックすると。
現在、Facebookにログインしていないにもかかわらず。
自分のアカウントにアクセスしたので。
疑念を抱いて、アプリケーションから再度ログアウトして。
Facebookアカウントのパスワードをすばやく変更して確認すると。
以前のパスワードが、アプリケーションまたはブラウザのメモリのどこかに。
まだ存在しているとFacebookアカウントのアクセスを許可できないはずで。
もう一度アプリケーションのインターフェースで。
「Facebookでログイン」をクリックして。
今回も自分のアカウントにアクセスすると。
最後に、アクセスコードを含むHTTPリクエストを受け取って。
それを新しいブラウザに適用すると再び自分のアカウントに入って。
プログラムは、有効なコードを受け取ってから5分以内に。
アクセスが再度要求された場合にサーバがFacebookに戻らないように。
許可しているとのことで特定のログインIDについては。
以前に受信したものと同じアクセスコードを使用しているらしく。
つまり、一度有効なアクセスコードを取得した場合は。
短い時間枠内で、Facebook経由でアプリケーションへのログインを。
新たに要求した場合でも、サーバが同じコードを使用し続けて。
Facebookからログアウトしたり。
Facebookアカウントのパスワードを変更したりするなど。
Facebookアカウントで実行されたアクションに関係なく。
新しいアクセスコードを求めて、Facebookに戻ることはないので。
5分の短い時間枠内で、コードの取得に最近使用されたFacebookの期限切れの。
クレデンシャル(アクセスコードを知っている)を使用して。
アカウントへのアクセスが可能で。
これは、リプレイ攻撃に使用されて。
攻撃の短い時間枠でハッカーによるアカウントへの不正アクセスを。
取得する可能性があって。
Best regards, (^^ゞ