XSS會話劫持
(1)Cookie簡介
Cookie是能夠讓網站服務器把少量文本數據存儲到客戶端的硬盤、內存,或者是從客戶端的硬盤、內存讀取數據的一種技術。
Cookie是一段隨HTTP請求、響應一起被傳遞的額外數據,主要作用是標識用戶、維持會話。
瀏覽網站時,該網站可能會在電腦硬盤寫入一個文本文件,可以記錄ID、密碼等。這個文件就是Cookie文件,當再次瀏覽網站時,網站會讀取Cookie,做出相關回應。比如:在你輸入密碼登錄后,會提示你是否保存,保存后,下一次登錄時可以直接登錄。
根據Cookie在客戶端中存儲的位置,分為內存Cookie和硬盤Cookie。內存Cookie保存時間短暫,瀏覽器關閉后,Cookie就消失。硬盤Cookie保存在硬盤里,有過期時間,到期或者手動清理即可刪除。所以,Cookie又分為持久Cookie和非持久Cookie。
(2)XSS盜取Cookie
如果網站存在XSS漏洞,攻擊者則可以構造惡意XSS代碼獲取用戶cookie,然后截斷此網站的HTTP請求包,將獲取的Cookie替換原有的Cookie,則不用輸入用戶名和密碼,直接登錄該用戶。
(3)SEESSION
除Cookie外,維持會話狀態還有一種形式是SESSION。
WEB中SESSION是在瀏覽一個網站時,從進入網站到瀏覽器關閉所經過的時間,就是一次客戶端與服務端的‘對話’。瀏覽器關閉后,SESSION自動注銷。
每個用戶的會話狀態都是不同的SESSION,區分這些用戶的,叫做SESSIONID。用戶第一次連接服務器時,會自動分配一個SESSIONID。這個SESSIONID是唯一的,在瀏覽器關閉后,SESSION自動注銷,下一次連接時,會重新分配。
SESSION相對Cookie來說更安全,它只存在於服務端,在客戶端只存在一個ID,而COOKIE是存儲在客戶端。
當然,如果網站存在XSS漏洞,攻擊者構造了惡意XSS代碼,如果一個用戶正在瀏覽該網站,同時也觸發了攻擊者的XSS代碼,此時,攻擊者就可以拿到SESSION,因為用戶沒有關閉瀏覽器,SEESSION沒有被注銷,攻擊者就可以利用SESSIONID等信息,直接登錄此用戶。