自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

實戰(zhàn)Web安全測試之HTTP截斷(走私漏洞篇)

原創(chuàng)
安全 應(yīng)用安全
在本文中,我們將詳細(xì)為讀者介紹針對HTTP截斷和HTTP走私攻擊的安全測試技術(shù)。

【51CTO.com獨家特稿】在本文中,我們將詳細(xì)為讀者介紹針對HTTP截斷和HTTP走私攻擊的安全測試技術(shù)。我們將通過實例演示如何利用HTTP協(xié)議的某些特性,或者利用Web應(yīng)用程序的弱點或者不同代理對HTTP消息的解釋也不相同的特點來發(fā)動這兩種攻擊。

一、HTTP截斷/走私漏洞概述

本文遏制,我們將分析針對特定的HTTP報頭的兩種不同的攻擊技術(shù):HTTP截斷和HTTP走私攻擊。對于HTTP截斷攻擊而言,它是利用了缺乏輸入消毒措施的漏洞,該漏洞允許入侵者向應(yīng)用程序響應(yīng)的頭部插入CR和LF字符,從而將響應(yīng)分割為兩個不同的HTTP消息。該攻擊的目標(biāo)既不同于緩存投毒,也區(qū)別于跨站腳本攻擊。對于第二種攻擊方法,攻擊者利用了這樣的一個事實,即一些專門精心制作的HTTP消息可能會隨著接收它們的代理的不同,而作不同的解析和解釋。HTTP走私技術(shù)要求對處理HTTP消息的各種代理相當(dāng)熟悉,否則無法發(fā)動這種攻擊。

下面我們介紹這些漏洞的黑盒測試和灰盒測試技術(shù)。

二、HTTP截斷攻擊黑盒測試

一些web應(yīng)用程序會使用部分用戶輸入來生成它們的響應(yīng)頭部的某些值,這方面最簡單的例子就是重定向了,因為目標(biāo)URL依賴于用戶提交的某些值。舉例來說,假如用戶被要求在標(biāo)準(zhǔn)web接口和高級web接口之間做出選擇,然后,選擇的結(jié)果將作為一個參數(shù)傳遞,并且這個參數(shù)將用于觸發(fā)重定向到相應(yīng)的頁面的應(yīng)答頭中。更確切地說,如果該參數(shù)interface的值是advanced,那么應(yīng)用程序?qū)㈨憫?yīng)下列內(nèi)容:

 
圖1

收到這個消息后,瀏覽器會把用戶引向Location頭部規(guī)定的頁面。然而,如果應(yīng)用程序沒有對用戶輸入進(jìn)行過濾的話,攻擊者就可以在參數(shù)interface中插入序列%0d%0a,而該序列代表的則是用于分割各行的CRLF(回車換行)序列。這樣一來,攻擊者將能夠觸發(fā)一個響應(yīng),重要的是任何解析器(例如介于用戶和Web應(yīng)用之間的web緩存)都會把這個響應(yīng)會被解釋為兩個不同的響應(yīng)。所以,攻擊者就可以通過給這個web緩存“投毒”以使它為后續(xù)的請求中提供虛假的內(nèi)容。例如,在我們前面的例子中,假設(shè)攻擊者將下列內(nèi)容作為參數(shù)interface進(jìn)行傳遞:

 
圖2

從存在漏洞的軟件(也就是沒有對用戶輸入進(jìn)行嚴(yán)格消毒的應(yīng)用程序)中得到的響應(yīng)將是下面的內(nèi)容:

 
圖3

Web緩存將看到兩個不同的響應(yīng),因此如果攻擊者發(fā)送第一個請求之后立即發(fā)送對/index.html頁面的請求的話,web緩存會認(rèn)為這個請求與第二個響應(yīng)相匹配,并緩存它的內(nèi)容,這樣一來后面經(jīng)由web緩存的所有指向victim.com/index.html的請求都會收到系統(tǒng)故障消息,即“system down”。通過這種方式,一個攻擊者將能有效涂改站點在使用web緩存的用戶心中的形象,如果該web緩存是該Web應(yīng)用程序的一個反向代理的話,那么這個Web應(yīng)用程序在整個因特網(wǎng)中的用戶都會受到影響。另外,攻擊者還可以向這些用戶傳輸發(fā)動跨站腳本攻擊攻擊的JavaScript代碼片斷,例如竊取cookies等。需要注意的是,雖然該安全漏洞位于應(yīng)用程序中,但是攻擊針對的對象卻是使用該應(yīng)用程序的用戶。

