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

Host頭攻擊技術(shù)解析及防御

譯文
安全 應(yīng)用安全 黑客攻防
通過(guò)本文的閱讀,你將了解到什么是Host頭攻擊,如何抵御該攻擊,以及此類攻擊所揭示出的何種漏洞。

【51CTO.com快譯】一般而言,幾個(gè)網(wǎng)站以共享的方式宿駐在同一臺(tái)web服務(wù)器之上,或者幾個(gè)web應(yīng)用程序共享同一個(gè)IP地址,這都是業(yè)界一些非常通用的做法。當(dāng)然,這也就是host頭(host header或稱主機(jī)頭)的存在原因。host頭指定了應(yīng)該由哪個(gè)網(wǎng)站或是web應(yīng)用程序來(lái)處理一個(gè)傳入的HTTP請(qǐng)求。web服務(wù)器使用該頭部的值來(lái)將請(qǐng)求分派到指定的網(wǎng)站或web應(yīng)用程序之上。宿駐在同一IP地址上的每個(gè)web應(yīng)用程序通常被稱為虛擬主機(jī)。那么針對(duì)host頭的攻擊是由什么所組成的呢?

[[191219]]

我們來(lái)看看如果指定的是一個(gè)無(wú)效的host頭會(huì)發(fā)生什么?大多數(shù)web服務(wù)器被配置為將無(wú)法識(shí)別的host頭傳送到列表中的第一臺(tái)虛擬主機(jī)之上。因此,這使得把攜帶有任意host頭的請(qǐng)求發(fā)送到第一臺(tái)虛擬主機(jī)上是完全可能的。

另一種傳送任意host頭的方法是使用X-Forwarded-Host頭。在某些配置中,這個(gè)頭會(huì)被主機(jī)頭的值所重寫。因此很可能會(huì)產(chǎn)生如下的請(qǐng)求。

GET / HTTP/1.1 Host: www.example.com X-Forwarded-Host: www.attacker.com

許多web應(yīng)用程序都依賴于HTTP的host頭來(lái)解讀出“他們?cè)诤翁?rdquo;??刹恍业氖?,許多應(yīng)用程序開發(fā)人員沒(méi)有意識(shí)到HTTP的host頭是由用戶所控制的。正如你可能已經(jīng)知道的那樣,在應(yīng)用程序的安全理念中,用戶的輸入應(yīng)該總是被認(rèn)為不安全的。因此,在未被正確地得到事先驗(yàn)證之前,請(qǐng)永遠(yuǎn)不要去信任它們。

雖然在PHP web應(yīng)用程序中,對(duì)于host頭的使用是非常普遍的;但是,這實(shí)際上并非是PHP web應(yīng)用程序所獨(dú)有問(wèn)題。下面示例中的PHP腳本是一個(gè)典型的、危險(xiǎn)的host頭的用例。

攻擊者通過(guò)操縱host頭,可以操控上面的代碼來(lái)產(chǎn)生下面這種HTML類型的輸出。

  1. <script src="http://attacker.com/script.js"> 

一般有兩種主要的host頭攻擊的方法:包括使網(wǎng)頁(yè)緩存“帶毒”,和利用替代渠道來(lái)對(duì)敏感的操作進(jìn)行濫用,例如進(jìn)行密碼重置。

網(wǎng)頁(yè)緩存的中毒

網(wǎng)頁(yè)緩存的中毒是指攻擊者使用該技術(shù)來(lái)操控網(wǎng)頁(yè)緩存,并向任何請(qǐng)求頁(yè)面的人提供帶毒的內(nèi)容。

對(duì)于這種情況的發(fā)生,攻擊者需要使一臺(tái)緩存代理中毒,而該緩存可以運(yùn)作在網(wǎng)站本身、或是下游供應(yīng)商、內(nèi)容分發(fā)網(wǎng)絡(luò)(CDNs)、連鎖合作商或是其他客戶機(jī)和服務(wù)器之間的緩存機(jī)制中。該緩存隨后將帶毒的內(nèi)容提供給任何請(qǐng)求它的人,而受害者面對(duì)這些所提供的惡意內(nèi)容,無(wú)論如何都是沒(méi)有控制權(quán)的。

