您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關讀取型CSRF漏洞的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
這里來看一條請求:
這條請求返回的結果中有手機號(這里我測試的賬號沒綁定手機),如果我們想要以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>
使用正常的賬號(綁定過手機號)來測試下:
其實通過這個例子,我們可以知道HTML標簽<script>
在一定的情況下是可以跨域讀取的。
對此漏洞的修復有很多:
1.打亂響應主體內容
2.Referer等進行限制
.....等等
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 的服務器目錄下有沒有 crossdomain.xml 文件,如果沒有就會訪問不成功,如果有 crossdomain.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
很簡單的一個東西,但是用處卻很大,其利用方法跟CSRF也是一樣的,只需要修改下PoC就行。
修復方案同樣也很簡單,針對<allow-access-from domain="*" />
的domain進行調整即可。
如上圖中我在請求的時候加上了請求頭 Origin: http://gh0st.cn
,而對應的響應包中出現了Access-Control-Allow-Origin: http://gh0st.cn
這個響應頭其實就是訪問控制允許,在這里是允許http://gh0st.cn的請求的,所以http://gh0st.cn是可以跨域讀取此網址的內容的~在這里我介紹下Origin
:
Origin
和Referrer
很相似,就是將當前的請求參數刪除,僅剩下三元組(協議 主機 端口),標準的瀏覽器,會在每次請求中都帶上Origin
,至少在跨域操作時肯定攜帶(例如ajax的操作)。
其實要測試是否可以跨域讀取可以參考我如上的方法,當然不僅如此,你可以直接使用通配符()替換我的域名,因為這代表著任意域,如果對應的響應包中出現了`Access-Control-Allow-Origin: `等響應頭,那么恭喜你,這里存在著任意域跨域資源讀取的問題。
怎么利用呢?在這里我使用了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的驗證沒有控制好,對其進行加強即可。
關于“讀取型CSRF漏洞的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。