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 、实际修复方案

在登录成功之后,加入图上红框中的代码。
Appscan漏洞之会话标识未更新的更多相关文章
- 会话标识未更新(AppScan扫描结果)
最近工作要求解决下web的项目的漏洞问题,扫描漏洞是用的AppScan工具,其中此篇文章是关于会话标识未更新问题的.下面就把这块东西分享出来. 原创文章,转载请注明 ----------------- ...
- java或者jsp中修复会话标识未更新漏洞
AppScan会扫描“登录行为”前后的Cookie,其中会对其中的JSESSIONOID(或者别的cookie id依应用而定)进行记录.在登录行为发生后,如果cookie中这个值没有发生变化,则判定 ...
- 如何修复AppScan漏洞
[AppScan]修复漏洞一:启用不安全的HTTP方法 (中) 漏洞背景: “启用了不安全的 HTTP 方法”属于“中”危漏洞.漏洞描述是:根据APPSCAN的报告,APPSCAN通过OPT ...
- WebApi -用户登录后SessionId未更新
描工具检测出.net的程序有会话标识未更新这个漏洞 用户尚未登录时就有session cookie产生.可以尝试在打开页面的时候,让这个cookie过期.等到用户再登陆的时候就会生成一个新的sessi ...
- Appscan漏洞 之 加密会话(SSL)Cookie 中缺少 Secure 属性
近期 Appscan扫描出漏洞 加密会话(SSL)Cookie 中缺少 Secure 属性,已做修复,现进行总结如下: 1.1.攻击原理 任何以明文形式发送到服务器的 cookie.会话令牌或用户凭证 ...
- Appscan漏洞之已解密的登录请求
本次针对 Appscan漏洞 已解密的登录请求 进行总结,如下: 1.1.攻击原理 未加密的敏感信息(如登录凭证,用户名.密码.电子邮件地址.社会安全号等)发送到服务器时,任何以明文传给服务器的信息都 ...
- Appscan漏洞之Authentication Bypass Using HTTP Verb Tampering
本次针对 Appscan漏洞 Authentication Bypass Using HTTP Verb Tampering(HTTP动词篡改导致的认证旁路)进行总结,如下: 1. Authentic ...
- Appscan漏洞之跨站点请求伪造(CSRF)
公司前段时间使用了Fortify扫描项目代码,在修复完这些Fortify漏洞后,最近又启用了Appscan对项目代码进行漏洞扫描,同样也是安排了本人对这些漏洞进行修复.现在,针对修复过的Appscan ...
- 老猿学5G:融合计费场景的离线计费会话的Nchf_OfflineOnlyCharging_Update 更新操作过程
☞ ░ 前往老猿Python博文目录 ░ 一.Nchf_OfflineOnlyCharging_Update消息交互过程 Nchf_OfflineOnlyCharging_Update消息是是5G融合 ...
随机推荐
- sparkStreaming读取kafka写入hive表
sparkStreaming: package hive import java.io.File import org.apache.kafka.clients.consumer.ConsumerRe ...
- CefSharp中文帮助文档
https://github.com/cefsharp/CefSharp/wiki/CefSharp%E4%B8%AD%E6%96%87%E5%B8%AE%E5%8A%A9%E6%96%87%E6%A ...
- java多线程(四)死锁
1.1. 什么是死锁 多线程以及多进程改善了系统资源的利用率并提高了系统的处理能力.然而,并发执行也带来了新的问题--死锁. 所谓死锁是指多个线程因竞争资源而造成的一种僵局(互相等待),若无外力作用, ...
- mysql的全量备份与增量备份
mysql的全量备份与增量备份 全量备份:可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表. 备份所有数据库:[root@my ~]# mysqldump -uroo ...
- Spring、SpringMVC、Spring Boot、Spring Cloud 概念、关系及区别
注:此文章转载于其他大神 一.正面解读: Spring主要是基于IOC反转Beans管理Bean类,主要依存于SSH框架(Struts+Spring+Hibernate)这个MVC框架,所以定位很明确 ...
- 关于阿里云 RDS mysql索引优化的一点经验
2019年9月5日10:02:34 本地调试 git https://github.com/barryvdh/laravel-debugbar composer require barryvdh/la ...
- Spring Boot程序正确停止的姿势
Spring Boot提供了2种优雅关闭进程的方式: 基于管理端口关闭进程 基于系统服务方式关闭进程 基于管理端口关闭进程 基于管理端口方式实现进程关闭实际上是模块spring-boot-actuat ...
- 部署TiDB集群
架构图 节点规划 120.52.146.213 Control Machine 120.52.146.214 PD1_TiDB1 120.52.146.215 PD2_TiDB2 120.52.146 ...
- maven cloudara依赖下载
最近开发的项目使用到了cloudara的依赖,已经在pom.xml 中配置了cloudara的repository,但是还是无法下载 <repositories> <reposito ...
- python及Django的json序列化
JSON是一种文本序列化格式(它输出的是unicode文件,大多数时候会被编码为utf-8),人们很容易进行阅读和编写.python自带的dumps方法很有用,能很容易将字典dict类型数据转化为js ...