安全動態(tài)

Firefox for iOS瀏覽器的二維碼掃碼XSS漏洞

來源:聚銘網(wǎng)絡(luò)    發(fā)布時間:2020-01-06    瀏覽次數(shù):
 

信息來源:FreeBuf

在手機中,我們通常訪問一個網(wǎng)站的做法是打開瀏覽器在地址欄中輸入網(wǎng)站地址,一般來說這樣的方法有些煩人,所以,有些網(wǎng)站訪問對象通常也會生成一個二維碼圖片,方便用戶直接掃碼訪問,只要用戶手機掃碼就能跳轉(zhuǎn)到目標(biāo)訪問網(wǎng)站,或是把相應(yīng)信息顯示在用戶手機中。幾乎我們所有人都會用手機的掃碼功能,但是,你是否想過,如果你信任的應(yīng)用APP其掃碼功能出現(xiàn)安全錯誤,會發(fā)生什么情況?今天,我們就來談?wù)凢irefox IOS v10瀏覽器中的掃碼XSS漏洞。

Firefox IOS瀏覽器說明

根據(jù)蘋果應(yīng)用商店的說明,F(xiàn)irefox IOS v10中加入了更多新東西,極簡的用戶界面,可以隱藏多余顯示圖片,增加了一個二維碼掃碼功能,能突出顯示瀏覽記錄和最新資訊。

也就是說,從Firefox IOS v10開始,火狐手機瀏覽器加入了二維碼掃碼功能,其中使用了WebKit web view組件來加載內(nèi)容,其余的為SWIFT架構(gòu),包含在Firefox的漏洞眾測范圍之內(nèi)。以下為Firefox IOS v10掃碼訪問網(wǎng)站的一個動圖:

用javascript URI構(gòu)造XSS

所以,這里如何來發(fā)現(xiàn)其掃碼功能的漏洞呢?首先我想到的就是構(gòu)造一個javascript URI形式去替代二維碼中的URL,看看掃碼功能如何判斷,是否會把它當(dāng)成正常的文本,還是會當(dāng)成javascript代碼去執(zhí)行。我們試試看。

在這里,在二維碼生成網(wǎng)站其中輸入你的內(nèi)容就能自動生成一個二維碼,可以進行測試。

以上這兩個javascript URI功能為獲取用戶之前最后在瀏覽器中瀏覽過的網(wǎng)站信息。所以,假設(shè)有這么一種情況,當(dāng)前用戶處于瀏覽google.com的狀態(tài),但他通過Firefox掃碼想訪問另一網(wǎng)站,那么,如果掃碼的嵌入內(nèi)容是我們上述的javascript URI,那么當(dāng)他一掃碼就會跳出其訪問google.com的一些相關(guān)信息來。試試,確實可以,具體如下:

所以,這樣一來,既然能在這個點上完成javascript 代碼執(zhí)行,惡意攻擊者也就能用它竊取用戶cookie或其他相關(guān)信息了。這種攻擊范圍不僅只限于網(wǎng)站地址訪問可以用它來實現(xiàn)多種攻擊場景,如瀏覽器的閱讀模式。

瀏覽器閱讀模式下的XSS漏洞觸發(fā)

閱讀模式是瀏覽器提供給用戶的一種極簡閱讀體驗,在這種模式的加載過程中,瀏覽器會剔除掉一些不必要的代碼、框架、其它嵌入元素的渲染以及廣告的干擾。同樣,我用之前生成的形式看看是否能在閱讀模式下實現(xiàn)XSS,確實可以:

其中在代碼執(zhí)行后會跳出http://localhost:6571,這是javascript的window.location.href的用法。

在最后加入任意網(wǎng)站URL就能配合其它漏洞進行利用,形成對用戶信息的進一步威脅。

本地文件加載過程的XSS觸發(fā)

可以用該漏洞來觸發(fā)一些手機本地的文件加載,掃碼后,就有加載本地文件。

內(nèi)聯(lián)頁面加載過程的XSS觸發(fā)

在偽協(xié)議internal://頁面加載過程中形成XSS ,如:

 

CSP繞過

該漏洞同樣可以用來繞過CSP限制,比如某個網(wǎng)站只限于訪問來自它自身的內(nèi)容,如以下代碼場景:

// test.php

<?php

header("Content-Security-Policy: default-src 'self'");

if(isset($_GET['xss'])) {

echo$_GET['xss'];

}

?>

所以即使是這樣的限制,我們構(gòu)造的二維碼javascript代碼也可以無限制運行。

其它場景

還可以在頁面選定文本的查找中,如果選定文本是javascript URI形式,那么Firefox手機瀏覽器就會執(zhí)行其中的js代碼,但這種利用危害較小,只會顯示一個錯誤加載框,但好在還可以用它來把用戶導(dǎo)向其它惡意網(wǎng)站。 

其它瀏覽器的該漏洞情況

除了Firefox,Opera mini for IOS也存在上述XSS漏洞,我們已經(jīng)及時告知了Opera官方,但他們目前為止還未給出回應(yīng)。

漏洞原因分析

從v10一直到v19版本,F(xiàn)irefox 都在地址欄中支持 javascript URI 調(diào)用,這樣就存在上述XSS可能。

       經(jīng)上報給Firefox之后,他們及時從地址欄中刪除了javascript URI功能,漏洞也獲得CVE-2019-17003的分配。

 
 

上一篇:Sodinokibi 攻擊了加州 IT 服務(wù)提供商 Synoptek 并獲得贖金

下一篇:當(dāng)軍事對抗力量不對等時,第五領(lǐng)域“網(wǎng)絡(luò)空間”無疑將是大國博弈的最終戰(zhàn)場。