[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


<<:  【领域展开 23 式】 Page & Post ,双 P 关系确认

>>:  DAY 23 - 四足战车 (4)

[Day-16] R语言 - 分群应用(一) GMM数值补值-上 ( Fill.NA with GMM in R.Studio )

您的订阅是我制作影片的动力 订阅点这里~ 影片程序码 (延续昨天) #演算法 library(Clu...

Day27 - DataPickerDialog

当我们需要设计一个选择或输入日期的功能给使用者 我们势必要给三个输入:年份、月份、几号 那Andro...

Day 26 bert 文字情感分类-5

训练时间约半个小时,但 colab 的速度并不稳定,以前也有同一笔资料训练4个小时的状况。 根据20...

[Day 29] 部属(heroku)

订阅的资料弄好了,要用排程去跑,如果服务器是架设在自己主机上,可以用linux 的crontab跑,...

Day 16:专案03 - PTT 八卦版爬虫01 | cookie

偷看一下专案长怎样 我预期的专案想要完成这几件事: 取得八卦版每篇文章的标题、作者和发文时间。 取...