今天因为项目背景需要,需要检测web接口是否一些安全隐患。
无奈于从未掌握有系统的渗透性知识,只好根据个人对网络协议和 web 的理解,做一些探索,最终发现了一个session fixation attacks漏洞。
场景回顾:
使用抓包工具监听业务的登录登出接口,发现登录后的 JSESSIONID 为 A,登出后的 JSESSIONID 仍然为A;
比如 header 里面部分是这样的
Cookie:shiro.session.id=1ace7495f419471dbf8de287fc36f655; user=admin; JSESSIONID=Y4866CC1-B2CT7JZBT06L12JR83262-96SCA8FJ-9;
// 每次 shiro.session.id 会变更(其会在每次重新登录后,分配新的SessionID)。但是,JSESSIONID=Y4866CC1-B2CT7JZBT06L12JR83262-96SCA8FJ-9 却是不论登录退出前后均是固定的
所以,基于对 cookie 的理解,这个地方极有可能是有漏洞的。
—— Cookie 真正的内容始终是没有变化,相当于就是将用户的账户信息完全记录了下来
于是乎,当用户登录后,黑客如果通过网络嗅探工具截取了该用户的报文,将头消息等内容进行重放-就基本可以做任意的业务请求了
极有可能导致用户产生严重的损失
漏洞本质即:
JSESSIONID 在登录前后不产生变化,使用了固定 cookie。
原理参考
https://www.owasp.org/index.php/Session_fixation
实现可参考
https://blog.csdn.net/zxae86/article/details/50380997