(1) 并不是每個(gè)瀏覽器都支持cookie,有些用戶為了防止泄露隱私以及從安全性上考慮,可能會(huì)禁用瀏覽器的cookie。
(2) 由于功能限制或者設(shè)置有誤,代理服務(wù)器不能夠代理cookie,導(dǎo)致通過代理服務(wù)器上網(wǎng)的用戶不能登錄進(jìn)入以cookie進(jìn)行會(huì)話跟蹤的WebMail。
六、URL會(huì)話攻擊
一些WebMail系統(tǒng)膽敢在客戶端不支持cookie時(shí)拒絕提供WebMail服務(wù),如新浪、搜狐等WebMail系統(tǒng),而另一些WebMail系統(tǒng)則視用戶為上帝,使用URL會(huì)話跟蹤技術(shù)來維護(hù)與客戶端交互的狀態(tài),如163.net、263.net、21cn.com等。
URL會(huì)話跟蹤是把一些標(biāo)識(shí)會(huì)話的字符串加在URL里面,對(duì)于客戶端的每一個(gè)http連接請(qǐng)求,服務(wù)端都會(huì)把URL里的會(huì)話標(biāo)識(shí)和它所保存的會(huì)話數(shù)據(jù)關(guān)聯(lián)起來,從而能夠區(qū)分不同的客戶端,以及進(jìn)行用戶會(huì)話跟蹤。下面是在瀏覽器的地址欄里看到的一些WebMail的URL,看起來會(huì)很長(zhǎng)甚至有些怪:
http://bjweb.163.net/cgi/ldapapp?funcid=main&sid=HAPGfUDusCLAQSIm
http://WebMail.21cn.com/extend/gb/std/username/
NV0416qxMftyKnOcavGDktOmIEvPsb/SignOn.gen
在關(guān)閉瀏覽器后,保存在服務(wù)器里的會(huì)話關(guān)聯(lián)數(shù)據(jù)并不會(huì)立即失效,一段時(shí)間內(nèi)WebMail的URL仍然有效,他人只要從瀏覽器的歷史記錄里找到該URL,就可以點(diǎn)擊進(jìn)入用戶的WebMail,并不需要任何密碼驗(yàn)證,所以用戶在退出WebMail時(shí),不應(yīng)該直接關(guān)閉瀏覽器,應(yīng)該點(diǎn)擊WebMail上的“退出”來退出,這樣才會(huì)清空會(huì)話,使WebMail的URL失效,那些在網(wǎng)吧等公共場(chǎng)所上網(wǎng)的用戶尤其要注意這一點(diǎn)。
如果攻擊者知道WebMail系統(tǒng)的URL會(huì)話機(jī)制,能猜到WebMail的會(huì)話標(biāo)識(shí),那么就能找到WebMail的URL,在瀏覽器地址欄里輸入相同的URL就能輕易地進(jìn)入用戶的WebMail,所以WebMail系統(tǒng)應(yīng)該使用較長(zhǎng)的、隨機(jī)的字符串做為會(huì)話標(biāo)識(shí),使攻擊者難以猜測(cè)。
不過,即使WebMail系統(tǒng)的URL會(huì)話機(jī)制再?gòu)?fù)雜、會(huì)話標(biāo)識(shí)再長(zhǎng),對(duì)攻擊者而言,要想獲得用戶WebMail的URL,往往就像探囊取物一般容易。
JavaScript程序中的window.location、location.href、document.URL、document.location、document.referrer等對(duì)象屬性都可以用來獲取WebMail的URL,攻擊者只要在html郵件中放入一段腳本代碼就可以獲取URL,并且能偷偷地發(fā)送給攻擊者,類似的代碼可以參考“cookie會(huì)話攻擊”一節(jié)里的一段演示程序。
Http協(xié)議(RFC2616)里規(guī)定http請(qǐng)求頭域“referer”用于指明鏈接的出處,即指明來自客戶端的這個(gè)連接請(qǐng)求是從哪個(gè)URI地址提交過來的,例如用戶點(diǎn)擊頁(yè)面上的某個(gè)鏈接地址后,發(fā)出的referer域的內(nèi)容就是當(dāng)前頁(yè)面的URI地址。CGI編程中的環(huán)境變量“HTTP_REFERER”用于獲取http請(qǐng)求頭域“referer”,下面是一個(gè)在Linux下用shell寫的CGI程序:
#!/bin/sh
#set -f
echo Content-type: text/plain
echo
#寫入日志,geturl.log文件權(quán)限要可寫
echo "`date` $REMOTE_ADDR $HTTP_REFERER" >> /var/log/geturl.log
#即時(shí)通知攻擊者
wall "`date` 收到WebMail url,請(qǐng)檢查日志"
#返回給客戶端的信息,用于迷惑用戶
echo "你好!"
攻擊者把這個(gè)CGI程序放在自己的Web服務(wù)器上,然后把該CGI程序的URL地址以單獨(dú)一行放在txt郵件里發(fā)給用戶,URL地址會(huì)自動(dòng)變成鏈接地址,受到欺騙的用戶點(diǎn)擊后,攻擊者就獲得了用戶WebMail的URL。當(dāng)然攻擊者也可以把CGI程序的URL地址放在html郵件里做為鏈接地址讓用戶來點(diǎn)擊,或者就用腳本程序或框架技術(shù)使這個(gè)CGI程序自動(dòng)運(yùn)行,或者干脆把這個(gè)CGI程序的URL地址放在html郵件源代碼img元素的src屬性值,雖然顯現(xiàn)不出圖片,但這個(gè)CGI程序照樣會(huì)收到http連接請(qǐng)求,從而獲得WebMail的URL。
Web服務(wù)器的日志記錄也能獲取referer域的內(nèi)容,以apache為例,在httpd.conf文件中修改或加入如下配置參數(shù):
LogFormat "%t %h %{Referer}i -> %U" referer
CustomLog /usr/local/apache/logs/referer_log referer
這樣對(duì)web服務(wù)器的每一個(gè)http連接請(qǐng)求的referer域的內(nèi)容都會(huì)寫到referer_log日志文件里去,攻擊者只要分析日志文件就能夠知道用戶WebMail的URL了。WebMail系統(tǒng)如果支持html郵件的話,總不可能會(huì)禁止html郵件中使用圖像,攻擊者在發(fā)給用戶的html郵件中放入一張src地址在自己Web服務(wù)器上的圖片,也就能輕易地獲取WebMail的URL。
這樣一來,深懷惡意的攻擊者花點(diǎn)小錢去做郵件服務(wù)商提供的WebMail旗幟廣告,廣告的圖片則是放在攻擊者的Web服務(wù)器上,那么攻擊者就能每天坐收成千上萬(wàn)用戶的WebMail了
新聞熱點(diǎn)
疑難解答