HTML5安全風(fēng)險(xiǎn)之CORS攻擊詳解
一、從SOP到CORS
SOP就是Same Origin Policy同源策略,指一個(gè)域的文檔或腳本,不能獲取或修改另一個(gè)域的文檔的屬性。也就是Ajax不能跨域訪問(wèn),我們之前的Web資源訪問(wèn)的根本策略都是建立在SOP上的。它導(dǎo)致很多web開(kāi)發(fā)者很痛苦,后來(lái)搞出很多跨域方案,比如JSONP和flash socket。如下圖所示:

后來(lái)出現(xiàn)了CORS-CrossOrigin Resources Sharing,也即跨源資源共享,它定義了一種瀏覽器和服務(wù)器交互的方式來(lái)確定是否允許跨域請(qǐng)求。它是一個(gè)妥協(xié),有更大的靈活性,但比起簡(jiǎn)單地允許所有這些的要求來(lái)說(shuō)更加安全。簡(jiǎn)言之,CORS就是為了讓AJAX可以實(shí)現(xiàn)可控的跨域訪問(wèn)而生的。示意如下圖所示:

現(xiàn)在W3C的官方文檔目前還是工作草案,但是正在朝著W3C推薦的方向前進(jìn)。不過(guò)目前許多現(xiàn)代瀏覽器都提供了對(duì)它的支持。
服務(wù)器端對(duì)于CORS的支持,主要就是通過(guò)設(shè)置Access-Control-Allow-Origin來(lái)進(jìn)行的。如果瀏覽器檢測(cè)到相應(yīng)的設(shè)置,就可以允許Ajax進(jìn)行跨域的訪問(wèn)。例如:
Access–Control-Allow-Origin: http://blog.csdn.net
應(yīng)用CORS的系統(tǒng)目前包括Face.com、GoogleCloudStorage API等,主要是為開(kāi)放平臺(tái)向第三方提供訪問(wèn)的能力。
二、CORS帶來(lái)的風(fēng)險(xiǎn)
CORS非常有用,可以共享許多內(nèi)容,不過(guò)這里存在風(fēng)險(xiǎn)。因?yàn)樗耆且粋€(gè)盲目的協(xié)議,只是通過(guò)HTTP頭來(lái)控制。
它的風(fēng)險(xiǎn)包括:
1、HTTP頭只能說(shuō)明請(qǐng)求來(lái)自一個(gè)特定的域,但是并不能保證這個(gè)事實(shí)。因?yàn)镠TTP頭可以被偽造。
所以未經(jīng)身份驗(yàn)證的跨域請(qǐng)求應(yīng)該永遠(yuǎn)不會(huì)被信任。如果一些重要的功能需要暴露或者返回敏感信息,應(yīng)該需要驗(yàn)證Session ID。
2、第三方有可能被入侵
舉一個(gè)場(chǎng)景,F(xiàn)riendFeed通過(guò)跨域請(qǐng)求訪問(wèn)Twitter,F(xiàn)riendFeed請(qǐng)求tweets、提交tweets并且執(zhí)行一些用戶(hù)操作,Twitter提供響應(yīng)。兩者都互相相信對(duì)方,所以FriendFeed并不驗(yàn)證獲取數(shù)據(jù)的有效性,Twitter也針對(duì)Twitter開(kāi)放了大部分的功能。
但是當(dāng)如果Twitter被入侵后:
FriendFeed總是從Twitter獲取數(shù)據(jù),沒(méi)有經(jīng)過(guò)編碼或者驗(yàn)證就在頁(yè)面上顯示這些信息。但是Twitter被入侵后,這些數(shù)據(jù)就可能是有害的。
或者FriendFeed被入侵時(shí):
Twitter響應(yīng)FriendFeed的請(qǐng)求,例如發(fā)表Tweets、更換用戶(hù)名甚至刪除賬戶(hù)。當(dāng)FriendFeed被入侵后,攻擊者可以利用這些請(qǐng)求來(lái)篡改用戶(hù)數(shù)據(jù)。
所以對(duì)于請(qǐng)求方來(lái)說(shuō)驗(yàn)證接收的數(shù)據(jù)有效性和服務(wù)方僅暴露最少最必須的功能是非常重要的。
3、惡意跨域請(qǐng)求
即便頁(yè)面只允許來(lái)自某個(gè)信任網(wǎng)站的請(qǐng)求,但是它也會(huì)收到大量來(lái)自其他域的跨域請(qǐng)求。.這些請(qǐng)求有時(shí)可能會(huì)被用于執(zhí)行應(yīng)用層面的DDOS攻擊,并不應(yīng)該被應(yīng)用來(lái)處理。
例如,考慮一個(gè)搜索頁(yè)面。當(dāng)通過(guò)'%'參數(shù)請(qǐng)求時(shí)搜索服務(wù)器會(huì)返回所有的記錄,這可能是一個(gè)計(jì)算繁重的要求。要擊垮這個(gè)網(wǎng)站,攻擊者可以利用XSS漏洞將Javascript腳本注入某個(gè)公共論壇中,當(dāng)用戶(hù)訪問(wèn)這個(gè)論壇時(shí),使用它的瀏覽器重復(fù)執(zhí)行這個(gè)到服務(wù)器的搜索請(qǐng)求?;蛘呒词共徊捎每缬蛘?qǐng)求,使用一個(gè)目標(biāo)地址包含請(qǐng)求參數(shù)的圖像元素也可以達(dá)到同樣的目的。如果可能的話,攻擊者甚至可以創(chuàng)建一個(gè)WebWorker執(zhí)行這種攻擊。這會(huì)消耗服務(wù)器大量的資源。
有效的解決辦法是通過(guò)多種條件屏蔽掉非法的請(qǐng)求,例如HTTP頭、參數(shù)等。
4、內(nèi)部信息泄漏
假定一個(gè)內(nèi)部站點(diǎn)開(kāi)啟了CORS,如果內(nèi)部網(wǎng)絡(luò)的用戶(hù)訪問(wèn)了惡意網(wǎng)站,惡意網(wǎng)站可以通過(guò)COR(跨域請(qǐng)求)來(lái)獲取到內(nèi)部站點(diǎn)的內(nèi)容。
5、針對(duì)用戶(hù)的攻擊
上面都是針對(duì)服務(wù)器的攻擊,風(fēng)險(xiǎn)5則針對(duì)用戶(hù)。比方說(shuō),攻擊者已經(jīng)確定了你可以全域訪問(wèn)的productsearch.php頁(yè)面上存在SQL注入漏洞。 攻擊者并不是直接從它們的系統(tǒng)數(shù)據(jù)庫(kù)中獲取數(shù)據(jù),他們可能會(huì)編寫(xiě)一個(gè)JavaScript數(shù)據(jù)采集腳本,并在自己的網(wǎng)站或者存在XSS問(wèn)題的網(wǎng)站上插入這段腳本。當(dāng)受害者訪問(wèn)含有這種惡意JavaScript腳本的網(wǎng)站時(shí),它的瀏覽器將執(zhí)行針對(duì)“productsearch.php”的SQL注入攻擊,采集所有的數(shù)據(jù)并發(fā)送給攻擊者。檢查服務(wù)器日志顯示是受害人執(zhí)行了攻擊,因?yàn)槌藖?lái)自Referrer的HTTP頭一般沒(méi)有其他日志記錄。受害者并不能說(shuō)他的系統(tǒng)被攻破,因?yàn)闆](méi)有任何任何惡意軟件或系統(tǒng)泄漏的痕跡。
三、攻擊工具
Shell of the Future是一個(gè)反向WebShell處理器,它利用HTML5的跨站請(qǐng)求來(lái)劫持會(huì)話。

四、防御之道
1、不信任未經(jīng)身份驗(yàn)證的跨域請(qǐng)求,應(yīng)該首先驗(yàn)證Session ID或者Cookie。
2、對(duì)于請(qǐng)求方來(lái)說(shuō)驗(yàn)證接收的數(shù)據(jù)有效性,服務(wù)方僅暴露最少最必須的功能。
3、通過(guò)多種條件屏蔽掉非法的請(qǐng)求,例如HTTP頭、參數(shù)等。
以上就是CORS攻擊詳細(xì)介紹,希望對(duì)大家學(xué)習(xí)CORS攻擊有所幫助。
相關(guān)文章
從事網(wǎng)絡(luò)安全工作,手上自然離不開(kāi)一些重要的網(wǎng)絡(luò)安全工具,今天就為大家分享10大網(wǎng)絡(luò)安全工具,需要的朋友可以參考下2023-10-05
黑客常用10大安全檢測(cè)工具,你用過(guò)幾個(gè)?
這篇為大家分享的是近幾年比較流量的安全檢測(cè)工具,從事網(wǎng)絡(luò)安全工作,手上自然離不開(kāi)一些重要的網(wǎng)絡(luò)安全工具,今天就為大家分享10大網(wǎng)絡(luò)安全工具2023-10-05
如今小編從事了信息安全的工作,也算是將興趣升級(jí)成了工作,今天給大家聊聊那些年非常火的黑客軟件2023-10-05如果不使用殺毒軟件保護(hù),您可能會(huì)面臨最常見(jiàn)的問(wèn)題?
這篇文章主要介紹了如果不使用殺毒軟件保護(hù),您可能會(huì)面臨最常見(jiàn)的問(wèn)題,2020-02-03- 這篇文章主要介紹了分享幾個(gè)IDS開(kāi)源系統(tǒng),需要的朋友可以參考下2019-12-01
微信域名防封技術(shù) 微信域名總是被屏蔽被攔截該如何解決
身在網(wǎng)站要想在微信端被使用,多多少少都會(huì)有預(yù)防被攔截,是專(zhuān)門(mén)為運(yùn)營(yíng)網(wǎng)站和公眾號(hào)的運(yùn)營(yíng)者一個(gè)研究的工具幾十你是正常網(wǎng)站,也是公司企業(yè)備案,照樣也會(huì)被攔截,下面 給大2019-09-15
企業(yè)數(shù)據(jù)防泄密之舉措:電腦文件加密軟件還是電腦數(shù)據(jù)防泄密系統(tǒng)?
現(xiàn)在很多單位局域網(wǎng)都是無(wú)紙化辦公,公司很多商業(yè)機(jī)密信息也是以電子文檔的方式存儲(chǔ),那么電腦文件加密軟件還是電腦數(shù)據(jù)防泄密系統(tǒng)?下面就跟隨小編一起來(lái)了解一下2019-04-24
公司數(shù)據(jù)防泄密方案之如何防止電腦文件泄露、公司電腦防止資料泄露?
公司日常辦公都是通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行,員工日常工作中形成的重要文件都是存儲(chǔ)在各自的電腦上,那么公司如何防止商業(yè)機(jī)密泄露、防止電腦資料泄露呢?本文就來(lái)詳細(xì)的介紹一下2019-04-24
迅雷鏈技術(shù)專(zhuān)家深度剖析:區(qū)塊鏈信任之源的秘密
區(qū)塊鏈無(wú)疑是2018年的熱門(mén)技術(shù)。雖然,區(qū)塊鏈技術(shù)最受關(guān)注的應(yīng)用主要在金融服務(wù)領(lǐng)域,其實(shí)它越來(lái)越多地影響著各個(gè)行業(yè),迅雷鏈底層研發(fā)工程師張驍就區(qū)塊鏈安全問(wèn)題和密碼學(xué)2018-12-26
迅雷鏈開(kāi)放平臺(tái)研發(fā)負(fù)責(zé)人張慧勇對(duì)區(qū)塊鏈安全問(wèn)題的特點(diǎn)做了詳細(xì)解釋?zhuān)榻B了目前區(qū)塊鏈所面臨的安全問(wèn)題現(xiàn)狀、區(qū)塊鏈安全問(wèn)題的特點(diǎn),以及迅雷鏈?zhǔn)侨绾巫霭踩牡讓釉O(shè)計(jì)的2018-12-26








