漏洞名称:
会话操纵、会话标识未更新
漏洞描述:
会话标识未更新漏洞,在用户进入登录页面,但还未登录时,就已经产生了一个session,用户输入信息,登录以后,session的id不会改变,也就是说没有建立新session,原来的session也没有被销毁), 可能会窃取或操纵客户会话和cookie,它们可能用于模仿合法用户,从而使黑客能够以该用户身份查看或变更用户记录以及执行事务。
检测条件:
- 已知Web网站地址
- Web业务运行正常
- Web业务存在登陆认证模块
- 已知正确的用户名、口令
检测方法:
- 打开网站登录页面。
- 登陆前通过软件工具抓取到的cookie信息值与在登录后抓取到的cookie进行对比,如果其值一样,则可判断其会话的cookies或者sessions未进行更新。
登录前:
登录后:
修复方案:
始终生成新的会话,供用户成功认证时登录登陆界面和登陆成功的界面一致时, 修改后台逻辑,在验证登陆逻辑的时候,先强制让当前session过期,然后用新的session存储信息:登陆界面和登陆成功的界面不一致时 在登陆界面后增加下面一段代码,强制让系统session过期。
request.getSession().invalidate();//清空session
Cookie cookie = request.getCookies()[0];//获取cookie
cookie.setMaxAge(0);//让cookie过期 ;
注意:这段代码需要在页面的最后部分加上才可以,否则将报错,或者可以加入到登录验证成功的代码后面。
修复后验证:
登录前:
登录后:
可以看到其会话已经更新,说明漏洞修复完成。