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 、實際修復方案

 

在登錄成功之后,加入圖上紅框中的代碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM