被Netflix fixation了,差點忘記發文
Authenticating a user, or otherwise establishing a new user session, without invalidating any existing session identifier gives an attacker the opportunity to steal authenticated sessions.
Session fixation可以讓攻擊者誘使一般用戶打開一個已經被(攻擊者)決定的(predefined)的session identifier,這讓攻擊者可以接管用戶的session,達成帳戶接管的效果。
跟其他Session Hijack攻擊類似,攻擊者的目的都是獲取用戶的session identifier。不一樣的是,Session fixation更依賴"誘騙"受害者使用自己預定義的identifier。
要達成Session fixation通常需要
若達成以上條件,攻擊者就可以冒充受害者的身分訪問該網站(或Web Application),例如:
一個具有Session fixation漏洞的網站通過sid的參數接受session identifier,攻擊者使用社交工程手段讓受害者訪問被(攻擊者)定義的惡意網址(或是透過POST的表單):
http://example.com/?sid=xxxxxxxx
只要受害者對此網址發起request,並通過網站進行身分驗證,攻擊者就可以再使用上述的網址冒充受害者身分。
另外一種方法是在HTTP Header Injection提過的方法,也可以達成類似的效果,通過竄改Web Server的Response,攻擊者就可能透過注入Set-Cookie的Header指定一個cookie的值,當受害者收到Response之後,就可以達成一樣的效果
當然也可以搭配之前提過的幾種攻擊方法,例如HTTP Response Splitting、Meta tag injection,進行組合性的攻擊。或是透過XSS也有可能可以做到,如:
http://example.com/q=<script>document.cookie="sid="xxxxxxxx";</script>
要注意的是,也並非是只接受從Server端生成的session identifier就不會遭到此攻擊,攻擊者可以先向目標網站發出一個普通的request,獲取一個從該網站生成的session id, 再將此發送給受害者。
Shopify
H1514 Session Fixation on multiple shopify-built apps on *.shopifycloud.com and *.shopifyapps.com
Session fixation on public talk links