乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JSON劫持攻擊[匯總]

       求知_時(shí)光 2019-05-25

      本文轉(zhuǎn)自公眾號(hào):安全祖師爺

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

      漏洞原理

      JSON實(shí)際應(yīng)用的時(shí)候會(huì)有兩種傳輸數(shù)據(jù)的方式:

      xmlhttp獲取數(shù)據(jù)方式:

      {'username':'wooyun','password':'wooyun'}

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

      script獲取數(shù)據(jù)方式:

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

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

      所以,總的來說就是網(wǎng)站以JSON形式輸出數(shù)據(jù),且其中包含用戶敏感信息,攻擊者通過第三方站點(diǎn)以CSRF手段使用戶瀏覽器請(qǐng)求目標(biāo)站點(diǎn)得到包含敏感信息的JSON數(shù)據(jù),進(jìn)而劫持到敏感信息。

      json劫持

      json劫持攻擊又為”JSON Hijacking”,攻擊過程有點(diǎn)類似于csrf,只不過csrf只管發(fā)送http請(qǐng)求,但是json-hijack的目的是獲取敏感數(shù)據(jù)。

      一些web應(yīng)用會(huì)把一些敏感數(shù)據(jù)以json的形式返回到前端,如果僅僅通過cookie來判斷請(qǐng)求是否合法,那么就可以利用類似csrf的手段,向目標(biāo)服務(wù)器發(fā)送請(qǐng)求,以獲得敏感數(shù)據(jù)。

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

      http://www./userinfo

      攻擊者可以在自己的虛假頁(yè)面中,加入如下標(biāo)簽:

      <script src='http://www./userinfo'></script>

      如果當(dāng)前瀏覽器已經(jīng)登錄了www.,并且cookie未過期,然后訪問了攻擊者的虛假頁(yè)面,那么該頁(yè)面就可以拿到j(luò)son形式的用戶敏感信息,因?yàn)閟cript標(biāo)簽會(huì)自動(dòng)解析json數(shù)據(jù),生成對(duì)應(yīng)的js對(duì)象。然后再通過

      Object.prototype.__defineSetter__

      這個(gè)函數(shù)來觸發(fā)自己的惡意代碼。
      但是這個(gè)函數(shù)在當(dāng)前的新版本chrome和firefox中都已經(jīng)失效了。

      jsonp劫持

      Jsonp(json with padding)是基于 JSON 格式的為處理跨域請(qǐng)求資源而產(chǎn)生的處理方案,遠(yuǎn)程調(diào)使用 JSON 文件來實(shí)現(xiàn)數(shù)據(jù)傳遞。利用script元素的開放策略,網(wǎng)頁(yè)可以得到從其他來源動(dòng)態(tài)產(chǎn)生的json數(shù)據(jù),因此可以用來實(shí)現(xiàn)跨域。

      舉一個(gè)例子

      <?php

      $callback = $_GET['callback'];

      print $callback . '({'id' : '1','name' : '小明'});';

      ?>

      這里出現(xiàn)了callback他的作使用就是回調(diào)我們的json。

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

      <script>
      function useUserInfo(v){
         alert(v.username);
      }
      </script>
      <script src='http://www./userinfo?callback=useUserInfo'></script>

      如果服務(wù)器端的userinfo接口支持jsonp,那就會(huì)使虛假頁(yè)面成功執(zhí)行useUserInfo函數(shù),從而導(dǎo)致安全問題。

      json劫持的挖掘過程的referer繞過機(jī)制。

      1. 正則不嚴(yán)謹(jǐn)

      如正常請(qǐng)求的referer:www.123.com

      我們修改為referer

      只要要攻擊者利使用時(shí)注冊(cè)相應(yīng)的域名即可以繞過

      2. 空referer

      這里直接刪去referer是最簡(jiǎn)單的一個(gè)

      jsonp接口漏洞挖掘

      相關(guān)的介紹就不細(xì)細(xì)道來了,其實(shí)原理也就是JSONP實(shí)際上是使用script方式獲取Javascript代碼,進(jìn)而執(zhí)行,因此可以在我們自己的頁(yè)面中,使用JSONP獲取數(shù)據(jù),并使用Javascript Hook的方式,讓其執(zhí)行我們自定義的回調(diào)函數(shù),獲取敏感信息。

      需要滿足的條件:

      1. 使用JSONP獲取數(shù)據(jù);

      2. 未檢測(cè) referer或者驗(yàn)證了 referer,但是驗(yàn)證方式不嚴(yán)謹(jǐn),如需要驗(yàn)證的 referer 為 www.xxx.com 域,但是 www.xxx.com.mydomain.com 同樣能夠繞過;

      3. GET請(qǐng)求中不包含token相關(guān)的參數(shù)

      如何挖掘這樣的接口呢?我們可以使用Fiddler、burpsuite或者F12等方法去一個(gè)個(gè)檢查,但這樣豈不是要累死人了……
      更輕松的方式:自動(dòng)化測(cè)試工具Selenium + Proxy + 驗(yàn)證腳本
      (1)Selenium:可用于自動(dòng)化對(duì)網(wǎng)頁(yè)進(jìn)行測(cè)試,“到處”點(diǎn)擊按鈕、超鏈接,以期待測(cè)試更多的接口;
      (2)Proxy:用于代理所有的請(qǐng)求,過濾出所有包含敏感信息的JSONP請(qǐng)求,并記錄下HTTP請(qǐng)求;
      (3)驗(yàn)證腳本:使用上述的HTTP請(qǐng)求,剔除referer字段,再次發(fā)出請(qǐng)求,測(cè)試返回結(jié)果中,是否仍包敏感信息,如果有敏感信息,說明這個(gè)接口就是我們要找的!
      測(cè)試:

      使用腳本進(jìn)行測(cè)試,我以sina為例,首先需要登錄sina賬號(hào),微博或者博客都可以,然后開啟瀏覽器代理,運(yùn)行我們的腳本,最后瀏覽網(wǎng)頁(yè),就能檢測(cè)出這樣的JSONP接口了

      至此發(fā)現(xiàn)該JSONP接口,簡(jiǎn)單寫兩句JS代碼放到我們的網(wǎng)站上:

      $.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);
      // 發(fā)送到我的服務(wù)器上
      }).fail(function() {});

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

      相關(guān)的代碼放到了Github上,https://github.com/qiaofei32/jsonp_info_leak

      漏洞危害

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

        1. 可能導(dǎo)致用戶權(quán)限被盜用;

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

        2. 可以通過劫持對(duì)網(wǎng)頁(yè)進(jìn)行掛馬;

        在JSON劫持點(diǎn)構(gòu)造引向漏洞后門木馬,但訪問直接利用漏洞批量掛馬。

        3. 可對(duì)劫持頁(yè)進(jìn)行網(wǎng)站釣魚;

        利用JSON劫持直接導(dǎo)向偽裝網(wǎng)站地址。

        4. 可做提權(quán)攻擊;

        5. 變種拒絕服務(wù)攻擊;

        劫持后將流量導(dǎo)向受害網(wǎng)站,直接發(fā)動(dòng)DDOS攻擊。

      解決方法

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

      1. 驗(yàn)證 HTTP Referer 頭信息;

      2. 在請(qǐng)求中添加 csrfToken 并在后端進(jìn)行驗(yàn)證;

      參考地址:

      https://blog.csdn.net/mgxcool/article/details/73028337

      http://www./article/web/95682.html

      http://www./article/web/88237.html

      聲明:本文僅供白帽子、安全愛好者研究學(xué)習(xí),對(duì)于用于非法途徑的行為,發(fā)布者及作者不承擔(dān)任何責(zé)任。

      相關(guān)操作推薦

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多