安基網 首頁 安全 Web安全 查看內容

成為高級黑客必須了解的,cors跨域和jsonp劫持漏洞

2020-3-3 14:29| 投稿: xiaotiger |來自: 互聯網


免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!

摘要: 那么我們今天就來了解一下cors跨域和jsonp劫持漏洞同源策略為什么還要講一遍同源策略,我們之前寫xss的時候有講到過,不了解的同學可以看看我們的那篇xss文章,那么該策略是瀏覽器的一個安全基石,如果沒有同源策略,那么,你打開了一個合法的網站,又打開了一個惡意網站,惡意網站的腳本能夠隨意的操 ...

那么我們今天就來了解一下cors跨域和jsonp劫持漏洞

同源策略

為什么還要講一遍同源策略,我們之前寫xss的時候有講到過,不了解的同學可以看看我們的那篇xss文章,那么該策略是瀏覽器的一個安全基石,如果沒有同源策略,那么,你打開了一個合法的網站,又打開了一個惡意網站,惡意網站的腳本能夠隨意的操作合法網站的任意可操作資源,沒有任何限制。

cors(跨域資源共享)

CORS(Cross Origin Resource Sharing),跨域資源共享,為了彌補JSONP等跨域常見技術的缺陷,而提出的安全方便的跨域方案。它允許瀏覽器想跨域服務器,發出XMLHttpRequest請求,從而克服AJAX只能同源使用的限制。

CORS需要瀏覽器和服務器同時支持,相比JSONP更加復雜,但是一般目前的瀏覽器都是支持的,服務器只需要進行相應配置,其通信過程都是瀏覽器自動完成,對于開發人員來說,跟寫AJAX的代碼沒有區別,只是會在發送跨域請求時在HTTP請求頭中添加一些字段來驗證,關鍵字段如下:

1、Access-Control-Allow-Origin:指定哪些域可以訪問域資源。例如,如果requester.com想要訪問provider.com的資源,那么開發人員可以使用此標頭安全地授予requester.com對provider.com資源的訪問權限。

2、Access-Control-Allow-Credentials:指定瀏覽器是否將使用請求發送cookie。僅當allow-credentials標頭設置為true時,才會發送Cookie。

3、Access-Control-Allow-Methods:指定可以使用哪些HTTP請求方法(GET,PUT,DELETE等)來訪問資源。此標頭允許開發人員通過在requester.com請求訪問provider.com的資源時,指定哪些方法有效來進一步增強安全性。

CORS實現流程

1、服務器配置支持CORS,默認認可所有域都可以訪問

2、瀏覽器客戶端把所在的域填充到Origin發送跨域請求

3、服務器根據資源權限配置,在響應頭中添加ccess-Control-Allow-Origin Header,返回結果

4、瀏覽器比較服務器返回的Access-Control-Allow-Origin Header和請求域的Origin,如果當前域獲得授權,則將結果返回給頁面

怎么判斷是否存在cors跨域。

請求投存在origin參數且可控(不存在可自行添加不影響結果)

響應頭存在下面兩個:1、Access-Control-Allow-Orighin:指定哪些域可以訪問域資源,2、Access-Control-Allow-Credentials:指定瀏覽器是否存將使用請求發送cookie,僅當allow-credentials標頭設置為true時,才會發送cookie

Access-Control-Allow-Methods:PUT,GET,POST //請求方式

靶機是這樣的,然后我們開啟burp監聽,刷新這個靶機抓取數據包,比如說我們在測試網站的時候,抓到數據包

那我們就訪問該網頁抓請求包

將其發送到repeater模塊,并且點擊go,可以看見它這里返回了一些信息,就是我們上面所說的一些信息。

返回包看見這兩個的時候,可以去測一下這個跨域攻擊。怎么測呢??

那我們添加Origin:http://www.baidu.com這樣一條參數,看它是否可控,那么執行之后,我們返回包原本是星號,添加了這一條參數后,就變成了百度的域名

Cors跨域攻擊有什么用???可以獲取一個用戶的銘感信息,如果能獲取到敏感信息,那么它就是個高危了,可以看見我們的靶機,那么我們就可以確定了他這里存在跨域攻擊

利用的話,就用這個cors的利用靶機。那我們就選擇get,然后生成poc利用的包

這里它就是一個響應的數據

Cors和jsonp都是csrf系統里面的一種,是讀取型的

Jsonp劫持

先了解一下什么是JSONP:

JSONP是一種跨域請求資源的解決方案,JSONP可以繞過AJAX遵循的同源策略。

更容易理解的解釋就是:利用"script標簽可以跨域請求,并且把返回的結果當作js來執行"的特點來獲取第三方的資源

判斷的條件,第一個是跟域沒有關系,然后它返回的數據要是一個json的數據并且要有能被調用的回調函數,像這種就是一個json的數據

allback:

其實callback很好理解,同樣是為了更好的使用第三方數據,第三方允許"請求方"使用自定義的callback名稱,可以看到我們的靶場這里,可以看見它的參數,有個callback的參數,它的值就是可以調用的,那回調函數是什么?我們常見的話,就是callback參數的,還有一個jsonpcallback的參數就叫回調函數

什么叫可控呢?安全問題:

當攻擊者知道返回資源的地址時,且資源中存在隱私信息。是不是可以構造攻擊頁面,誘導用戶訪問并獲取用戶隱私呢?

怎么說呢...

用戶在訪問qq.com時頁面會生成對應的Cookie,當訪問子域game.qq.com/user?callback=blabla 時頁面將返回game.qq.com下的用戶信息

攻擊者構造了攻擊頁面http://www.attack.com/phishing 當用戶訪問時將會執行攻擊頁面中的js,惡意的js創建了script標簽,并以用戶的名義加載game.qq.com/user?callback=blabla

在參數的值輸入a,它這里就輸出了一個a,輸入之后,它這個頁面能發送改變,這個就是它的參數可控參數就是會被,然后回調調用,然后可控。可控之后,就是滿足了我們判斷他這個地方是否存在jsonp劫持的條件,跟域名沒關系,返回的也是json數據

還是利用剛才的那個poc環境,我們輸入靶機的漏洞地址,下面輸入回調參數的值

防護建議:1、驗證http referer頭信息,2、在請求中添加csrfToken并在后端進行驗證。

最后喜歡我文章的朋友請加圈子關注我們,私信關鍵詞:加群。(送免費資料和優惠券)

就會自動分享給你群號。歡迎大家加入我們的安全大家庭。提高大家的安全意識,提升大家的網絡安全技能一直是我們的初衷和愿景,讓我們共同成為守護信息世界的"SaFeMAN"。

還有可以關注我們微信公眾號,在公眾號上輸入安界網,就可以關注到我們,領取資料和優惠券!!



小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

本文出自:https://www.toutiao.com/a6759064986984645127/

免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


鮮花

握手

雷人

路過

雞蛋

相關閱讀

最新評論

 最新
返回頂部
创业如何赚钱 安徽快三输死了多少人 上海11选53d之家走势图 快乐8选一技巧 浙江体彩6 1走势图 hr娱乐客户端 燕赵排列七走势图 体彩电子投注单停售 精选六肖中特 11月森马服饰股票分析 陕西11选五前三走势图 河南新快赢481 广东体彩快中彩开奖 五分彩最稳定方法 上证指数行情 实时 广西3快开奖结果 今天江西多乐彩开奖结果查询