因此,為了查找這個安全漏洞,滲透測試人員需要識別所有能夠影響響應(yīng)的一個或多個頭部的用戶輸入,并檢查用戶是否能夠在其中注入一個CR+LF序列。與這個攻擊關(guān)系最密切的兩個頭部是:

Location
 
Set-Cookie

需要注意的是,現(xiàn)實中要想成功利用這個安全漏洞可能是件非常復(fù)雜的事情,因為有多種因素必須考慮到:

1.攻擊者要想讓偽造的響應(yīng)被緩存的話,必須正確設(shè)置其中的各個頭部,例如Last-Modified頭部的值必須設(shè)為將來的一個時間。此外,攻擊者還必須破壞目標(biāo)頁面先前的緩存版本,方法是提交一個請求頭部中帶有“Pragma: no-cache”的前導(dǎo)請求來防止頁面被緩存。 

2. 即使應(yīng)用程序沒有過濾CR+LF序列,但是仍可能過濾了發(fā)動該攻擊所需的其他字符,例如字符<和>等。這時候,攻擊者可以嘗試使用其他編碼,例如UTF-7編碼等。  

3. 某些攻擊目標(biāo)(例如ASP)會對Location頭部(例如www.victim.com/redirect.asp )中的路徑部分進(jìn)行URL編碼處理,這樣就使得CRLF序列不起作用了。然而,它們卻不能對查詢部分(例如?interface=advanced)進(jìn)行這樣的編碼處理,這意味著放置一個前導(dǎo)問號就能夠繞過這種過濾技術(shù)。 #p#

三、HTTP截斷攻擊灰盒測試

對于Web應(yīng)用程序即攻擊目標(biāo)的深入了解,在發(fā)動HTTP截斷攻擊時是極其有幫助的。例如,不同的攻擊目標(biāo)可能使用不同的方法來判定第一個HTTP消息在何時終止,第二個HTTP消息從什么時候開始。當(dāng)然,有時候可以使用消息邊界來進(jìn)行判定,如上面的例子就是這樣。但是,其他的攻擊目標(biāo)可能使用不同的數(shù)據(jù)包來攜帶不同的消息。此外,有些目標(biāo)會為每個消息分配指定組塊的數(shù)量,這種情況下,第二個消息必須從特定的塊開始,這就要求攻擊者在兩個消息之間填充必要的塊。不過,當(dāng)時有URL發(fā)送有弱點的參數(shù)的時候,這么做可能會引起一些麻煩,因為過長的URL很可能被截斷或者過濾掉?;液袦y試可以幫助攻擊者找到解決辦法:一些應(yīng)用程序服務(wù)器允許使用POST而非GET來發(fā)送請求。

四、HTTP走私攻擊灰盒測試

之前講過,HTTP走私攻擊所利用的漏洞是,某些精心構(gòu)造的HTTP消息會隨不同的代理(瀏覽器、web緩存、應(yīng)用程序防火墻)而做不同的解釋。 這種攻擊方法是由Chaim Linhart、Amit Klein、Ronen Heled和Steve Orrin于2005年發(fā)現(xiàn)的。這種攻擊有多種用途,我們這里僅介紹最雷人的一種:繞過應(yīng)用程序防火墻。

下面,我們詳細(xì)介紹利用HTTP走私攻擊繞過應(yīng)用程序防火墻的詳細(xì)方法。有許多應(yīng)用防火墻都能根據(jù)一些已知的嵌入請求的惡意模式來檢測和阻止懷有惡意的web請求。舉例來說,針對IIS服務(wù)器的Unicode目錄遍歷攻擊能夠通過提交一個類似下面所示的一個請求發(fā)動攻擊:

 
圖4

