漏洞:会话固定攻击(session fixation attack)
什么是会话固定攻击?
会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。
看下面Session Fixation攻击的一个简单例子:
整个攻击流程是:
1、攻击者Attacker能正常访问该应用网站;
2、应用网站服务器返回一个会话ID给他;
3、攻击者Attacker用该会话ID构造一个该网站链接发给受害者Victim;
4-5、受害者Victim点击该链接,携带攻击者的会话ID和用户名密码正常登录了该网站,会话成功建立;
6、攻击者Attacker用该会话ID成功冒充并劫持了受害者Victim的会话。
攻击分析
攻击的整个过程,会话ID是没变过的,所以导致此漏洞。
攻击修复
1、登录重建会话
每次登录后都重置会话ID,并生成一个新的会话ID,这样攻击者就无法用自己的会话ID来劫持会话,核心代码如下。
// 会话失效
session.invalidate();
// 会话重建
session=request.getSession(true);
2、禁用客户端访问Cookie
此方法也避免了配合XSS攻击来获取Cookie中的会话信息以达成会话固定攻击。在Http响应头中启用HttpOnly属性,或者在tomcat容器中配置。关于HttpOnly更多详细说明大家可以自行百度。
道高一尺,魔高一丈。目前我们已经对全线系统及时填补了该漏洞,以免给攻击者留下突破口。
转发到朋友圈给更多的朋友吧!
推荐阅读
教程:史上最强 Spring Boot & Cloud 教程汇总
扫描关注我们的微信公众号,回复 “666” 可获取一套Java并发编程高清视频教程。
漏洞:会话固定攻击(session fixation attack)的更多相关文章
- 会话固定攻击 - yxcms session固定漏洞
目录 会话固定攻击 e.g. yxcms session固定攻击 分析 了解更多 会话固定攻击 Session fixation attack(会话固定攻击)是利用服务器的session不变机制,借他 ...
- php防止会话固定攻击
问题:希望确保应用不会受到会话固定攻击,即攻击者强制用户使用一个预定义的会话id. 解决方案:要求使用会话cookie但会话标识符不追加到URL,另外要频繁地生成新会话ID: <?php ini ...
- session fixation
转自:session fixation攻击 什么是session fixation攻击 Session fixation有人翻译成"Session完成攻击",实际上fixation ...
- 预防 Session 劫持与 Session 固定攻击
一.预防 Session 劫持 要求: ① 只允许通过 Cookie 来传递 SessionID ② 生成一个由 URL 传递的唯一标识作为 Session 的标记(token) 当请求同时包含有效的 ...
- PHP Sessions子系统会话固定漏洞
漏洞名称: PHP Sessions子系统会话固定漏洞 CNNVD编号: CNNVD-201308-193 发布时间: 2013-08-22 更新时间: 2013-08-22 危害等级: 中危 漏 ...
- 代码审计之XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)
0x00 前言 这段时间就一直在搞代码审计了.针对自己的审计方法做一下总结,记录一下步骤. 审计没他,基础要牢,思路要清晰,姿势要多且正. 下面是自己审计的步骤,正在逐步调整,寻求效率最高. 0x01 ...
- [代码审计]XiaoCms(后台任意文件上传至getshell,任意目录删除,会话固定漏洞)
0x00 前言 这段时间就一直在搞代码审计了.针对自己的审计方法做一下总结,记录一下步骤. 审计没他,基础要牢,思路要清晰,姿势要多且正. 下面是自己审计的步骤,正在逐步调整,寻求效率最高. 0x01 ...
- Tomcat的SessionID引起的Session Fixation和Session Hijacking问题
上一篇说到<Spring MVC防御CSRF.XSS和SQL注入攻击>,今天说说SessionID带来的漏洞攻击问题.首先,什么是Session Fixation攻击和Session Hi ...
- PHP漏洞全解(七)-Session劫持
本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. ...
随机推荐
- js 读取本地文件(必须通过input控件才能实现) 及 下载文件
js 操作 文件的实现原理: 1.js是不能直接操作(读写)文件的,html的 input[type="file"] 控件是可以读取文件数据(获取文件数据流)的.js可以获取这个 ...
- App响应式布局
1.手机的响应式布局,所有的单位用rem来表示. 如:设计稿的宽度是750,则html标签的font-size=屏幕宽度/7.5.那么在网页中的尺寸 = 设计高上实际的尺寸/100. 把下面的代码作为 ...
- mysql之分组
1.创建分组 group by SELECT vend_id, COUNT(*) AS num_prods FROM productsGROUP BY vend_id; 在where字句之后,在ord ...
- Django--实现分页功能,并且基于cookie实现用户定制每页的数据条数
# page_num 当前页数, total_result_num 总共有多少条测试结果 def pagination(request, page_num, total_result_num, res ...
- 如何获取监听iframe src属性的变化进行后续操作
应用场景,当iframe内发生点击事件内容改变时,如果我们想获取变化后的iframe的 src 属性值,就可以使用如下方式去获取 <iframe id="taobaoOrder&quo ...
- ICPC Asia Nanning 2017 L. Twice Equation (规律 高精度运算)
题目链接:Twice Equation 比赛链接:ICPC Asia Nanning 2017 Description For given \(L\), find the smallest \(n\) ...
- wpf mvvm datagrid 中button绑定命令方法
<DataGridTemplateColumn Header="设备状态" IsReadOnly="True" Width="150" ...
- android中的Handler消息传输机制
android平台不允许Activity新启动的线程访问该Activity里的界面组件,这样就导致新启动的线程无法动态的改变界面组件的属性值.但是实际android应用开发中,需要新启动的线程周期性地 ...
- MySQL数据库 -- Navicat、pycharm连接数据库
内容目录 1.Navicat使用 2.pycharm使用数据库 一.Navicat使用 #1. 测试+链接数据库 #2. 新建库 #3. 新建表,新增字段+类型+约束 #4. 设计表:外键 #5. 新 ...
- @Conditional系列注解例子
1. @Conditional 说明:指定的Condition实现类,matches方法返回true则注入bean,false则不注入 @Configuration public class Bean ...