Session Fixation session固定攻击
Session Fixation session固定攻击
参考 https://en.wikipedia.org/wiki/Session_fixation
- Session Fixation session固定攻击
- 一、常见攻击场景
- 1. 场景1 简单的攻击场景
- 2. 场景2 使用服务器生成的sessionID
- 3. 场景3 使用跨子域cookie攻击
- 二、常见防御手段
- 1. 不从 GET/POST 的变量中接受session的id
- 2. 每次登录都更改sessionID
- 3. 每次请求都生成一个session
- 4. 将sessionID存储区HTTP cookie中
- 三、总结
- 一、常见攻击场景
一、常见攻击场景
1. 场景1 简单的攻击场景
在这一场景中,假定sessionID
是前端生成的。
假设Alice在银行 unsafe.example.com有个账户,Mallory想攻击他的账户。
- 步骤1:Mallory确定银行 unsafe.example.com接受任何sessionID,并且接受sessionID从URL的查询参数中传过来,并且没有安全检查。
- 步骤2:Mallory发送一封邮件给Alice,内容是 “嘿,看看这个,我们银行有一个很酷的新账户摘要功能,http://unsafe.example.com/?SID=I_WILL_KNOW_THE_SID”。
- 步骤3:Alice点击这一链接,然后正常登录,由于链接已经附带了sessionID,服务器不再生成,这时Mallory可以用这一sessionID掌握Alice账号的所有权限。
2. 场景2 使用服务器生成的sessionID
假定sessionID是后端生成,且同样后端接受sessionID从URL的查询参数中传过来,并且没有任何安全检查。银行网站为http://unsafe.example.com/
同样假设Alice在银行 unsafe.example.com有个账户,Mallory想攻击他的账户。
- 步骤1:Mallory登录银行网站并且登录后获取了一个sid。
- 步骤2:Mallory发送了一个邮件给Alice,包含了如下链接:“http://unsafe.example.com/?sid=123456”。
- 步骤3:Alice点击此链接,登录银行网站,由于链接带有固定的sid,服务器不会新生成一个sid,因此Mallory可以使用该sid拥有Alice账号的所有控制权
3. 场景3 使用跨子域cookie攻击
这就像跨站点 cookie,只是它不依赖于浏览器漏洞。相反,它依赖于这样一个事实,即通配符 cookie 可以由影响其他子域的一个子域设置。
- 步骤1:网站 www.example.com 将子域分发给不受信任的第三方。
- 步骤2:一个这样的第三方,Mallory,现在控制了evil.example.com,诱惑Alice访问他的网站。
- 步骤3:对evil.example.com的访问会在Alice的浏览器上创建一个对子域.example.com的session cookie。
- 步骤4:当Alice访问www.example.com时,这一个cookie将会随着请求被发送。正如cookie的规范所述,Alice将使用Mallory所掌控的evil.example.com的cookie。
- 步骤5:一旦Alice登录,Mallory将可以使用Alice的账号。
这三个场景最后都可以导致Mallory最后可以获得Alice账号的控制权,同时也可能有一个另外的攻击场景如下:
并不需要Alice登录,Mallory可以监控Alice并滥用Alice输入的数据。例如,Mallory可以通过以上攻击方式给Alice一个Mallory自己的已验证的session,这样Alice将使用Mallory的鉴权信息访问网站。这样一旦Alice决定要买点什么东西并输入了自己的银行卡信息,Mallory就能通过自己账号的历史信息收到这一银行卡信息。
这种类型的session固定利用与“经典”利用场景不同,因为它发生在应用程序的未经身份验证的部分或反转身份验证(攻击者登录受害者)。
二、常见防御手段
1. 不从 GET/POST 的变量中接受session的id
不从GET/POST变量中接受session的id,改为从body中接受。
2. 每次登录都更改sessionID
如果用户每次登录都会改变sessionID,这一攻击就可以很大程度上被避免。当受害者点击了攻击者的带有固定sessionID的链接时会登录,但由于每次登录都会改变sessionID,攻击者无法使用固定session进入受害者的账号。
3. 每次请求都生成一个session
4. 将sessionID存储区HTTP cookie中
三、总结
就目前的系统而言,就笔者了解,一般使用token机制而不使用session,token一般都不会从url参数,甚至不会从header中接受而是从body中接受。
如果系统session将从后端生成并且每次登录都会重新生成,且重大操作有验证码等二次校验,就可以屏蔽掉这一攻击。
Session Fixation session固定攻击相关推荐
- 漏洞:会话固定攻击(session fixation attack)
什么是会话固定攻击? 会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会 ...
- Tomcat的SessionID引起的Session Fixation和Session Hijacking问题
上一篇说到<Spring MVC防御CSRF.XSS和SQL注入攻击>,今天说说SessionID带来的漏洞攻击问题.首先,什么是Session Fixation攻击和Session Hi ...
- Flask的会话技术:cookie、session以及session持久化问题
文章目录 一.会话技术 1.介绍 2.详细过程 二.Cookie 1.Cookie介绍 2.Cookie登陆使用 三.Session 1.Session介绍 2.Session登陆使用 3.Sessi ...
- hibernate 管理 Session(单独使用session,非spring)
hibernate 管理 Session(单独使用session,非spring) Hibernate 自身提供了三种管理 Session 对象的方法 Session 对象的生命周期与本地线程绑定 S ...
- Django框架(22.Django中设置session以及session对象及方法)
Session 对于敏感.重要的信息,建议要储在服务器端,不能存储在浏览器中,如用户名.余额.等级.验证码等信息. 在服务器端进行状态保持的方案就是Session. 数据迁移后会在数据库中创建出存储S ...
- php session mysql_php session mysql存储
一直知道逻辑没实际用过,今天试用下! session.gc_divisor 100 session.gc_maxlifetime 1440 session.gc_probability 1 以上 ...
- php session支持,SESSION支持
# SESSION支持 [上一页](# "上一页")[下一页](# "下一页") 系统提供了Session管理和操作的完善支持,全部操作可以通过一个内置的ses ...
- PHP session有效期session.gc_maxlifetime
PHP中的session有效期默认是1440秒(24分钟),也就是说,客户端超过24分钟没有刷新,当前session就会失效.很明显,这是不能满足需要的. 一个已知管用的方法是,使用session_s ...
- java 重写session_使用Shiro重写Session 自定义SESSION
引入shiro的jar包 1.2.3 org.apache.shiro shiro-core ${shiroVersion} org.apache.shiro shiro-web ${shiroVer ...
- cookielifetime php_PHP session有效期session.gc_maxlifetime的设置方法
PHP(外文名: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,入门门槛较低,易于学 ...
最新文章
- 在内网中使用maven_搭建私有maven仓库并在项目中使用
- 因为一条SQL,程序员差点被祭天......
- mySQL优化 my.ini 配置说明
- JS实现ul,li排序效果
- SVN 常用操作命令 使用笔记
- SAP UI5不支持delta render
- 蓝桥杯 123 二分+打表
- 天池 在线编程 停车困境(双指针)
- 【ASP.NET】HTTP中的 get 和 post 请求
- Flask框架flash消息闪现学习与优化符合闪现之名#华为云·寻找黑马程序员#
- 新浪微博开放平台开发步骤简介(适合新手看)
- org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connec
- PHP之道 - php各方面的知识汇总
- Android App开发实战项目之模仿美图秀秀的抠图工具(附源码和演示视频 简单易懂 可直接使用)
- 连载-第1章绪论 1.1嵌入式系统概述
- Vue packages version mismatch: - vue@2.6.12 (C:\Users\Administrator\WebstormProjects\memorial\node_m
- 医疗大数据的分析和挖掘发展现状如何?
- 真的是会者不难,难者不会啊!
- 广东职称计算机考试模块要求,广东职称计算机考试实施办法粤人发[2002]81号
- MVC 模型-视图-控制器
热门文章
- SEO优化的四个建议
- Hi3516A开发--板卡烧写
- Python数据可视化Part 5-Matplotlib 3D图片与投影教学-代码详解
- 开启 Kerberos 安全的大数据环境中,Yarn Container 启动失败导致作业失败
- 【软件相关】EverythingSumatraPDF的一个小bug
- Android系统之路(初识MTK) ------ make update-api长按Power键添加Reboot项/内置默认Ringtone/SMS/Notification/Alarm删除系统铃声
- spring中 @EnableXXX 注解的实现
- ABB 机械臂的部分代码
- HTMLdiv标签滑条
- pandas 案例积累(一)—— 基础应用