freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

逻辑漏洞-会话固定-窃取型详解
2022-04-19 05:14:31
所属地 四川省

前言

最近,探索到一种不常见的逻辑漏洞,经过搜索,这篇文章提到了该类型——会话固定相关的定义,每日漏洞 | 会话固定 - FreeBuf网络安全行业门户

抱歉,新手一枚,技术不熟也没有自信,给出这个链接是为了证明自己没有瞎想,是有公开资料的。在此基础上,结合实际情况进行详解和分析。

百度和freebuf找到了一些记录,但理解存在分歧和模糊,部分文章使用了“某种手段”,“预知”,“诱导”,“窃取”,但是没有详细阐述举例。

综合来说,会话固定可以分为两类:迫使型和窃取型。两种类型的共同点在于,如果登录时服务端重新定义登录凭证以及站内业务使用token,可以有效防护漏洞。

1、迫使型

会话固定原理与通信步骤说明_russ44的博客-CSDN博客_会话固定

通过以下某种方式,强制受害者使用预置的登录凭证。这也是主流的理解方式,有较多的文章解读,不做过多阐述。

  • 在url中携带,受害者访问后,服务器将该参数作为固定登录凭证,主要是前端禁用cookie时的一种机制
  • 在表单中隐藏元素携带,受害者请求后,服务器将该参数作为固定登录凭证
  • 反射型或者DOM型xss,受害者访问后,基于脚本或者meta标签设置固定登录凭证

2、窃取型

Session攻击(会话劫持+固定)与防御 - 那一叶随风 - 博客园 (cnblogs.com)

文章提到了窃取,以及基于xss获取方式。相关的文章较少。

本篇主要基于会话固定-窃取型,将退出登录时未销毁前端登录凭证cookie纳入逻辑漏洞的一环,着重分析和讨论了线下公共环境的情况,暂未发现这个角度的文章,认为属于新颖性的、原创性的漏洞技巧(如果有类似的,麻烦在评论区回复)。

在本篇以下篇幅中,为了方便,会话固定指代会话固定-窃取型。

逻辑漏洞-会话固定-窃取型 漏洞描述

退出登录时未销毁前端登录凭证cookie,再次登录时未更新登录凭证cookie,登录后核心业务仅需登录凭证cookie做身份验证,没有token机制。

这三个条件均满足时,导致前后两次登录的登录凭证相同,获取前一次登录的登录凭证,即可知道后一次的登录凭证。通过burp监听关键性请求,即可在后一次登录时替换登录凭证进行重放,实现对后一次登录用户的信息获取或者敏感操作。

该漏洞利用的难点在于获取登录凭证,具有一定的前置条件,增加了利用的难度,但是一旦利用成功,则存在对特定账号几乎完全权限操作(需要token以及手机验证码的不行)。尤其是特定场景下使用特定网站进行工作,利用漏洞的难度直线降低。(与xss发送cookie凭证和csrf有异曲同工之妙)

获取登录凭证

即攻击者如何知道前一次的登录凭证cookie。经过分析,可以分作线上和线下两种类型。

线上场景,会话固定漏洞作为其他漏洞的放大器。

线下场景,某种程度上来说是结合实际的社会工程学,攻击者直接诱导或者按照公共计算机使用规则,使得攻击者接触到受害者用户即将登录或者再次登录使用的计算机。

线上

即通过网络方式,结合其他漏洞获取,比如xss获取cookie、csrf借用cookie,明文传输中间人攻击、referer携带cookie等等。

这些漏洞结合会话固定漏洞,会使得攻击时间或者攻击范围扩大,比如前后两次是同一用户,登录凭证相同,扩展了漏洞利用存在的时间。而前后是不同用户,则扩大了攻击范围。

线下

1、公共环境

在现实中,广泛存在多人先后使用同一计算机登录同一网站的环境,这里称之为公共环境。比如实验室、图书馆、办公室、大厅、家庭、寝室等,以及熟人或者陌生人借用计算机的情况。

  • 实验室、监控室、网站后台监控办公室,业务办公室等,使用同一计算机同一浏览器登录办公网站服务器,不同人员各自登录自己的账号进行工作
  • 在图书馆计算机访问校园网站,登录校园账号。
  • 家庭环境中,各自使用账号登录常用网站,比如购物网站、视频网站、直播和小说等
  • 其他的,任意公共环境下,登录访问任意网站

2、安全意识与责任划分

虽然,强烈建议不要在公共场合登录账号,以及不要将计算机使用权借出或公用,毕竟这样的危害手段太多了,比如安装病毒、键盘窃听器,或者直接对已登录未退出账号进行操作,等等。

