官术网_书友最值得收藏!

6.1 Web應用程序會話狀態

由于會話管理機制是Web應用程序的一個基本安全組件,它們成為針對應用程序的惡意攻擊的主要目標。如果攻擊者能夠破壞應用程序的會話管理,他就能輕易避開其實施的驗證機制,不需要用戶證書即可偽裝成其他應用程序用戶。如果攻擊者以這種方式攻破一個管理用戶,那么他就能夠控制整個應用程序。在多種情況下Web服務器必須共享知識的會話狀態,會議資料必須在群集節點之間運行Web服務器軟件的共享。

節點之間共享一個集群的會話狀態的方法包括以下內容。

(1)多播會話信息的成員節點。

(2)與合作伙伴共享的會話信息節點采用分布式共享存儲器或存儲虛擬化。

(3)利用節點之間共享會話信息網絡接口。

(4)存儲在一個共享的文件系統。

絕大多數的Web站點實際為Web應用程序,它們允許用戶注冊與登錄;幫助用戶購買及銷售產品;能夠在用戶下次訪問時記住他的喜好;可根據用戶的單擊和輸入,通過動態建立的內容提供豐富、多媒體形式的使用體驗。為執行這些功能,應用程序就需要使用會話。

在大多數情況下,應用程序使用HTTP Cookies作為在服務器與客戶間傳送這些會話令牌的傳輸機制。有兩個HTTP頭部和Cookies有關:Set-Cookies和Cookies。

Set-Cookies由服務器發送,它包含在響應請求的頭部中,用于在客戶端創建一個Cookies。

Cookies由客戶端發送,包含在HTTP請求的頭部中。注意:只有Cookies的domain和path與請求的URL匹配才會發送這個Cookies。

Set-Cookies Header
        Set-Cookies響應頭的格式如下所示:
            Set-Cookies: <name>=<value>[; <name>=<value>]...
                          [; expires=<date>][; domain=<domain_name>]
                          [; path=<some_path>][; secure][; httponly]

注意

臨時Cookies(沒有expires參數的Cookies)不能帶有domain選項。當客戶端發送一個HTTP請求時,會將有效的Cookies一起發送給服務器。如果一個Cookies的domain和path參數和URL匹配,那么這個Cookies就是有效的。

但是現實生活中并非每一種應用程序都使用會話,一些具備驗證機制、功能復雜的安全性至關重要的應用程序選擇使用其他技術管理狀態。常見的有兩種會話替代方案。

(1)HTTP驗證。

使用各種驗證技術(基本、摘要、NTML驗證等)的應用程序有時避免使用會話。在HTTP驗證中,客戶組件使消息頭通過瀏覽器直接與驗證機制交互,而不是通過包含在任何單獨頁面中的針對特殊應用程序的代碼與驗證機制交互。一旦用戶在瀏覽器對話框中輸入他的證書,瀏覽器將會在隨后向相同服務器提出的每個請求中重復提交這些證書(或重復執行任何必要的握手)。這種做法等同于應用程序使用基于表單的驗證,并在每個應用程序頁面插入一個登錄表單,要求用戶通過他們執行的每一項操作重復驗證自己的身份。因此,如果使用基于HTTP的驗證,應用程序可以不必使用會話,而通過多個請求重復確定用戶身份。然而,基于互聯網的應用程序很少使用HTTP驗證。而且,由于發展完善的會話機制能夠提供其他用途非常廣泛的功能,實際上,幾乎所有的Web應用程序都采用這種機制。

(2)無會話狀態機制。

一些應用程序并不發布會話令牌管理用戶與應用程序的交互狀態,而是傳送所有必要數據(一般保存在或隱藏在表單字段中),由客戶管理狀態。實際上,這種機制以類似于ASP. NET ViewState的方式使用無會話狀態。為保證這種機制的安全,必須對通過客戶傳送的數據加以適當保護。這通常要求建立一個包含所有狀態信息的二進制巨對象,并使用一種公認的算法對這些數據進行加密或簽名,還必須在數據中包含足夠的上下文,以防止攻擊者將在應用程序某個位置收集到的狀態對象提交到另一個位置,造成某種意外行為。應用程序還必須在對象的數據中包含一個終止時間,執行與會話超時相同的功能。

