安基網 首頁 安全 Web安全 查看內容

JSON劫持攻擊[匯總]

2019-5-17 02:51| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: JSON 劫持又為“ JSON Hijacking ”,最開始提出這個概念大概是在 2008 年國外有安全研究人員提到這個 JSONP 帶來的風險。其實這個問題屬于 CSRF( Cross-site request forgery 跨站請求偽造)攻擊范疇。當某網站聽過 JSONP 的方式來快域(一般為子域)傳遞用戶認證后的敏感信息時,攻擊者可以構造惡意 ...

JSON 劫持又為“ JSON Hijacking ”,最開始提出這個概念大概是在 2008 年國外有安全研究人員提到這個 JSONP 帶來的風險。其實這個問題屬于 CSRF( Cross-site request forgery 跨站請求偽造)攻擊范疇。當某網站聽過 JSONP 的方式來快域(一般為子域)傳遞用戶認證后的敏感信息時,攻擊者可以構造惡意的 JSONP 調用頁面,誘導被攻擊者訪問來達到截取用戶敏感信息的目的。

漏洞原理

JSON實際應用的時候會有兩種傳輸數據的方式:

xmlhttp獲取數據方式:

{"username":"wooyun","password":"wooyun"}

當在前端獲取數據的時候,由于數據獲取方和數據提供方屬于同一個域下面,所以可以使用 xmlhttp的方式來獲取數據,然后再用xmlhttp獲取到的數據傳入自己的js邏輯如eval。

script獲取數據方式:

userinfo={"username":"wooyun","password":"wooyun"}

如果傳輸的數據在兩個不同的域,由于在javascript里無法跨域獲取數據,所以一般采取script標簽的方式獲取數據,傳入一些callback來獲取最終的數據,這就有可能造成敏感信息被劫持。

所以,總的來說就是網站以JSON形式輸出數據,且其中包含用戶敏感信息,攻擊者通過第三方站點以CSRF手段使用戶瀏覽器請求目標站點得到包含敏感信息的JSON數據,進而劫持到敏感信息。

json劫持

json劫持攻擊又為”JSON Hijacking”,攻擊過程有點類似于csrf,只不過csrf只管發送http請求,但是json-hijack的目的是獲取敏感數據。

一些web應用會把一些敏感數據以json的形式返回到前端,如果僅僅通過cookie來判斷請求是否合法,那么就可以利用類似csrf的手段,向目標服務器發送請求,以獲得敏感數據。

比如下面的鏈接在已登錄的情況下會返回json格式的用戶信息:

http://www.test.com/userinfo

攻擊者可以在自己的虛假頁面中,加入如下標簽:


如果當前瀏覽器已經登錄了www.test.com,并且cookie未過期,然后訪問了攻擊者的虛假頁面,那么該頁面就可以拿到json形式的用戶敏感信息,因為script標簽會自動解析json數據,生成對應的js對象。然后再通過

Object.prototype.__defineSetter__

這個函數來觸發自己的惡意代碼。

但是這個函數在當前的新版本chrome和firefox中都已經失效了。

jsonp劫持

Jsonp(json with padding)是基于 JSON 格式的為處理跨域請求資源而產生的處理方案,遠程調使用 JSON 文件來實現數據傳遞。利用script元素的開放策略,網頁可以得到從其他來源動態產生的json數據,因此可以用來實現跨域。

舉一個例子

$callback = $_GET['callback'];
print $callback . '({"id" : "1","name" : "小明"});';
?>

這里出現了callback他的作使用就是回調我們的json。

web程序如果通過這種方式跨域之后,攻擊者完全可以在自己的虛假頁面中發起惡意的jsonp請求,這就引來了安全問題。比如:



如果服務器端的userinfo接口支持jsonp,那就會使虛假頁面成功執行useUserInfo函數,從而導致安全問題。

json劫持的挖掘過程的referer繞過機制。

  1. 正則不嚴謹

如正常請求的referer:www.123.com

我們修改為referer

只要要攻擊者利使用時注冊相應的域名即可以繞過

  1. 空referer

