再接続-Facebookログインの脆弱性

画像



すべてが非常に簡単です-Facebookにログインできれば、Facebookを他のWebサイトの被害者のアカウントに接続できます。 被害者は私たちのページをダウンロードし、Booking.com、Bit.ly、About.me、Stumbleupon、Angel.co、Mashable.com、Vimeo、および他の多くのウェブサイトで被害者のアカウントにアクセスします。



手順1.このURL www.facebook.com/n/?mid=9dd1fd7G5af48de9ca58G0G86G119bb48cをダウンロードすると、FBユーザーがログアウトされます



ステップ2. Facebookアカウントで被害者にログインするには、login.phpをリクエストする際にOrigin = *。Facebook.comが必要です。 オリジンはブラウザ自体によって送信され、リクエストが行われたページのドメインが含まれます。 つまり、Facebook自体からPOSTリクエストを行う方法を見つける必要があります。 これはFirefoxには必要ありません-通常のフォームベースのリクエストではOriginを送信しません。 したがって、Chrome専用にさらにハッキングしてください。



次の設定でCanvasアプリケーションを作成しましょう。



画像



犠牲者がapps.facebook.com/482922061740192に到達すると、FacebookはこのURLでPOSTリクエストを送信します(facebook.comにあるべきではありません)。 次に、307リダイレクト(302ではなくHTTP動詞を保存)を使用します。これにより、Origin: apps.facebookとともにwww.facebook.com/login.php?email=attacker@email.com&pass=passwordで POSTリクエストが送信されます。 comおよびユーザー名/パスワード。 これで、被害者はFacebookアカウントにログインしました。



手順3.接続プロセスを開始します。 普通
<img src="http://victim.com/auth/facebook">
      
      



動作します。



Facebookが被害者のアカウントに接続されたので、被害者のアカウントに直接ログインしたり、booking.comで予約をキャンセルしたり、プライベートメッセージを読んだり、パスワードを変更したりできます。



この単純なバグは、ログアウト時、ログイン時、ソーシャルアカウントへの参加時の3つのCSRFを同時に使用します。 最初の2つはFacebookを修正する必要があります(ただし、彼らは拒否しました、これはWontFixです)、最後は開発者のタスクです。



再接続はアカウントをハイジャックするためのツールであり 、コードをコピーしてだれでも破ることができます-私は気にしません。 例には、Booking.com、Bit.ly、About.me、Stumbleupon、Angel.co、Mashable.com、Vimeoが含まれますが、他のFacebook Connect Webサイトは脆弱である可能性があります。 たとえば、omniauth-facebookを使用するすべてのRailsサイトは脆弱です。



All Articles