攻擊者提供一個包含已知會話ID的連結例如:
點擊
,來誘使受害人點擊這個連結,使用者點選連結後可能會進行一系列操作,然後攻擊者再使用這個會話ID登陸網站,從而劫持使用者的會話,造成SESSION固定攻擊。
但是一般php的設定
session.use_cookies
和
session.use_only_cookies
都為1,也就是攻擊者不能通過url傳遞會話ID的方式劫持SESSION,在這種情況下,還有可能造成SESSION固定攻擊嗎?
回複內容:
攻擊者提供一個包含已知會話ID的連結例如:點擊
,來誘使受害人點擊這個連結,使用者點選連結後可能會進行一系列操作,然後攻擊者再使用這個會話ID登陸網站,從而劫持使用者的會話,造成SESSION固定攻擊。
但是一般php的設定session.use_cookies
和session.use_only_cookies
都為1,也就是攻擊者不能通過url傳遞會話ID的方式劫持SESSION,在這種情況下,還有可能造成SESSION固定攻擊嗎?
可以自己重寫session,方便對各種規則進行設定校正。
難道不校正IP和安全HASH的麼
假設目前使用者的實際SESSION PrimaryKey為hash(ip+uid)
。則$_SESSION[md5(ip.uid)]['login']
首先分析下Session固定攻擊產生的根本原因:
攻擊者成功擷取到了一個固定的sessionID;
攻擊者使用某些方法讓被攻擊者以擷取到的已知sessionID作為被攻擊者的sessionID請求了服務端並執行授權操作;
攻擊者以擷取到的session ID請求服務端以獲得和被攻擊者相同的授權。
這裡的重點在於“2”,(在服務端支援GET session的情況下)通過一個URL誘使被攻擊者點擊是最直接的方式,但最終目的是讓被攻擊者“攜帶已知sessionID”請求服務端,開啟session.use_only_cookies的情況下還是保留了使用cookie“攜帶已知sessionID”請求服務端的方式,這種情況下攻擊者只需要“使用某些方法”(比如XSS)修改cookie值為已知sessionID就能達到相同效果。最終的防禦方式還是應該在每次授權改變後重新分配sessionID。
答案參考:https://www.douban.com/note/299072454/