這里直接刪去referer是最簡單的一個

jsonp接口漏洞挖掘

相關的介紹就不細細道來了,其實原理也就是JSONP實際上是使用script方式獲取Javascript代碼,進而執行,因此可以在我們自己的頁面中,使用JSONP獲取數據,并使用Javascript Hook的方式,讓其執行我們自定義的回調函數,獲取敏感信息。

需要滿足的條件:

  1. 使用JSONP獲取數據;
  2. 未檢測 referer或者驗證了 referer,但是驗證方式不嚴謹,如需要驗證的 referer 為 www.xxx.com 域,但是 www.xxx.com.mydomain.com 同樣能夠繞過;
  3. GET請求中不包含token相關的參數

如何挖掘這樣的接口呢?我們可以使用Fiddler、burpsuite或者F12等方法去一個個檢查,但這樣豈不是要累死人了……

更輕松的方式:自動化測試工具Selenium + Proxy + 驗證腳本

(1)Selenium:可用于自動化對網頁進行測試,“到處”點擊按鈕、超鏈接,以期待測試更多的接口;

(2)Proxy:用于代理所有的請求,過濾出所有包含敏感信息的JSONP請求,并記錄下HTTP請求;

(3)驗證腳本:使用上述的HTTP請求,剔除referer字段,再次發出請求,測試返回結果中,是否仍包敏感信息,如果有敏感信息,說明這個接口就是我們要找的!

測試:

使用腳本進行測試,我以sina為例,首先需要登錄sina帳號,微博或者博客都可以,然后開啟瀏覽器代理,運行我們的腳本,最后瀏覽網頁,就能檢測出這樣的JSONP接口了



至此發現該JSONP接口,簡單寫兩句JS代碼放到我們的網站上:

$.ajax({
url: 'https://api.weibo.com/2/{隱藏了哦}',
type: 'get',
dataType: 'jsonp',
}).done(function(json){
var id = json["data"]["id"];
var screen_name = json["data"]["screen_name"];
var profile_image_url = json["data"]["profile_image_url"];
var post_data = "";
post_data += "id=" + id + "&";
post_data += "screen_name=" + screen_name + "&";
post_data += "profile_image_url=" + encodeURIComponent(profile_image_url);
console.log(post_data);
// 發送到我的服務器上
}).fail(function() {});

很快就可以收到大波的用戶信息了


相關的代碼放到了Github上,https://github.com/qiaofei32/jsonp_info_leak

漏洞危害

JSON劫持主要能夠造成的危害大概有這么幾類:

1. 可能導致用戶權限被盜用;

攻擊者通過JSON劫持構造盜取管理員或高權限用戶的腳本,一旦被訪問,權限立即被盜用。

2. 可以通過劫持對網頁進行掛馬;

在JSON劫持點構造引向漏洞后門木馬,但訪問直接利用漏洞批量掛馬。

3. 可對劫持頁進行網站釣魚;

利用JSON劫持直接導向偽裝網站地址。

4. 可做提權攻擊;

5. 變種拒絕服務攻擊;

劫持后將流量導向受害網站,直接發動DDOS攻擊。

解決方法

其實json劫持和jsonp劫持屬于CSRF( Cross-site request forgery 跨站請求偽造)的攻擊范疇,所以解決的方法和解決csrf的方法一樣。

  1. 驗證 HTTP Referer 頭信息;
  2. 在請求中添加 csrfToken 并在后端進行驗證;


小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/a6691512430310195715/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人

路過

雞蛋

相關閱讀

最新評論

 最新
返回頂部
创业如何赚钱 3分快3计划软件 贵州十一选五前直遗漏 云南福彩十一选五开奖号码 好彩1+1好彩1+1 2019澳洲幸运5预测计划 时时彩计划安卓手机版 重庆幸运农场赢钱技巧 秒彩票下载 极速时时彩哪里开的 大乐透开奖中奖规则图 佛山期货配资公司 甘肃新11选5任五开奖 吉林省十一选五推荐号码 福建快3开奖结果走势 最全的江西快3平台 宁夏11远五开奖查询