溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

讀取型CSRF漏洞的示例分析

發(fā)布時(shí)間:2021-12-29 18:03:44 來源:億速云 閱讀:182 作者:小新 欄目:網(wǎng)絡(luò)安全

這篇文章將為大家詳細(xì)講解有關(guān)讀取型CSRF漏洞的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

讀取型CSRF

JSON劫持

漏洞案例

這里來看一條請(qǐng)求:

讀取型CSRF漏洞的示例分析

這條請(qǐng)求返回的結(jié)果中有手機(jī)號(hào)(這里我測(cè)試的賬號(hào)沒綁定手機(jī)),如果我們想要以CSRF交互式攻擊的方式獲取這個(gè)手機(jī)號(hào)該怎么辦?

來看看這條請(qǐng)求有callback,而返回結(jié)果是不是類似Javascript中的函數(shù)?

Javascript原函數(shù)定義如下:

function funName(){}

這里是缺少了函數(shù)定義的關(guān)鍵詞function和花括號(hào)的函數(shù)主體部分,只有函數(shù)名和函數(shù)傳參,聰明人已經(jīng)想到了,這不就相當(dāng)于是自定義函數(shù)被引用了么,而中間那段傳參就相當(dāng)于是一個(gè)數(shù)組,所以我們可以先用JS自定義好這個(gè)函數(shù),然后再引用這個(gè)請(qǐng)求,自然就可以獲取到數(shù)據(jù)了。

這時(shí)候我們可以來構(gòu)建一下PoC:

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

使用正常的賬號(hào)(綁定過手機(jī)號(hào))來測(cè)試下:

讀取型CSRF漏洞的示例分析

案例總結(jié)

其實(shí)通過這個(gè)例子,我們可以知道HTML標(biāo)簽<script>在一定的情況下是可以跨域讀取的。

對(duì)此漏洞的修復(fù)有很多:

1.打亂響應(yīng)主體內(nèi)容

2.Referer等進(jìn)行限制

.....等等

Flash跨域劫持

Flash跨域比較經(jīng)典了,在做web目錄資產(chǎn)整理的時(shí)候有時(shí)候會(huì)發(fā)現(xiàn)這樣的文件 crossdomain.xml ,文件內(nèi)容如果是如下的,那么就存在Flash跨域問題,如下內(nèi)容的意思是支持所有域:

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

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

gh0st.cn 有一個(gè)SWF文件,這個(gè)文件是想要獲取 vulkey.cn 的 userinfo 的返回響應(yīng)主體,SWF首先會(huì)看在 vulkey.cn 的服務(wù)器目錄下有沒有 crossdomain.xml 文件,如果沒有就會(huì)訪問不成功,如果有 crossdomain.xml ,則會(huì)看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跨域劫持的。

漏洞案例

在對(duì)一個(gè)廠商進(jìn)行測(cè)試的時(shí)候正好發(fā)現(xiàn)了這樣的文件:

讀取型CSRF漏洞的示例分析

在這里我需要做兩件事:

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

2.構(gòu)建PoC

在這里敏感的信息接口以個(gè)人中心為例子,PoC使用的是 https://github.com/nccgroup/CrossSiteContentHijacking/raw/master/ContentHijacking/objects/ContentHijacking.swf

讀取型CSRF漏洞的示例分析

案例總結(jié)

很簡單的一個(gè)東西,但是用處卻很大,其利用方法跟CSRF也是一樣的,只需要修改下PoC就行。

修復(fù)方案同樣也很簡單,針對(duì)<allow-access-from domain="*" />的domain進(jìn)行調(diào)整即可。

CORS跨域資源讀取

漏洞案例

讀取型CSRF漏洞的示例分析

如上圖中我在請(qǐng)求的時(shí)候加上了請(qǐng)求頭 Origin: http://gh0st.cn,而對(duì)應(yīng)的響應(yīng)包中出現(xiàn)了Access-Control-Allow-Origin: http://gh0st.cn這個(gè)響應(yīng)頭其實(shí)就是訪問控制允許,在這里是允許http://gh0st.cn的請(qǐng)求的,所以http://gh0st.cn是可以跨域讀取此網(wǎng)址的內(nèi)容的~在這里我介紹下Origin

OriginReferrer很相似,就是將當(dāng)前的請(qǐng)求參數(shù)刪除,僅剩下三元組(協(xié)議 主機(jī) 端口),標(biāo)準(zhǔn)的瀏覽器,會(huì)在每次請(qǐng)求中都帶上Origin,至少在跨域操作時(shí)肯定攜帶(例如ajax的操作)。

其實(shí)要測(cè)試是否可以跨域讀取可以參考我如上的方法,當(dāng)然不僅如此,你可以直接使用通配符()替換我的域名,因?yàn)檫@代表著任意域,如果對(duì)應(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ī)號(hào)等內(nèi)容:

/daren/author/query (要注意的是這個(gè)請(qǐng)求在抓取的時(shí)候是POST請(qǐng)求方式,但并沒有請(qǐng)求正文,經(jīng)過測(cè)試請(qǐng)求正文為任意內(nèi)容即可)

響應(yīng)報(bào)文正文內(nèi)容:

讀取型CSRF漏洞的示例分析

這里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 按鈕:

讀取型CSRF漏洞的示例分析

測(cè)試如下,測(cè)試結(jié)果是可以跨域讀取的:

讀取型CSRF漏洞的示例分析

案例總結(jié)

這個(gè)問題其實(shí)就是對(duì)Origin的驗(yàn)證沒有控制好,對(duì)其進(jìn)行加強(qiáng)即可。

關(guān)于“讀取型CSRF漏洞的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI