[F16_webhack] POST #2 資工四甲 402261434 楊育承

Group content visibility: 
Use group defaults

Hacking的基本目的不外乎就是 竊取資料、修改資料等目的,在現今的web技術中,網頁中大量使用JavaScript,因此我找了一些JavaScript Hijacking的文章一般認為,網頁安全威脅可能需要入侵網站伺服器、架設惡意網站,或在瀏覽時趁機在使用者電腦植入惡意程式等方式來攻擊,最近有人說只靠JavaScript Hijacking,就可以就能竊取資料,這是跨站(Cross-Site)攻擊的一種變形,原理與XSS(Cross-Site Script,跨站指令攻擊)、CSRF(Cross-Site Request Forgery,偽造跨站要求)類似,要實現這種攻擊需要受害網站、惡意網站、以及使用者瀏覽器等三方同時搭配,有別於一般透過入侵網站竊取資料的方式。

 

Ajax與JSON

在Web 2.0應用到的技術中,與JavaScript Hijacking有關的就是Ajax(Asynchronous JavaScript and XML)以及JSON(JavaScript Object Notation)。
在Ajax的部分,傳統網頁要靠使用者按下更新(Refresh)鍵以觀看最新的網頁內容,但是像Gmail這樣應用Ajax的站臺,不需要使用者親自按更新鍵也能見到最新的收信夾資料,因為它能夠將用戶端與伺服器端連結起來,在不更新整個頁面的前提下,更新需要的資訊,也使得網站伺服器能夠更快速地回應。因為傳統的網站運作,是依靠瀏覽器抓取網頁並顯示給使用者,因此需要使用者手動按下更新鍵來觸發更新的行為。

但是Ajax技術是使用JavaScript程式,在使用者端與伺服器端自行溝通,當有新資料的時候,JavaScript程式會自動抓取回來並且顯示在頁面上。這也是Ajax命名中所謂「非同步(Asynchronous)」的原因。而JSON其實是 JavaScript 的變數定義語法,是一種輕量級且可讀性高的資料轉換格式,規範在IETF RFC-4627之中。

Ajax架構下雖然可以使用XML,但是若傳遞資料的格式很簡單,使用XML會有「殺雞用牛刀」的感覺。因為XML既然是一種makeup language,定義起來就很嚴謹,如同HTML一樣需要表頭及表尾。若是傳遞的資料格式不太複雜,利用JSON其實經濟地多。而Fortify公司所作的示範,就是在Ajax架構下,利用JSON陣列,發動JavaScript Hijacking攻擊。

 

JavaScript Hijacking的具體方式

事實上,JavaScript Hijacking並不會對傳統形式的網站造成危害,它只能針對那些以JavaScript傳遞資料的網站產生威脅。要實現這種攻擊,需要受害網站、惡意網站、以及使用者瀏覽器等三方同時搭配,竊取資料的過程中也不需要入侵受害網站,或是在受害網站中植入任何的程式碼。

它與CSRF的運作模式類似。要完成JavaScript Hijacking,首先使用者瀏覽器要登入受害網站,登入並且取得cookie。此時,要是使用者又開了另一個瀏覽視窗,並且瀏覽到含有JavaScript Hijacking劫持攻擊的惡意網站(或是被插入惡意程式碼的網站),就可能因為執行惡意網站上面的JavaScript程式,進而將個人資料由受害網站傳送到惡意網站指定的地方。若是CSRF攻擊,則是指使瀏覽器傳送假造的資料。總而言之,JavaScript Hijacking是利用弱點「偷取資料」,而CSRF攻擊則是利用弱點「傳送假造資料」。

目前在網路上面找到的JavaScript Hijacking的攻擊程式大多利用覆寫 JavaScript 內建 Object 類別的建構子內容來達成。也就是說,當瀏覽器執行惡意網站上面的JavaScript程式時,會在登入受害網站的情況之下,呼叫惡意網站上面被覆寫過的程式碼。實際JavaScript Hijacking的概念驗證程式碼(Proof of Concept)可以在Fortify的技術文件中找到。

避免此類攻擊的方法

防制JavaScript Hijacking的方法目前有幾種:

一、在資料傳遞時,將cookie或是某些特別的欄位加入。因為惡意網站無法假造這種請求。

二、 檢查 HTTP表頭中的Referer欄位,我們可以知道是否是來自相同網域的請求。但是由於Referer可以經由一些方法變造,所以不是一個很保險的作法。你可以參考http://webappsec.org/lists/websecurity/archive/2006-07/msg00069.html

三、因為惡意網站使用<script>標籤來實行跨站攻擊,而<script> 只會產生HTTP GET請求,因此可以在伺服端設下限制,只回應HTTP POST的請求。

四、伺服器將傳回的JSON資料加以變造,使得JavaScript沒辦法直接執行。例如在JSON資料前後加上注釋符號,便可令 JavaScript 視之為一般注釋,而不加以執行,如此便不會喚起 Hijacking 程式碼。

五、 採用XML來傳遞資料,而非使用JSON。
隨著Web 2.0的網站越來越多,這種利用Ajax架構下弱點的攻擊,也會持續浮出水面。除了網站管理者要注意,所有上網的使用者也要小心。

 

回應

Some brands and retailers are great about fixing or replacing replica gucci bags that break within a year or two of purchase. Other brands--even those at similarly top-tier price points--have no real structure to help the purchasers of their absurdly expensive luxury goods when something goes wrong. Leather goods wear over time, of course, but brands and stores charging ultra-premium prices should be offering premium service--including when a mulberry replica bag breaks after only a season or two of normal use--and those policies should be clear to shoppers from the get-go. If your brand's delicate perception of exclusivity can't weather common modes of modern consumerism, it's not the Internet's fault. Boutique experiences are great, but simplicity and accessibility are their own types of hermes replica luxury, and plenty of potential consumers live in places that aren't accessible to in-person luxury shopping. There's something to be said for meeting shoppers halfway, especially when a brand is asking them to spend thousands of dollars on an unnecessary indulgence.