以前一直覺得sessionid固定和session混淆就是兩個一樣的東西,后來發現兩者還是要分開來的,主要因為利用場景的不同!!!
sessionid固定和session混淆還是需要區分開來的
一般情況下:sessionid固定原理是因為用戶登陸后未創建創建新的會話,導致sessionid不變(大部分情況下是在表中加上一個判斷用戶是否登陸了的字段),
攻擊方法:
第一種:
sessionid固定多用於和crlf結合起來結合起來進行攻擊,發送一個由crlf漏洞的鏈接,管理員點擊后刷新sessionid或者是創建新的sessionid,當管理員再去登陸該網站時(由於該sessionid時無效的,所以大部分情況下會跳轉到登陸頁面,就算不跳轉也沒關系,等管理員什么時候自己去登陸就行),攻擊者也能拿該sessionid進行登陸
第二種:
結合xss,例如document.cookie="sessionid=123",為sessionid設值
第三種:
想辦法在html頁面中插入<meta http-equiv='Set-Cookie' content='PHPSESSID=22333'>。服務器經常靠在返回的HTML文檔中增加<META>標簽來設置Cookie
session混淆原理其實就是sessionid固定的原因,當一個用戶登陸之后,另一個用戶使用同一瀏覽器再次登陸時,sessionid不變,但是卻綁定了不同的用戶,這種情況叫session混淆。目前我知道的利用session混淆的場景:
當一個用戶(攻擊者的用戶)登陸之后,由於某些原因可以將該sessionid和其他用戶綁定起來(實際場景中沒遇到)
再或者使用用戶自己的賬號進行一系列認證操作后,真正操作數據時將sessionid與受攻擊者的賬號綁定(最常見的場景就是找回密碼的地方)