4.淺談跨域劫持


本篇文章主要講解一下跨域攻擊:

  • Jsonp劫持
  • Flash跨域劫持
  • CORS跨域資源獲取

----------------------------------------

Jsonp劫持

Jsonp在2016年就出現了,由於造成危害大多就是泄露敏感信息,比如用戶信息,token等,遠不如SQL注入,命令執行這些漏洞來的徹底,所以總是被人忽視。Jsonp劫持攻擊又稱為 "JSON Hijacking",攻擊過程類似於csrf,只不過csrf只管發送http請求,但是Json-hijack的目的是獲取敏感數據。

而Jsonp(JSON with Padding)是json的一種"使用模式",可以讓網頁從別的域名(網站)那獲取資料,即跨域讀取數據。

Jsonp劫持具體講解與利用

知道創宇   : JSONP安全攻防技術

Jsonp劫持漏洞挖掘

有很多程序員在寫接口的時候都會順手寫個jsonp的接口,可以先開着burp看一下功能點,看看是否有地方用了jsonp

快速尋找Jsonp的接口

開着bp逛一圈,一般有jsonp的數據傳輸會在mimetype中顯示為script,通過排序可以快速得找到

callback的值,就是jsonp回傳回來的函數名

然后只要查看傳輸的數據中是否有敏感信息就可以了

尋找敏感的Json數據

如果jsonp的接口沒有敏感信息傳輸,json數據包中恰好有的話,我們可以嘗試一下程序員是否有開發jsonp的格式,大多數程序員喜歡把jsonp的回傳參數命名為callback

當然還有其他的可能,貼一份字典,直接用Intruder Fuzz一下試試:

callback=attack cb=attack call=attack jsonp=attack jsonpcallback=attack jsonpcb=attack json=attack jsoncallback=attack jcb=attack

漏洞證明

如果最后爆破成功的接口為

http://www.xxx.com/interface?callback=attack

返回的數據為

attack({"value":1})

使用下面的poc:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsonp劫持</title>
    <script src="js/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript"> $.ajax({ url:"http://xxx.com/interface", dataType:"jsonp", jsonp:"callback", jsonpCallback:"attack", success:function (data) { alert(data.value) } }) </script>
</body>
</html>

jsonp 填寫回調參數的名字

jsonpcallback 就是回調參數的值

alert 的地方根據需要更改取值

如果能正常取到值,就說明漏洞存在了

漏洞利用:

這里來看一條請求:

這條請求返回的結果中有手機號(這里我測試的賬號沒綁定手機),如果我們想要以CSRF交互式攻擊的方式獲取這個手機號該怎么辦?

來看看這條請求有callback,而返回結果是不是類似Javascript中的函數?

Javascript原函數定義如下:

function funName(){}

這里是缺少了函數定義的關鍵詞function和花括號的函數主體部分,只有函數名和函數傳參,聰明人已經想到了,這不就相當於是自定義函數被引用了么,而中間那段傳參就相當於是一個數組,所以我們可以先用JS自定義好這個函數,然后再引用這個請求,自然就可以獲取到數據了。

這時候我們可以來構建一下PoC:

<!-- 引用一段如上請求為JS -->
<script>function jsonp2(data){alert(JSON.stringify(data));}</script>
<script src="http://gh0st.cn/user/center?callback=jsonp2"></script>

使用正常的賬號(綁定過手機號)來測試下:

其他漏洞案例參照烏雲:蘇寧易購多接口問題可泄露用戶姓名、地址、訂單商品(jsonp案例)

-------------------------------------------

Flash跨域劫持

首先分享三個參考資料:

1.還有flash跨域漏洞嗎?

2.flash跨域數據劫持漏洞

3.flash安全總結

盡管flash宣布不再維護,但是還有許多視頻站正在使用flash作為播放器,本為主要來學習flash跨域讀取漏洞

flash(swf)以宿主域出發(而不是使用域)判斷 是否為跨域請求。

A站上的flash文件 http://www.a.com/vul.swf,被B站 http://www.b.com/exp.htm 拿去使用。此時 vul.swf 請求a站上的資源是不需要提前獲取 http://www.a.com/crossdomain.xml 判斷是否有權限,反而vul.swf請求b站上的資源卻需要提前判斷是否有權限。這一點與js不同。
          Flash跨域比較經典了,在做web目錄資產整理的時候有時候會發現這樣的文件 crossdomain.xml ,文件內容如果是如下的,那么就存在Flash跨域問題,如下內容的意思是支持所有域:

<?xml version="1.0"?>
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

為什么會如此?具體流程是這樣的:

gh0st.cn 有一個SWF文件,這個文件是想要獲取 vulkey.cn 的 userinfo 的返回響應主體,SWF首先會看在 vulkey.cn 的服務器目錄下有沒有 crossdoamin.xml 文件,如果沒有就會訪問不成功,如果有 crossdoamin.xml ,則會看crossdomain.xml 文件的內容里面是否設置了允許 gh0st.cn 域訪問,如果設置允許了,那么 gh0st.cn 的SWF文件就可以成功獲取到內容。所以要使Flash可以跨域傳輸數據,其關鍵就是crossdomain.xml 文件。

當你發現 crossdomain.xml 文件的內容為我如上所示的內容,那么就是存在Flash跨域劫持的。

漏洞案例

在對一個廠商進行測試的時候正好發現了這樣的文件:

在這里我需要做兩件事:

1.找到一個能獲取敏感信息的接口

2.構建PoC

在這里敏感的信息接口以個人中心為例子,PoC使用的是 :

https://github.com/nccgroup/CrossSiteContentHijacking/raw/master/ContentHijacking/objects/ContentHijacking.swf

 

其他漏洞案例:

wooyun----搜狐焦點旗下搜狐家居可劫持任意賬號

------------------------------------------------

CORS跨域資源獲取

強烈建議先看一下 : 跨域資源共享CORS學習筆記

漏洞案例

如上圖中我在請求的時候加上了請求頭 Origin: http://gh0st.cn,而對應的響應包中出現了 Access-Control-Allow-Origin: http://gh0st.cn 這個響應頭其實就是訪問控制允許,在這里是允許http://gh0st.cn的請求的,所以http://gh0st.cn是可以跨域讀取此網址的內容的~在這里我介紹下Origin

OriginReferer很相似,就是將當前的請求參數刪除,僅剩下三元組(協議 主機 端口),標准的瀏覽器,會在每次請求中都帶上Origin,至少在跨域操作時肯定攜帶(例如ajax的操作)。

所以要測試是否存在CORS這個問題就可以參考我上面的操作手法了。

怎么利用呢?在這里我使用了github上的開源項目:https://github.com/nccgroup/CrossSiteContentHijacking,readme.md中有具體的說明,這里我就不一一講解了,那么已經確認問題了,那就需要進一步的驗證。

在這里我找到了一處接口,其響應主體內容是獲取用戶的真實姓名、身份證、手機號等內容:

/daren/author/query (要注意的是這個請求在抓取的時候是POST請求方式,但並沒有請求正文,經過測試請求正文為任意內容即可)

響應報文正文內容:

這里CrossSiteContentHijacking項目我搭建在了本地(127.0.0.1) http://127.0.0.1/CrossSiteContentHijacking/ContentHijackingLoader.html

根據項目所說的操作去進行參數的配置,然后點擊 Retrieve Contents 按鈕:

測試如下,測試結果是可以跨域讀取的:

 

案例總結

這個問題其實就是對Origin的驗證沒有控制好,對其進行加強即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM