目录
漏洞原理
Session 是应用系统对浏览器客户端身份认证的属性标识,在用户退出应用系统时,应将客户端 Session 认证属性标识清空。如果未能清空客户端 Session 标识,在下次登录系统时,系统会重复利用该 Session 标识进行认证会话。攻击者可利用该漏洞生成固定Session 会话,并诱骗用户利用攻击者生成的固定会话进行系统登录,从而导致用户会话认证被窃取。
但是这个漏洞在实际应用过程中比较鸡肋,需要配合XSS攻击等方式。了解原理就行
漏洞检测
- 访问网站(未登录):获取cookie信息,获取sessionid
- 登录网站:查看cookie信息,获取sessionid
- 查看登录前,登录后sessionid是否相同
如下站点,当我们第一次访问这个站的时候,服务器会返回一个sessid值
接下来每次访问都会携带这个sessid值。我们先记录下这个id值,PHPSESSID=ni4aan8rpi0e20cadss1mgh3k6
接着对网站进行登录,查看此时的id值,PHPSESSID=8ti3v9026rqk5m48g3lqml1k93。和登录前的id值不一样,所以不存在会话固定漏洞。如果一样则存在该漏洞
ps:看cookie值很长,但其实有用的身份标识就是sessid值,我们把其余的字段都删除只剩下id值,如下还是一样通过了认证
如果将sessid值篡改,那么直接访问不了
如果站点没登录之前没有sessid值,只有成功登录后服务器才会返回sessid值,则不存在该漏洞。
漏洞利用
1、攻击者Attacker能正常访问该应用网站;
2、应用网站服务器返回一个会话ID给他;
3、攻击者Attacker用该会话ID构造一个该网站链接发给受害者Victim;
4、受害者Victim点击该链接,携带攻击者的会话ID和自己的用户名密码正常登录了该网站,该会话id成功通过了验证;
6、由于存在固定漏洞,登录前后的id值一样。所以攻击者Attacker可以用该会话ID成功冒充劫持受害者Victim的会话。
ps:这里的难点就是如何将会话id发送给受害者,并且让受害者携带该id通过认证。