OWASP WebGoat---安全測試學習筆記(十七)---會話管理缺陷
會話管理缺陷(Session Management Flaws)
主題:
1.會話劫持
概念:
因為HTTP是沒有狀態的,所以就有了會話管理的概念。伺服器通過會話管理,來記憶使用者的狀態。在使用者訪問WEB站點的過程中,會話管理對每個使用者
都有一個唯一的標識(SessionID),而每當新使用者訪問網站時,伺服器上也會有一個相應的標號來記錄。而且該使用者所有後續的頁面請求都會包含此標號,
這樣WEB應用程式就能識別此使用者,並記錄其狀態。伺服器端的會話標識可能是通過Cookie、URL(URL重寫)、隱藏域的方式儲存在瀏覽器中。通常情況,
會話標識(SessionID)是加密儲存在Cookie中的,隨著HTTP請求頭髮送,並在每次載入頁面時傳遞給伺服器。
攻擊者的目的是通過竊取並使用合法使用者的會話標識(SessionID)偽裝成合法使用者,即會話劫持。
方法:
會話劫持最常用的方法就是竊取使用者會話標識。會話劫持是在合法使用者的會話ID被使用之後對其進行佔用。例如:對會話的處理不當會使得攻擊者可能猜
到相鄰的會話標識。 跨站指令碼攻擊(XSS),網路嗅探(Net Sniffer),本地木馬等。
另一種對會話管理進行攻擊的方式叫做“會話定位(Session Fixation)”。原理是合法使用者使用了攻擊者為其準備好的會話ID進行身份認證,如此攻擊者就
可以隨意通過此會話ID劫持使用者會話。而解決Session Fixation的辦法是在登入完成後,重寫SessionID。這樣,攻擊者準備好的會話ID對於已經完成身份認證
的使用者就無效了。因為對於正常使用者來說,已經是另一個會話(SessionID不同)了。
防禦:
對會話標識號的分配(不能讓攻擊者輕易猜到繪畫標識)
加強對會話標識號的保護
設定合適的會話標識有效時間
2.認證Cookie欺騙
如果驗證cookie正確,一些應用程式會允許一個使用者自動登入到他們的網站。如果能夠獲得生成cookie的演算法,有時cookie的值是可以猜到的。
有時候cookie可能是通過跨站攻擊截獲的。
課程目標:瞭解身份驗證cookie的方式,並指導您學習突破這種身份驗證cookie的方法。
3.會話定位(Session Fixation)
伺服器通過每個使用者唯一的SessionID來確認其合法性。若使用者已登入,並且授權他不必重新驗證授權時,當他重新登入應用系統時,他的SessionID依然
是被認為合法的。在一些程式中,可能會在GET請求中傳遞SessionID,這就是攻擊的起點。一個攻擊者可以用一個選定的SessionID給受害人傳送一個超連結。
例如有一個準備好的郵件,看起來像是一個從應用程式管理員發來的官方郵件。若受害者點選了這個連結,並且該受害者以攻擊者指定的ID登入了系統,
那麼攻擊者可以不經授權直接使用與受害者相同的ID訪問該頁面。
參考:
《WEB安全測試》、《白帽子講Web安全》、《WebGoat v2.2技術文件》、《OWASP Testing Guide v3.0》
注: