以前一直觉得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与受攻击者的账号绑定(最常见的场景就是找回密码的地方)