上一篇说到《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问题的更多相关文章

  1. session fixation

    转自:session fixation攻击 什么是session fixation攻击 Session fixation有人翻译成"Session完成攻击",实际上fixation ...

  2. Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享

    小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲.OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+Tomcat搭建服务集群,然后通过Spring Session+Redi ...

  3. 【tomcat】sessionId学习(未完待续)

    这里主要研究tomcat中session的管理方式以及sessionId的原理,下文将研究sessionid存到redis中以及基于redis实现session共享. 平时也就是了解session是基 ...

  4. nginx+keepalived+tomcat+memcache实现双VIP高可用及Session会话保持

    Nginx+Keepalived+Tomcat+Memcached 实现双VIP负载均衡及Session会话保持 IP 信息列表: 名称         IP                      ...

  5. 漏洞:会话固定攻击(session fixation attack)

    什么是会话固定攻击? 会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会 ...

  6. Tomcat使用Memcached Session Manager管理Session

    Tomcat使用Memcached Session Manager管理Session 废话不多说,直接进入主题.项目使用阿里云负载均衡+ECS服务器集群进行部署,Tomcat使用8.5版本.阿里云负载 ...

  7. 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 ...

  8. 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 ...

  9. 使用Memcached Session Manager扩展Session管理

    >>Tomcat的session管理 在请求过程中首先要解析请求中的sessionId信息,然后将sessionId存储到request的参数列表中. 然后再从request获取sessi ...

随机推荐

  1. WPF学习02:Routed Events

    与传统的桌面开发相比,在事件模型上WPF引入了Routed Events,从开发者的角度上,我们获得了两个便利: 1.可以实现事件路由,即向XAML结构中的父元素路由或者是向子元素路由. 2. Rou ...

  2. 为什么我们使用192.168.0.1作为内网ip

    私有IP地址是一段保留的IP地址.只是使用在局域网中,在Internet上是不使用的. 私有IP地址的范围有: 10.0.0.0-10.255.255.255 172.16.0.0—172.31.25 ...

  3. mysql left( right ) join使用on 与where 筛选的差异

    有这样的一个问题mysql查询使用mysql中left(right)join筛选条件在on与where查询出的数据是否有差异. 可能只看着两个关键字看不出任何的问题.那我们使用实际的例子来说到底有没有 ...

  4. VB 思维导图总结(二)

    第六章.过程... 第七章.菜单工具栏... 第八章.文件系统处理.. 第九章.键盘和鼠标事件...

  5. 什么是XAML?

    XAML类似于XML一样的一种标记语言,主要用来设计UI. 对于XAML的历史,哪些都是废话了,至于Microsoft怎么整出XAML,然后,又怎么让XAML来开发windows 8应用程序,这些,都 ...

  6. html5音频、视频

    1.插入一个视频:<video src="test.webm" width="800" height="600"></vi ...

  7. 图片轮播插件-carouFredSel

    carouFredSel图片轮播插件基于Jquery,比较常规的轮播插件,支持滚轮及键盘左右按键,加入其它插件可实现更加复杂的特效. 主页地址:http://caroufredsel.dev7stud ...

  8. 框架优化系列文档:SVN中非版本控制文件忽略上传的设置

    对于SVN代码库,只应该上传源代码.资源文件等内容进行版本管理,通常编译后的二进制文件.程序包等生成产物是不应该放到SVN上做版本管理的.因此在svn的客户端工具中设置svn的属性:svn:ignor ...

  9. HTML特殊转义字符对照表

    字符 十进制 转义字符 字符 十进制 转义字符 字符 十进制 转义字符 ? ¡ ¡ Á Á Á á á á ¢ ¢ ¢ Â Â ˆ â â £ £ £ Ã Ã Ã ã ã ã ¤ ¤ ¤ Ä Ä &a ...

  10. 【HDOJ】【4336】Card Collector

    概率DP/数学期望/状压DP/容斥原理 kuangbin总结中的第14题 好神奇的做法……题解看kuangbin的代码好了…… //HDOJ 4336 #include<cstdio> # ...