當(dāng)然,通過檢查URL是否存在類似“..”和“cmd.exe”的字符串可以很容易地檢測和過濾掉這種攻擊。然而,IIS 5.0對于POST請求主體的長度是有要求的,最多為48K字節(jié)——當(dāng)Content-Type頭部不同于application/x-www-form-urlencoded時,超出該限制的部分會被全部截斷。攻擊者可以利用這一點來創(chuàng)建一個很大的請求,如下所示:

 
圖5

這里,Request #1由49223字節(jié)內(nèi)容組成,所以Request #1還包含了Request #2的幾行內(nèi)容。因此,防火墻(或者其他任何代理)會看到Request #1,但是卻無法看到Request #2(它的數(shù)據(jù)正好是#1請求的一部分),能夠看到Request #3卻會遺漏Request #4(因為該P(yáng)OST正好是偽造的頭部xxxx部分)。現(xiàn)在,IIS 5.0將會發(fā)生什么情況?它將在49152字節(jié)無用信息之后停止對Request #1的解析,因為這已經(jīng)達(dá)到了48K=49152字節(jié)的限制,并將Request #2解析為一個新的、單獨的請求。Request #2聲稱它的內(nèi)容為33字節(jié),包括xxxx :之前的所有內(nèi)容,這使得IIS會漏掉Request #3,因為Request #3被解釋為Request #2的一部分,但是IIS會認(rèn)出Request #4,因為它的POST是從Request #2的第33個字節(jié)之后開始的。當(dāng)然,這看起來有些復(fù)雜,但是卻很好的解釋了為什么該攻擊性URL不會被防火墻發(fā)現(xiàn),卻能被IIS正確解析和執(zhí)行的原因所在。

在上面的情形中,雖然我們利用的是web服務(wù)器中的安全漏洞,但是在其他情形中,我們可以通過利用各種支持HTTP的設(shè)備在解析不兼容1005 RFC的消息時所采取的方式各不相同來發(fā)動攻擊。舉例來說,HTTP協(xié)議只允許一個Content-Length頭部,但是卻沒有規(guī)定如何處理具有兩個Content-Length頭部的消息。一些實現(xiàn)將使用第一個,而另一些實現(xiàn)則使用第二個,這種情況下就很容易遭到HTTP走私的攻擊。另一個例子是GET消息中Content-Length頭部的使用。

五、小結(jié)

在本文中,我們詳細(xì)為讀者介紹了針對HTTP截斷和HTTP走私攻擊的安全測試技術(shù)。我們通過實例演示了如何利用HTTP協(xié)議的某些特性,或者利用Web應(yīng)用程序的弱點或者不同代理對HTTP消息的解釋也不相同的特點來發(fā)動這兩種攻擊。希望本文對讀者的安全測試工作有所幫助。

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

【編輯推薦】

  1. 企業(yè)級Web安全滲透測試之SSL篇
  2. Web安全測試之跨站請求偽造(CSRF)篇
責(zé)任編輯:許鳳麗 來源: 51CTO.com
相關(guān)推薦

2016-08-31 09:19:57

2009-11-25 10:57:17

2009-08-17 16:00:14

2009-08-17 14:47:31

2009-08-26 10:49:54

2019-03-20 15:21:28

Web漏洞Tomcat

2010-08-30 13:07:31

2014-01-09 10:49:55

2019-05-21 14:33:01

2013-01-28 16:44:50

2022-12-08 10:33:48

2021-04-30 19:38:42

網(wǎng)絡(luò)安全WebHTTP

2010-09-14 10:19:39

2021-05-13 20:38:30

2020-10-29 15:26:03

Web安全文件解析漏洞網(wǎng)絡(luò)安全

2020-12-01 15:35:06

Web安全明文密碼漏洞

2022-09-06 08:54:00

SpringBootController

2024-05-30 17:43:38

2018-12-03 10:13:23

應(yīng)用安全Web防御

2010-01-22 17:57:40

點贊
收藏

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