天天看點

深入了解JavaScript Hijacking原理

  最近在整理關于JavaScript代碼安全方面的資料,在查關于JavaScript Hijacking的資料時,發現關于它的中文資料很少,故特意整理一下。

一.JavaScript Hijacking原理

(2).信任站點通過你的驗證,并傳回Cookie。

        到這裡,你應該有對JavaScript Hijacking有一個大概的概念,它确實和CSRF很相像,唯一不同的是,<b>CSRF是模拟你的身份去發送請求,JavaScript Hijacking是模拟你的身份,竊取你在伺服器上的私隐資訊</b>。

<b>二.JavaScript Hijacking攻擊示範代碼:</b>

示範代碼之前,首先明确幾點:

(2).惡意站點是通過使用者給它傳回信任網站的JSON數組(為什麼是JSON數組?普通的JSON對象不行麼?這個下面會提到!),進而擷取使用者私隐資訊的。也就是說所謂的隐私資料,也就是這些JSON數組裡面的資料,是以信任站點傳回的不是JSON數組的資料或者JSON裡面的資訊是垃圾資訊,那麼這個惡意站點是徒勞的。

(3).惡意站點必須實先知道使用者傳回的JSON的結構。

(4).惡意站點能且隻能發送GET請求......

(5).這種攻擊是需要浏覽器支援的,至于為什麼看下面吧。

恩,下面看一下攻擊代碼吧:&gt;

在使用者通路惡意網站時:

(3).用戶端接受到這段JS腳本後,如果傳回的是一個JSON數組,比如:

JSON數組被認為是一段可執行的JavaScript腳本,于是浏覽器會解析執行。

如果傳回的是一個JSON對象呢?

呵呵,這個是不會被浏覽器執行的,因為浏覽器認為:它不是一個JavaScript腳本。

如果它傳回的是一個JavaScript腳本的話,恩,這得具體問題具體分析了,不一定能拿到什麼資料。

(4).看下面這段JavaScript腳本:

它的作用就是發送受害者的私隐資訊到惡意站點的。

這裡可能有人不了解,我大概說一下:

         後面的var objString=""...這就是發送受害者資訊到惡意站點了,這裡不說了。

         當浏覽器解析(3)中的JSON數組時,會建立一個對象并指派,這時候就出發了上面這段代碼,結果私隐資訊就發送到惡意站點了。

<b>參考資料</b>:

【1】Fortify的一篇Paper《JavaScript_Hijacking》,作者:B. Chess, Y. O'Neil, and J. West。

【2】《JSON Hijacking》,作者:Phil Haack

本文轉自hyddd部落格園部落格,原文連結:http://www.cnblogs.com/hyddd/archive/2009/07/02/1515768.html,如需轉載請自行聯系原作者。

繼續閱讀