重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
這篇文章將為大家詳細(xì)講解有關(guān)讀取型CSRF漏洞的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的石河子網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
這里來看一條請求:
這條請求返回的結(jié)果中有手機(jī)號(這里我測試的賬號沒綁定手機(jī)),如果我們想要以CSRF交互式攻擊的方式獲取這個(gè)手機(jī)號該怎么辦?
來看看這條請求有callback,而返回結(jié)果是不是類似Javascript中的函數(shù)?
Javascript原函數(shù)定義如下:
function funName(){}
這里是缺少了函數(shù)定義的關(guān)鍵詞function
和花括號的函數(shù)主體部分,只有函數(shù)名和函數(shù)傳參,聰明人已經(jīng)想到了,這不就相當(dāng)于是自定義函數(shù)被引用了么,而中間那段傳參就相當(dāng)于是一個(gè)數(shù)組,所以我們可以先用JS自定義好這個(gè)函數(shù),然后再引用這個(gè)請求,自然就可以獲取到數(shù)據(jù)了。
這時(shí)候我們可以來構(gòu)建一下PoC:
使用正常的賬號(綁定過手機(jī)號)來測試下:
其實(shí)通過這個(gè)例子,我們可以知道HTML標(biāo)簽在一定的情況下是可以跨域讀取的。
對此漏洞的修復(fù)有很多:
1.打亂響應(yīng)主體內(nèi)容
2.Referer等進(jìn)行限制
.....等等
Flash跨域比較經(jīng)典了,在做web目錄資產(chǎn)整理的時(shí)候有時(shí)候會發(fā)現(xiàn)這樣的文件 crossdomain.xml ,文件內(nèi)容如果是如下的,那么就存在Flash跨域問題,如下內(nèi)容的意思是支持所有域:
為什么會如此?具體流程是這樣的:
gh0st.cn 有一個(gè)SWF文件,這個(gè)文件是想要獲取 vulkey.cn 的 userinfo 的返回響應(yīng)主體,SWF首先會看在 vulkey.cn 的服務(wù)器目錄下有沒有 crossdomain.xml 文件,如果沒有就會訪問不成功,如果有 crossdomain.xml ,則會看crossdomain.xml 文件的內(nèi)容里面是否設(shè)置了允許 gh0st.cn 域訪問,如果設(shè)置允許了,那么 gh0st.cn 的SWF文件就可以成功獲取到內(nèi)容。所以要使Flash可以跨域傳輸數(shù)據(jù),其關(guān)鍵就是crossdomain.xml 文件。
當(dāng)你發(fā)現(xiàn) crossdomain.xml 文件的內(nèi)容為我如上所示的內(nèi)容,那么就是存在Flash跨域劫持的。
在對一個(gè)廠商進(jìn)行測試的時(shí)候正好發(fā)現(xiàn)了這樣的文件:
在這里我需要做兩件事:
1.找到一個(gè)能獲取敏感信息的接口
2.構(gòu)建PoC
在這里敏感的信息接口以個(gè)人中心為例子,PoC使用的是 https://github.com/nccgroup/CrossSiteContentHijacking/raw/master/ContentHijacking/objects/ContentHijacking.swf
很簡單的一個(gè)東西,但是用處卻很大,其利用方法跟CSRF也是一樣的,只需要修改下PoC就行。
修復(fù)方案同樣也很簡單,針對
的domain進(jìn)行調(diào)整即可。
如上圖中我在請求的時(shí)候加上了請求頭 Origin: http://gh0st.cn
,而對應(yīng)的響應(yīng)包中出現(xiàn)了Access-Control-Allow-Origin: http://gh0st.cn
這個(gè)響應(yīng)頭其實(shí)就是訪問控制允許,在這里是允許http://gh0st.cn的請求的,所以http://gh0st.cn是可以跨域讀取此網(wǎng)址的內(nèi)容的~在這里我介紹下Origin
:
Origin
和Referrer
很相似,就是將當(dāng)前的請求參數(shù)刪除,僅剩下三元組(協(xié)議 主機(jī) 端口),標(biāo)準(zhǔn)的瀏覽器,會在每次請求中都帶上Origin
,至少在跨域操作時(shí)肯定攜帶(例如ajax的操作)。
其實(shí)要測試是否可以跨域讀取可以參考我如上的方法,當(dāng)然不僅如此,你可以直接使用通配符()替換我的域名,因?yàn)檫@代表著任意域,如果對應(yīng)的響應(yīng)包中出現(xiàn)了`Access-Control-Allow-Origin: `等響應(yīng)頭,那么恭喜你,這里存在著任意域跨域資源讀取的問題。
怎么利用呢?在這里我使用了github上的開源項(xiàng)目:https://github.com/nccgroup/CrossSiteContentHijacking,readme.md中有具體的說明,這里我就不一一講解了,那么已經(jīng)確認(rèn)問題了,那就需要進(jìn)一步的驗(yàn)證。
在這里我找到了一處接口,其響應(yīng)主體內(nèi)容是獲取用戶的真實(shí)姓名、身份證、手機(jī)號等內(nèi)容:
/daren/author/query (要注意的是這個(gè)請求在抓取的時(shí)候是POST請求方式,但并沒有請求正文,經(jīng)過測試請求正文為任意內(nèi)容即可)
響應(yīng)報(bào)文正文內(nèi)容:
這里CrossSiteContentHijacking項(xiàng)目我搭建在了本地(127.0.0.1) http://127.0.0.1/CrossSiteContentHijacking/ContentHijackingLoader.html
根據(jù)項(xiàng)目所說的操作去進(jìn)行參數(shù)的配置,然后點(diǎn)擊 Retrieve Contents 按鈕:
測試如下,測試結(jié)果是可以跨域讀取的:
這個(gè)問題其實(shí)就是對Origin的驗(yàn)證沒有控制好,對其進(jìn)行加強(qiáng)即可。
關(guān)于“讀取型CSRF漏洞的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。