但是,这里的漏洞——会话固定,是网站能够简单解决的,漏洞产生的根本原因不符合计算机使用常识和开发常识,这是由服务端的逻辑不合理造成的。使得:

  • 点击退出后,由于服务器仅注销后端登录凭证,而未对前端登录凭证cookie进行注销导致的问题。在计算机使用常识里,退出登录账号,那么就应该彻底做彻底清除和关闭,点击退出已经是有意识的安全行为,而其余的应该是网站的责任和义务。
  • 即使是新手开发者,也知道退出功能是要将cookie注销的以及在登录时重写登录凭证。导致固定会话漏洞的常见场景反而是高级开发者,在开发多域名多子域名共用账号进行登录时,使用后端的数据库进行存储状态,退出时,只清除了后端登录状态,而遗忘了前端cookie的清除。同时登录未进行重写登录凭证cookie.
  • 导致在受害者登录账号之前,攻击者即可知道用户登录后的登录凭证

3、利用过程

  • 用户A测试到某站点存在会话固定漏洞,在本地计算机burp记录关键业务的请求,一般会删除干扰和不必要的cookie,仅保留登录凭证cookie。
  • 用户A在某公共环境使用某计算机某浏览器登录访问某站点(如果前面有人登录,退出后登录凭证未销毁,则直接浏览器工具查看,不用登录),记录登录凭证,退出。如果是会话型凭证则不能关闭浏览器,如果是时间型凭证,则可以关闭浏览器甚至关闭计算机。
  • 用户B在该公共环境使用该计算机该浏览器登录访问该站点,用户A此时可以在其本地计算机上的burp进行重放,编辑登录凭证cookie为窃取的凭证,实现获取信息或者敏感操作等。

4、公共场景示例

(1)用户A借用B的个人或者专用办公电脑、正在使用的公共电脑,查看某站点的登录凭证,即使用户B出借前出于安全意识进行了账号登出,用户A仍然可以获取B的登录凭证。在之后用户B在该计算机该浏览器再次登录使用时 ,用户A即可发起攻击

(2)用户A预先占用某公共电脑,或者对自己的个人或者专用办公电脑登录某站点,查看某站点的登录凭证。A结束使用退出后,用户B在其电脑上使用该浏览器进行登录时,用户A即可发起攻击。

登录凭证

会话型和时间型

如果登录凭证cookie是会话型,意味着在该计算机该浏览器未关闭时,即使关闭站点相关页面,也不会销毁cookie

如果登录凭证cookie是时间型,意味着即使关闭相关页面、关闭该浏览器、该计算机也不会销毁cookie

时间型登录凭证在会话固定漏洞中危害更严重。

寻找登录凭证

  • 登录后,burp监听,对关键业务请求,进行重放。
  • 如果不能重放则证明存在一次性token机制。
  • 重放过程逐渐删除cookie,分析响应是否变化以及变化情况,删除登录凭证cookie会导致直接获取信息或者操作失败。
  • 登录凭证大多数都只有一个,但是某些网站中,存在多个。将其视作一个整体,缺一不可,其他方面并不影响固定会话漏洞的存在和利用。
  • 在请求中,除了不可改变值的登录凭证,还可能存在可以改变值的登录凭证、url携带参数、请求体部携带参数,如果这些值是公开可获取或者设置的,比如业务模块id,搜索参数等,还好。但是如果是比较私密的信息,比如用户的注册id、手机号等,那么事实上成为了一种token,除非从其他渠道了解到该信息。

漏洞挖掘

1、注册账号,登录

2、浏览敏感信息页面或者发起账号操作,burp监听,根据请求和响应筛选出关键请求

3、对关键请求进行重放,排除携带一次性token的请求,以及分析排除会话型token

4、对关键请求,逐一删除cookie进行重放,在不影响操作或获取信息的基础上,仅保留登录凭证cookie

5、退出,查看登录凭证cookie是否变化,即进行了前端cookie销毁,如果变化则不存在漏洞

6、重新登录,查看登录凭证cookie与前一次登录是否相同,验证登录是否重定义登录凭证cookie,如果相同则证明存在会话固定漏洞

漏洞防护

退出时,不仅后端销毁登录凭证,还要注销前端登录凭证cookie

登录时,重新赋值登录凭证cookie

登录后的业务,使用token机制

结语

初次在freebuf发布原创文章,有所不足,欢迎批评指点。也欢迎留言讨论文章中出现的问题,共同进步

# 渗透测试 # web安全 # 漏洞分析 # 逻辑漏洞 # 会话固定
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录