黑客攻防技术宝典(七)

会话管理机制是一个基本的安全组件,它帮助应用程序从大量不通的请求中确认特定的用户,并处理它收集的关于用户与应用程序交互状态的数据。它可在用户通过请求提交他们的证书后,持续向应用程序保证特定用户身份的真实性

7.1 状态要求

一旦用户通过验证,应用程序就会为他建立一个会话,把所有属于这个会话的请求当做该用户提出的请求处理。
执行会话最简单,最常见的方法就是向每一名用户发布一个唯一的会话令牌或标识符。用户在随后向应用程序提出的每一个请求中提交这个令牌,帮助应用程序在当前请求与前面提出的请求之间建立关联。
大多数情况下,应用程序使用HTTP cookie作为在服务器与客户端间传送这些会话令牌的传输机制。

攻击会话机制的主要目标是以某种方式劫持一名合法用户的会话,由此伪装成这名用户。会话管理机制中存在的漏洞主要分为两类:
1.会话令牌生成过程中的薄弱环节
2.在整个生命周期过程中处理会话令牌的薄弱环节

会话替代方案

  • HTTP验证
  • 无会话状态机制

7.2 会话令牌生成过程中的薄弱环节

7.2.1 令牌有一定含义

包含有含义数据的令牌通常表现出某种结构,也就是说,他们由几种成分组成,通常以分隔符隔开,攻击者可分别提取并分析这些成分,以了解它们的功能和生成方法。

7.2.2 令牌可预测

一些会话令牌并不包含与某个特定用户有关的任何有意义的数据,但由于它们包含某种顺序或模式,允许攻击者通过几个令牌样本即可推断出应用程序最近发布的其他有效令牌,因此具有可预测性。

  1. 隐含序列
  2. 时间依赖
  3. 生成的数字随机性不强

7.2.3 加密令牌

  1. ECB加密
  2. CBC加密

7.3 会话令牌处理过程中的薄弱环节

7.3.1 在网络上泄露令牌

如果网络以非加密方式传送会话令牌,攻击者可以在网络的适当伪装窃取令牌并伪装成合法用户。

7.3.2 在日志中泄露令牌

当应用程序使用URL查询字符串传输令牌时,会将令牌暴露在各种网络日志中,易被攻击者窃取。

7.3.3 令牌-会话映射易受攻击

  • 应用程序允许并行会话
  • 用户每次登录,都收到相同的令牌

7.3.4 会话终止易受攻击

尽可能缩短一个会话的寿命可降低攻击者截获,猜测或滥用有效会话令牌的可能性。
一些应用程序并不实施有效的会话终止功能,会话一旦建立,它在收到最后请求后 的许多天内任然有效,直至服务器最终将其清除。

  • 应用程序不执行退出功能
  • 退出功能不能帮助服务器终止会话
  • “退出”功能由客户端脚本完成

7.3.5 客户端暴露在令牌劫持风险之中

  • XSS
  • CSRF

7.3.6 宽泛的cookie范围

  • cookie域限制
  • cookie路径限制

7.4 保障会话管理的安全

7.4.1 生成强大令牌

服务器用来定位处理用户请求的相关会话对象的标识符外,令牌中不应包含其他任何内容,不应含有意义或采用结构。所有有关于会话所有者与状态的数据都应保存在与会话令牌对应的服务器会话对象中。

生成可靠令牌的几种思路:

  • 选择稳定可靠的随机源
  • 以生成令牌请求的一些信息作为熵源
  • 使用是的的散列算法进行处理(如SHA-256)

7.4.2 在整个生命周期中保障令牌的完全

  • 令牌只能通过HTTPS传输
  • 绝不能在URL中传送会话令牌
  • 总是执行退出功能
  • 会话处于非活动状态一段时间后,应执行会话终止
  • 防止并行登录
  • 严格保护应用程序中任何可以查看会话令牌的管理或诊断功能
  • 尽可能的限定程序会话cookie的域和路径范围
  • 严格审查程序代码库,防止XSS
  • 不应接受用户提交,但服务器并不认可的任意令牌
  • 在执行转账之类的重要操作之前,要进行两步确认或重新验证
  • 不完全依赖HTTP cookie传输会话令牌
  • 成功验证后应总是建立一个新的会话,以避免会话固定攻击的影响
  • 每页面令牌

7.4.3 日志、监控与警报

  • 应用程序应监控包含无效令牌的请求
  • 收到大量包含无效令牌的请求时将其来源IP屏蔽一段时间
  • 保留详细的日志,并向管理员发出警报
  • 向用户警告与会话有关的反常事件
  • 反应性会话终止

7.5 小结

对于攻击者而言,进入其他用户的会话当然不错,但劫持管理员的会话会更好,因为这样往往能够攻破整个应用程序。

7.6 问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值