针对会话机制的攻击与防御

  • A+
所属分类:安全文章

学习打卡计划是信安之路知识星球开启的 “每天读书一小时,挑战打卡一百天” 主题活动,能够坚持学习打卡 100 天的同学可以获得信安之路提供的百分成就徽章和证书,学习书籍可以自选,主要目的是养成每日读书学习的好习惯,并将自己的学习心得分享出来供大家学习。

信安之路今天起正式免费开放交流群,后台回复关键词 可以获得加群口令,欢迎大家前来交流,以下为本周打卡情况。

针对会话机制的攻击与防御

打卡一:web 实战 P273-279

这部分内容的重点是 session 和 cookie,用户在使用应用系统时,如何根据用户的不同的身份提供不同的功能和相关数据,这种体验每个人都有,比如逛淘宝,不会将自己喜欢的商品加到别人的购物车,那么如何区分不同的用户?

打开任意网站,抓包看一下,都会存在 cookie 的字段,cookie 是随着用户的操作自动提交到服务器端,我们想要区分认证前和认证后到用户,可以在用户认证成功之后向 cookie 中写入一个标志,然后服务器在处理请求时判断该标志即可。

对于标志的设置,如果直接将用户的名称以明文或者加密的方式放在 cookie 中,如果加密方式被破解,那么就会存在用户身份被伪造的可能,所以直接在 cookie 中插入用户身份信息是不可取的。

对于用户身份的设置,还有 session 机制,在用户认证成功之后,将用户的个人信息和身份信息写入 session 中,在 cookie 中的表现仅仅是出现一个 session ID,服务器端通过这个 session ID 去服务器上查找指定的数据,敏感数据均存于服务器端,而 session ID 的值是随机字符串,攻击者很难猜测其他用户的 session ID,从而伪造用户身份。

我们在利用 xss 漏洞时,都喜欢获取用户的 cookie,拿到 cookie 之后,其中最重要的字段就是 session ID,有了他就可以伪造他人的身份,获取他人的数据。

基于会话相关内容,可以完成以下作业:

作业一:通过搜索引擎,找几个可以注册登录的网址,通过 burp 抓包分析其登录之后的会话保持是如何实现的,是不是都是用 session 保存用户信息,token 是否可以伪造,有没有在 cookie 中保留用户信息的情况等。

作业二:基于前面作业,开发的登录认证页面,在认证成功之后,对不同的账号设置不同的权限,分别用 cookie 和 session 来标识用户身份,测试不同的标识方式可能存在的安全风险。

将测试过程和结果,相关代码和设计思路都可以记录下来形成报告,分享出来,一起探讨。

打卡二:web 实战 280-307

这部分内容主要讲令牌生产过程中可能存在的问题,早期的令牌生成算法可能有自己编写,由于技术水平的问题,令牌生成算法存在一些弱点,比如自定义加解密算法、令牌生成存在规律、有漏洞的加密算法。

关于自定义加解密算法,比如用 hex 编码用户身份信息,并将 hex 之后的字符串放入 cookie 中,每次请求均获取 cookie 中的加密串进行解密后判断用户身份,这种方式,如果我们知道他的加密方式仅仅是 hex 之后的字符串,那么我们就可以将我们需要伪造的身份填入并进行 hex 之后替换,然后去请求网站,那么我们就可以切换至伪造的身份之下,获取该用户的敏感数据。这只是举个例子,还有其他的加解密算法,也是同样的道理。

对于令牌生成存在规律的,我们可以通过暴力枚举的方式,来确定哪个令牌是有效的,从而通过碰撞的手段来伪造用户身份,这种方式无法像第一种那样任意伪造,通过碰撞伪造的身份更具有随机性,如果遇到通过规律可以预测身份的,那就另当别论了。这种令牌也就是之前所说的 session id,相关数据在服务器端存储,需要通过令牌来从服务器端获取相应数据。

有漏洞的加密算法,这里主要介绍了两种 ECB、CBC,这种加密算法是分组加密,一旦存在分组,分组的大小比较小的情况,那么就存在被暴力枚举的可能,就像密码设置八位一下,容易被爆破是一个道理,详细情况,大家看书吧。

打卡三:web 实战 308-335

对于一个无法预测的 session token,我们有哪些办法可以获得其他用户的会话,从而伪造用户,获取其敏感信息?

1、最常见的就是通过 xss 漏洞,获取用户的 cookie,这个大家都是知道,关于 xss 的原理,在后面的章节中会细讲,而如何防御 cookie 被盗?可以在 cookie 中加一个字段 HttpOnly。

2、由于代码问题,用户的 session ID 会随着 url 传输,从而导致泄漏,泄漏方式包括:referer、日志、网络嗅探等,网络嗅探通常可以获取 http 协议的数据,如果是全网 https 就难以通过嗅探的方式获取 cookie,但是往往很多网站并没有做到全网 https,或者部分网页使用 http,那么就可能存在泄漏的风险。

3、cookie 的作用范围宽泛,设置 cookie 时可以指定 domain 和 path,就是在那个域下有效,作用在那个路径下,如果设置的作用范围宽泛的话,可能存在对第三方泄漏 cookie 的可能性,因为设置的作用范围,在访问该域名和路径时会携带 cookie 进行请求,从而被获取 cookie。

除了泄漏,会话还有一些弱点,比如:一个用户可能存在多个会话,大家都听说过单一登录,就是同时一个用户只能有一个浏览器在线,切换浏览器之后登录,前一个会话就失效,从而提升用户的安全性,也能及时发现自己账户是否被冒用。

总结

会话的内容就到此结束了,登录和会话保持是网站的核心安全组件,也是出现安全问题最多的地方,希望大家可以认真学习和实践,根据相关内容,多去看看已经发布的各种网站的登录口和会话保持是如何做的,是否存在安全风险,然后通过自己编程的方式,实现登录认证的页面,以及根据不同用户设置不同的功能,了解会话保持的原理,用不同的方式实现会话保持,分析其安全性。看的快、看得多不是目的,吸收成为自己的知识体系和实践经验才是目的,一起加油吧。

针对会话机制的攻击与防御

本文始发于微信公众号(信安之路):针对会话机制的攻击与防御

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: