Web安全之攻击会话管理机制

HTTP协议本身是“无状态”,“无连接”的,也就是说HTTP协议本身并不会记住客户端访问的上下文,也无法保存客户端的各种状态,这其中就包括登录状态。如果HTTP不能保存用户的登录状态那就意味着用户在每次访问需要身份验证的网站时都必须填写用户名及密码,这里的“每次访问”是指每个单次的HTTP请求包括刷新一次页面。为了解决上述的问题Web应用程序就需要使用会话这个概念,即用户登录成功后为其建立一个会话,通过会话记录用户的各种状态,通常使用Cookie及Session实现会话机制。

会话管理

确定会话令牌

  • 多个数据共同表示一个会话令牌,包括Cookie,URL参数以及隐藏的表单参数
  • 标准的会话Cookie可能存在但是Web应用程序未对其进行使用
  • 观察用户登录前后客户端保存数据的变化,这些变化中包含了建立新会话的令牌
  • 通过删除客户端向服务器端发送的参数来进行判断,比如在删除了某个参数后无法正常访问用户的个人资料,那么这个参数应该与会话令牌有关

会话代替方案

  • HTTP认证:HTTP原生认证机制是通过HTTP头部参数来维持认证状态的,在用户认证成功后的每次请求中,HTTP均会携带用于认证的头部参数。
  • 无会话状态机制:一些应用程序不会发布会话令牌来管理用户与应用程序的交互状态,而是在每次请求中传输所有必要的数据(一般保存在Cookie或者隐藏表单字段中),由客户端管理状态,这种机制类似于 ASP.NET ViewState方式。

令牌使用情景

  • 发送到用户注册邮箱的密码恢复令牌
  • 防止CSRF的会话令牌
  • 用于一次性访问受保护资源的令牌
  • 未使用验证的购物应用程序的消费者用于检索现有订单状态的令牌

会话令牌生成过程中的缺陷

令牌有一定意义

结构化组成成分

  1. 账户用户名
  2. 账户数字标识
  3. 用户姓/名
  4. 电子邮箱
  5. 分组或角色
  6. 日期/时间戳
  7. 可预测数字
  8. 客户端IP

攻击思路:

  • 会话令牌可能由多个字段组成,不同字段之间使用特定字符进行分割,然而Web应用程序并不一定关注令牌中的每一个字段,我们可以使用Burpsuite中Intruder模块的Chara
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值