JSONP跨域劫持漏洞小知識(shí)科普

前言

寫寫簡(jiǎn)單的漏洞原理小知識(shí)科普谓形,一來學(xué)習(xí)一些新的知識(shí)提升一下自己钉跷;二來鞏固復(fù)習(xí)一下已有知識(shí)吕漂,溫故知新;三來以后查閱起來也比較方便尘应。

JSONP出現(xiàn)的前因

眾所周知,為了防止不同域之間對(duì)頁(yè)面的互相涂改吼虎,于是有了同源策略犬钢。凡事都有利弊,同源策略在保護(hù)瀏覽器客戶端安全的同時(shí)限制了跨域資源的訪問思灰,跨域的數(shù)據(jù)傳輸產(chǎn)生一些不方便玷犹。于是智慧的勞動(dòng)人民想出了JSONP這種方式來進(jìn)行跨域間的數(shù)據(jù)傳遞。但也正因JSONP跨域傳輸?shù)奶刭|(zhì)洒疚,繞過了同源策略產(chǎn)生了一定的安全問題歹颓。

簡(jiǎn)單了解一下JSONP

JSON是一種數(shù)據(jù)格式,在很多語(yǔ)言里都得到了支持油湖,在一定的場(chǎng)合下為數(shù)據(jù)傳輸提供了很大的便利巍扛。而JSONP呢,全程是 JSON with Padding乏德。字面意思撤奸,在原有的JSON上填充了一些東西吠昭。以下代碼是一段JSONP的使用示例。

<body>
 <script>
 function callback(json) {
  alert(json.username);
 }

 var s = document.createElement('script');
 s.src = 'http://127.0.0.1/test.json';
 document.body.appendChild(s);
 </script>
</body>


#test.json內(nèi)容如下
callback({ username: "zhhhy" })
image.png

JSONP跨域能力的來源

根據(jù)上述例子胧瓜,可以體會(huì)到JSONP并不是種數(shù)據(jù)格式矢棚,而是為了進(jìn)行跨域傳輸?shù)囊环N特殊編碼方式。上述例子并沒有體現(xiàn)出跨域的能力府喳。先來分析一下整個(gè)程序流程蒲肋,就可以理解為什么JSONP具有跨域的超能力。
代碼很簡(jiǎn)單不難理解钝满,執(zhí)行了一段JS代碼兜粘,作用是創(chuàng)建一個(gè)<script>標(biāo)簽,并且設(shè)置src屬性的值為目標(biāo)文件的地址舱沧,這樣就會(huì)對(duì)目標(biāo)地址發(fā)起一次請(qǐng)求妹沙。而請(qǐng)求得到的結(jié)果則是test.json的內(nèi)容。JS代碼中還定義了一個(gè)callback函數(shù)熟吏。以至于返回的內(nèi)容調(diào)用了callback函數(shù)距糖,而JSON字符串被作為參數(shù)傳入到callback函數(shù)之中,所以就將屬性值以彈窗的方式顯示牵寺。
根據(jù)上述流程悍引,不難想到,<script>是實(shí)現(xiàn)跨域的關(guān)鍵點(diǎn)帽氓。由于<script>標(biāo)簽的開放性趣斤,以至于可以不遵循同源策略,類似的標(biāo)簽還有很多黎休。只要能進(jìn)行跨域浓领,也就是自己的服務(wù)器可以訪問到其他服務(wù)器里的JSON資源,達(dá)到一種信息泄露的效果势腮。

所有帶src或href屬性的標(biāo)簽以及部分其他標(biāo)簽可以跨域:
<script src="..."></script>
<img src="...">
<video src="..."></video>
<audio src="..."></audio>
<embed src="...">
<frame src="...">
<iframe src="..."></iframe>
<link rel="stylesheet" href="...">
<applet code="..."></applet>
<object data="..." ></object>

JSONP跨域劫持的危害

