iT邦幫忙

2021 iThome 鐵人賽

DAY 23
0
Security

讓Web開發者森77的Hacking Trick系列 第 23

[Day23] Session fixation

前言

被Netflix fixation了,差點忘記發文

正文

概念

CWE-384

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通常需要

  1. 得到會被該Web Application承認的有效session ID
  2. 誘騙受害者使用攻擊者定義好的ID進行身分驗證

若達成以上條件,攻擊者就可以冒充受害者的身分訪問該網站(或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, 再將此發送給受害者。

Case Study

Shopify
H1514 Session Fixation on multiple shopify-built apps on *.shopifycloud.com and *.shopifyapps.com

Session fixation on public talk links


上一篇
[Day22] Websocket Injection
下一篇
[Day24] Bind Shell / Reverse Shell
系列文
讓Web開發者森77的Hacking Trick30

尚未有邦友留言

立即登入留言