這種標準的會話管理機制非常容易受到各種類型的攻擊。當攻擊會話機制時,攻擊者的主要目標是以某種方式劫持一名合法用戶的會話,并因此偽裝成這名用戶。如果該用戶已經通過應用程序的驗證,攻擊者就可以訪問屬于這名用戶的私有數據,或者以他的身份執行未授權操作。如果該用戶未能通過驗證,攻擊者仍然能夠查看用戶在會話過程中提交的敏感信息。

事實證明,一些非定制會話管理解決方案易于受到各種攻擊,導致用戶的會話被攻破。此外,一些開發者發現,他們需要比內置解決方案所提供的控制更加全面的會話行為控制,或者希望避免基于Cookies的解決方案中存在的一些固有漏洞。鑒于這些原因,安全性至關重要的應用程序(如電子銀行)通常使用預定義或并非基于Cookies的會話管理機制。

會話管理機制中存在的漏洞主要分為兩類。

一是會話令牌生成過程中的薄弱環節。

二是在整個生命周期過程中處理會話令牌的薄弱環節。

本章我們將分別分析這些弱點,描述在現實世界的會話管理機制中常見的各種漏洞,以及黑客是如何發現并利用這些漏洞的,最后將描述應用程序為防止這些攻擊所應采取的防御措施。

Burp Suite是用于攻擊Web應用程序的集成平臺,它包含了許多工具,并為這些工具設計了許多接口,以促進加快攻擊應用程序的過程。所有的工具都共享一個能處理并顯示HTTP消息、持久性、認證、代理、日志、警報的一個強大的可擴展的框架。

Burp Suite能高效率地與單個工具一起工作。例如,一個中心站點地圖是用于匯總收集到的目標應用程序信息,并通過確定的范圍來指導單個程序工作。

在一個工具處理HTTP請求和響應時,它可以選擇調用其他任意的Burp工具。例如,代理記錄的請求可被Intruder用來構造一個自定義的自動攻擊的準則,也可被Repeater用來手動攻擊,也可被Scanner用來分析漏洞,或者被Spider(網絡爬蟲)用來自動搜索內容。應用程序可以是“被動地”運行,而不是產生大量的自動請求。Burp Proxy把所有通過的請求和響應解析為連接和形式,同時站點地圖也相應地更新。由于完全地控制了每一個請求,你就可以以一種非入侵的方式來探測敏感的應用程序。

當你瀏覽網頁(這取決于定義的目標范圍)時,通過自動掃描經過代理的請求就能發現安全漏洞。

下面介紹Burp Suite的安裝要求及過程。

Burp Suite安裝要求:Java的V1.5 +安裝(推薦使用最新的JRE),下載地址:http://java.sun.com/j2se/downloads.html。

Burp Suite下載地址:http://portswigger.net/burp/download.html。

Burp Suite的安裝步驟如下。

1 下載完成后可以雙擊可執行的burpsuite_free_v1.6.32.jar文件。如果無法運行,可輸入命令Java -jar burpsuite_v1.4.jar運行。

2 在彈出的對話框中,復選框默認已選,不用更改,單擊“I Accept”按鈕,如圖6-1所示。

圖6-1 接受協議

3 在彈出的對話框中單擊“Leave”按鈕,如圖6-2所示。

圖6-2 不刪除文件

4 至此Burp Suite安裝成功,如圖6-3所示。

圖6-3 安裝完成

5 代理功能能截獲并修改請求。為了攔截請求,并對其進行操作,必須通過Burp Suite配置瀏覽器。可單擊“Proxy”按鈕,在彈出的選項中單擊“Options”按鈕,最后選擇瀏覽器配置127.0.0.1:8080,如圖6-4所示。

圖6-4 配置瀏覽器

主站蜘蛛池模板: 虞城县| 浠水县| 龙江县| 子长县| 仁怀市| 潍坊市| 互助| 永修县| 体育| 西昌市| 东乌| 合川市| 黄平县| 乌鲁木齐市| 金秀| 永顺县| 沂南县| 文安县| 丹阳市| 五华县| 望都县| 青州市| 阿拉善盟| 永新县| 兴海县| 荔浦县| 榕江县| 中卫市| 无极县| 吐鲁番市| 商水县| 汕头市| 台山市| 岑巩县| 托克托县| 威海市| 筠连县| 江山市| 苏尼特右旗| 锡林郭勒盟| 丰台区|