Appscan漏洞之会话标识未更新

  本次针对 Appscan漏洞 会话标识未更新 进行总结,如下:

1. 会话标识未更新

1.1、攻击原理

  在认证用户或者以其他方式建立新用户会话时,如果不使任何现有会话标识失效,攻击者就有机会窃取已认证的会话,此漏洞可结合XSS获取用户会话对系统发起登录过程攻击。

1.2、APPSCAN测试过程

  AppScan会扫描“登录行为”前后的Cookie,其中会对其中的会话信息进行记录,在登录行为发生后,如果cookie中这个值没有发生变化,则判定为“会话标识未更新”漏洞

1.3、修复建议

  1. 始终生成新的会话,供用户成功认证时登录,防止用户操纵会话标识,请勿接受用户浏览器登录时所提供的会话标识;在对新用户会话授权之前废除任何现有会话标识。

  2. 对于不为会话标识 cookie 生成新值的平台(例如 ASP),请利用辅助 cookie。在该方法中,将用户浏览器上的辅助 cookie 设置为随机值,并将会话变量设置为相同值。如果会话变量和 cookie 值从不匹配,请废除会话,并强制用户再次登录。

  3. 若使用的是Apache Shiro安全框架,可使用SecurityUtils.getSubject().logout()方法,参考:http://blog.csdn.net/yycdaizi/article/details/45013397

1.4、修复代码样例

  在登陆页面中添加如下代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    request.getSession().invalidate();//清空session
    Cookie cookie = request.getCookies()[0];//获取cookie
    cookie.setMaxAge(0);//cookie过期
%>

  在验证登陆成功前添加如下代码:

try {
    request.getSession().invalidate();  
    if (request.getCookies() != null) {  
       Cookie cookie = request.getCookies()[0];// 获取cookie  
       cookie.setMaxAge(0);// cookie过期  
    }  
} catch (Exception e) {  
     e.printStackTrace();  
session = request.getSession(true); 

1.5、例外处理

  登录前后会话确实已更新,则可视为误报

1.6 、实际修复方案

 

在登录成功之后,加入图上红框中的代码。

扫描二维码关注公众号,回复: 1501462 查看本文章

猜你喜欢

转载自www.cnblogs.com/meInfo/p/9147588.html
今日推荐