上文以一個(gè)小例子簡(jiǎn)單描述了JSONP的跨域能力來源母赵,還提及了JSONP可以達(dá)成信息泄露的效果义桂。仔細(xì)思考一番。個(gè)人認(rèn)為,JSONP跨域劫持是CSRF的一種特殊利用方式瓷胧。CSRF最大的特點(diǎn)就是偽裝成客戶端合法用戶進(jìn)行一些越權(quán)操作前联,比如任意創(chuàng)建管理員賬號(hào)禽作,發(fā)布文章等酗钞。其中最大的利用限制在于需要和正常用戶進(jìn)行交互,也就是誘使用戶訪問構(gòu)造好的頁(yè)面或者完成一些操作建芙。JSONP劫持也是如此没隘,而CSRF在JSONP劫持的加持下,可以繞過token值的校驗(yàn)禁荸。P神給出了一個(gè)新浪的例子P神給出了一個(gè)新浪的例子升略。通過第一步JSONP劫持泄露出CSRF_token值微王,由于沒有驗(yàn)證Refere頭以至于CSRF攻擊成功,可以未授權(quán)發(fā)布文章品嚣。

JSONP防御

既然JSONP是CSRF的一種利用方式炕倘,那么使用CSRF的防御手段自然也就能防御。比如驗(yàn)證token值和驗(yàn)證refere頭部翰撑,如果驗(yàn)證機(jī)制處理不當(dāng)罩旋,依舊還是會(huì)出現(xiàn)一些問題】粽可考慮增加驗(yàn)證碼等中間操作涨醋,不過會(huì)降低用戶體驗(yàn)性。最主要還是增加用戶的安全意識(shí)吧逝撬,不要隨意點(diǎn)不明連接浴骂。

參考鏈接

http://www.reibang.com/p/cc6ae9ad2ce6
https://zhengbao.wang/jsonp%E5%8A%AB%E6%8C%81%E6%BC%8F%E6%B4%9E/#more
https://www.cnblogs.com/52php/p/5677775.html
https://www.secpulse.com/archives/74691.html
https://www.anquanke.com/post/id/97671

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宪潮,隨后出現(xiàn)的幾起案子溯警,更是在濱河造成了極大的恐慌,老刑警劉巖狡相,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梯轻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡尽棕,警方通過查閱死者的電腦和手機(jī)喳挑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滔悉,“玉大人伊诵,你說我怎么就攤上這事』毓伲” “怎么了曹宴?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)孙乖。 經(jīng)常有香客問我,道長(zhǎng)份氧,這世上最難降的妖魔是什么唯袄? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮蜗帜,結(jié)果婚禮上恋拷,老公的妹妹穿的比我還像新娘。我一直安慰自己厅缺,他們只是感情好蔬顾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布宴偿。 她就那樣靜靜地躺著,像睡著了一般诀豁。 火紅的嫁衣襯著肌膚如雪窄刘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天舷胜,我揣著相機(jī)與錄音娩践,去河邊找鬼。 笑死烹骨,一個(gè)胖子當(dāng)著我的面吹牛翻伺,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播沮焕,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼吨岭,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了峦树?” 一聲冷哼從身側(cè)響起辣辫,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎空入,沒想到半個(gè)月后络它,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歪赢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年化戳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埋凯。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡点楼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出白对,到底是詐尸還是另有隱情掠廓,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布甩恼,位于F島的核電站蟀瞧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏条摸。R本人自食惡果不足惜悦污,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望钉蒲。 院中可真熱鬧切端,春花似錦、人聲如沸顷啼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至茵瀑,卻和暖如春间驮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瘾婿。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工蜻牢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偏陪。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓抢呆,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親笛谦。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抱虐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 一、 跨域 1.1 同源策略 同源策略限制了從同一個(gè)源加載的文檔或腳本如何與來自另一個(gè)源的資源進(jìn)行交互饥脑。這是一個(gè)用...
    每天都睡不醒閱讀 3,275評(píng)論 0 2
  • json以及jsonp 前言 JSONP全名為JSON with Padding恳邀,其存在的意義便有繞過諸如同源策略...
    帥豬佩奇閱讀 6,751評(píng)論 0 2
  • 想要忘了這個(gè)冬天 就算作我的世界里 從來沒有你的出現(xiàn) 燃燒的愛火 讓這寒風(fēng)將它澆滅 快樂的忘記這個(gè)冬天 凍結(jié)的你的...
    三笑菩提生閱讀 157評(píng)論 0 0
  • 今天數(shù)學(xué)課上我們學(xué)啦十以內(nèi)的數(shù)的分成和合成。老師把四道題抄到了大屏幕上灶轰,讓我們答題谣沸。我們都一起回答問題,都答對(duì)了笋颤。...
    盧梓軒同學(xué)閱讀 173評(píng)論 0 0