下面的例子就是攻擊者如何通過(guò)網(wǎng)頁(yè)緩存中毒的方式,從而進(jìn)行host頭攻擊的。

  1. $ telnet www.example.com 80 
  2. Trying x.x.x.x... 
  3. Connected to www.example.com. 
  4. Escape character is '^]'. 
  5. GET /index.html HTTP/1.1 
  6. Host: attacker.com 
  7. HTTP/1.1 200 OK 
  8. ... 
  9. <html> 
  10. <head> 
  11. <title>Example</title> 
  12. <script src="http://attacker.com/script.js"> 

密碼重置的中毒

一種普遍的用來(lái)實(shí)現(xiàn)密碼重置功能的方法是:生成一個(gè)密鑰令牌,并且發(fā)送一封包含著該令牌的超級(jí)鏈接的電子郵件。如果一個(gè)攻擊者請(qǐng)求一個(gè)帶有attacker-controlled的host頭類型的密碼重置,會(huì)發(fā)生什么呢?

如果在生成重置鏈接時(shí),該web應(yīng)用程序使用到這個(gè)host頭的值,攻擊者就可以在密碼重置鏈接中“投毒”并發(fā)送到受害者那里。而如果受害者點(diǎn)開了郵件中“帶毒”的重置鏈接,那么攻擊者將能獲得密碼重置的令牌,進(jìn)而可以重置受害者的密碼了。

檢測(cè)密碼重置中毒的漏洞

我們將使用一個(gè)舊版本的Piwik(一個(gè)開源的web分析平臺(tái))作為此類漏洞的實(shí)例,因?yàn)樗容^容易受到“帶毒”的host頭攻擊類型的密碼重置。

為了檢測(cè)到密碼重置的自動(dòng)中毒,我們需要依靠一個(gè)中介服務(wù),因?yàn)閷?duì)于“帶毒”的host頭攻擊類型的密碼重置的檢測(cè),需要一個(gè)帶外的且延時(shí)的向量。為了實(shí)現(xiàn)此目的,Acunetix(網(wǎng)絡(luò)漏洞掃描軟件)在自動(dòng)掃描過(guò)程中會(huì)使用AcuMonitor作為其中介服務(wù)。

而在掃描過(guò)程中,Acunetix將查找密碼重置頁(yè)面并注入一個(gè)自定義的host頭,用以指向一個(gè)AcuMonitor的域。如果漏洞存在的話,那么有問(wèn)題的應(yīng)用程序(如本例中舊版本的Piwik)將使用該值來(lái)生成密碼重置的鏈接,并以電子郵件的形式發(fā)送給相關(guān)的用戶。如下所示:

在上面的圖片中,請(qǐng)認(rèn)真查看其重置鏈接的位置,它指向的是AcuMonitor的域,而不是web應(yīng)用程序的域。

如果“受害者”(在這個(gè)例子中,因?yàn)樗扇〉氖亲詣?dòng)掃描,受害者很可能是安全團(tuán)隊(duì)中的一員,他接收電子郵件后開始進(jìn)行掃描),點(diǎn)擊該鏈接,AcuMonitor將捕獲該請(qǐng)求,并會(huì)發(fā)回一個(gè)通知給Acunetix,指示它應(yīng)該生成一個(gè)“帶毒”的host頭攻擊類型的密碼重置的警報(bào)。

減緩

減緩和應(yīng)對(duì)host頭的攻擊,其實(shí)非常簡(jiǎn)單——就是不要信任host頭。然而在某些情況下,卻是說(shuō)起來(lái)容易做起來(lái)難(特別是涉及到遺留下來(lái)的舊代碼的時(shí)候)。如果你必須使用host頭作為一種識(shí)別web服務(wù)器位置的機(jī)制的話,我強(qiáng)烈建議你使用包含有各個(gè)被允許的主機(jī)名的白名單來(lái)進(jìn)行應(yīng)對(duì)。

原文標(biāo)題:What Is a Host Header Attack?,作者: Ian Muscat 

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

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

2010-09-30 15:20:01

2015-11-09 15:58:03

2017-06-08 19:19:10

2015-05-13 10:36:43

2016-09-30 15:59:41

2024-06-28 08:00:00

端口掃描安全

2023-03-06 08:00:00

2011-04-06 13:02:31

2013-05-22 18:06:41

2013-11-04 09:15:58

2009-01-16 10:40:50

2013-12-11 09:51:33

2012-11-30 14:54:48

2014-05-29 09:34:25

2009-07-12 16:50:08

2010-09-10 10:57:33

2016-01-28 14:21:16

2014-09-18 09:42:15

2018-12-14 14:59:54

2013-03-14 21:13:20

點(diǎn)贊
收藏

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