Tomcat的SessionID引起的Session Fixation和Session Hijacking问题
上一篇说到《Spring MVC防御CSRF、XSS和SQL注入攻击》,今天说说SessionID带来的漏洞攻击问题。首先,什么是Session Fixation攻击和Session Hijacking攻击问题? 说来话长,非常具体的解释查看我这个pdf文件:《Session Fixation Vulnerability in Web-based Applications》。为什么会注意到这个问题?其实原来也知道session劫持的问题,但没有注意,这几天用IBM Ration AppScan扫描了web漏洞,发现一个严重的Session Fixation漏洞:"会话标识未更新。针对这个问题的解决方案: 始终生成新的会话,供用户成功认证时登录。防止用户操纵会话标识。issue a new JSESSIONID cookie after login。请勿接受用户浏览器登录时所提供的会话标识。" 原来,用户访问我们的登录页面,Tomcat就会生成一个SessionID,加密后放到用户浏览器Cookie中。当用户登录后,这个SessionID并没有改变。更加糟糕的是,每次在同一台机器上,都使用同一个SessionID。这就造成了严重的Session Fixation和Session Hijacking漏洞。其实,如果Tomcat启用了SSL,Tomcat的默认行为是:当用户通过登录后,生成一个新的SessionID。如果没有配置SSL,手动让Tomcat生成新的SessionID的方法是:
/*
* Authenticate, first invalidate the previous Tomcat sessionID immediately
* This step is only required when NO SSL of Tomcat is applied!
*/
if (session!=null && !session.isNew()) {
session.invalidate();
}
/*
* Create the sessionID
* Actually if deploy this web site in Tomcat by SSL, by default a new SessionID will be generated
*
* */
HttpSession session = getRequest().getSession(true);
在后台登陆逻辑中,登陆前生成新的SessionID。
另外可以采用下面的CheckList:
- 查看sessionID生成策略,确保不可被猜测(Tomcat没问题)
- 查看sessionID保存策略,确保不通过URL进行传递(通过URL传递的SessionID禁不起安全测试)
- 每次登录更换sessionID(已解决,事实上Tomcat在SSL下默认也是这样)
- Session Cookie 设置HttpOnly(Tomcat没问题)
- Session Cookie 设置,特别是用户IP, UserAgent...等更改强制session过期需要重新登录(备用,防止Session保持攻击)
Session Fixation攻击
举一个形象的例子,假设A有一辆汽车,A把汽车卖给了B,但是A没有把钥匙都交给B,自己还留了一把。这时候如果B没有换锁的话,A还是可以打开B的车的。在网站上,具体的攻击过程是:攻击者X首先获取一个未经认证的SessionID,然后把这个SessionID交给用户Y去认证,Y完成认证后,服务器并未更新此SessionID的值(注意是未改变SessionID,而不是Session),所以X可以直接凭借此SessionID登录进Y的账户。X怎么拿到SessionID的?常用的方法有Xss攻击(如果设置HttpOnly此方法无效)、网络Sniff、本地木马窃取、网络嗅探等。解决Session Fixation攻击的办法就是在登录完成后,重新生成不可以猜测的SessionID。
ASP.NET的解决Session Fixation和Session Hijacking的问题
ASP.NET的解决Session Fixation和Session Hijacking的问题可以看这个和这个帖子。
http://www.cnblogs.com/Mainz/archive/2012/11/09/2762456.html
Tomcat的SessionID引起的Session Fixation和Session Hijacking问题的更多相关文章
- session fixation
转自:session fixation攻击 什么是session fixation攻击 Session fixation有人翻译成"Session完成攻击",实际上fixation ...
- Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享
小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲.OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+Tomcat搭建服务集群,然后通过Spring Session+Redi ...
- 【tomcat】sessionId学习(未完待续)
这里主要研究tomcat中session的管理方式以及sessionId的原理,下文将研究sessionid存到redis中以及基于redis实现session共享. 平时也就是了解session是基 ...
- nginx+keepalived+tomcat+memcache实现双VIP高可用及Session会话保持
Nginx+Keepalived+Tomcat+Memcached 实现双VIP负载均衡及Session会话保持 IP 信息列表: 名称 IP ...
- 漏洞:会话固定攻击(session fixation attack)
什么是会话固定攻击? 会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会 ...
- Tomcat使用Memcached Session Manager管理Session
Tomcat使用Memcached Session Manager管理Session 废话不多说,直接进入主题.项目使用阿里云负载均衡+ECS服务器集群进行部署,Tomcat使用8.5版本.阿里云负载 ...
- tomcat启动报错 ERROR o.a.catalina.session.StandardManager 182 - Exception loading sessions from persiste
系统:centos6.5 x86_64 jdk: 1.8.0_102 tomcat:8.0.37 tomcat 启动报错: ERROR o.a.catalina.session.StandardMan ...
- ASP.NET Session and Forms Authentication and Session Fixation
https://peterwong.net/blog/asp-net-session-and-forms-authentication/ The title can be misleading, be ...
- 使用Memcached Session Manager扩展Session管理
>>Tomcat的session管理 在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中. 然后再从request获取sessi ...
随机推荐
- 用Python作GIS之三:入口程序 - stargui.py
"""gui start file for Space-Time Analysis of Regional Systems#STARS的图形用户界面入口(高级用户可以直接 ...
- ASP.NET对HTML元素进行权限控制(一)
一个HTML页面有很多的元素比如<DIV>,<P>等.这些元素构成了HTML页面.在Web开发中权限控制是每个系统都要用到了.界面每个元素的权限也是需要控制的.比如一个查询用户 ...
- CrossDomain.xml的作用及其简单用法
使用crossdomain.xml让Flash可以跨域传输数据 本文来自http://www.mzwu.com/article.asp?id=975 一.概述 位于www.mzwu.com域中的SWF ...
- UNIX环境高级编程-环境配置
环境配置步骤如下. 1. 下载源文件:http://www.apuebook.com/src.tar.gz. 2. 复制src.tar.gz文件到/home/me/mydir/unixl/目录(自 ...
- ACCESS数据库C#操作类(包含事务)
转自http://blog.csdn.net/allen3010/article/details/6336717 这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的 ...
- 第三章DOM
1. DOM的概念 D:Document. O:Object.对象可以分为三类, 1. 用户自定义的对象. 2. 内建对象,如Array,Math,Date. 3. 宿主对象,浏览器提供的对象.如wi ...
- Graduate Summer School: Deep Learning, Feature Learning
http://www.ipam.ucla.edu/programs/summer-schools/graduate-summer-school-deep-learning-feature-learni ...
- python学习之“切片操作从入门到精通”
在python学习开发的过程中,我们总是不断的要对List(列表),Tuple(元组)有取值操作:假如我们有一个列表List1现在想取出1其中的前5个元素,改怎么操作呢? >>> L ...
- Linux GPT分区
parted /dev/sdb //parted sdb磁盘 mklabel gpt //设置该磁盘分区为gpt mkpart primary 0% 100% //划分分区大 ...
- HTTP请求报文与响应报文
http://docs.telerik.com/fiddler/KnowledgeBase/HTTP HTTP请求报文与响应报文 HTTP http://www.w3.org/Protocols/rf ...