freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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

FreeBuf+小程序

FreeBuf+小程序

应用安全:会话防劫持
2020-08-11 16:51:54

1. 背景

失效的身份认证在OWASP TOP 10 2017版中排名第二,它包括错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其他开发缺陷来暂时或永久性冒充其他用户的身份。而会话令牌劫持是失效身份认证的关键因素。

2. 名词解释

Session-会话,维护用户状态。会话中关联了用户信息。

Token-令牌,是用户身份的验证方式,一般由uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)组成。

3. 会话&令牌介绍

  • Session

session顾名思义就是会话,维护了用户的状态就是会话,这是为了解决HTTP无状态协议问题发明的东东。

session通常的用法是:

  • 用户使用账号+密码/手机号+验证码登录
  • 后台验证通过后会在Redis会话表里产生一条记录,这条记录就可以称为会话。记录里面有一个随机的唯一值和用户的信息,这个随机的唯一值会返回给客户端保存,以后的接口通过这个唯一值进行鉴权,这个唯一值可以称为sessionId。
  • 后台接口带上sessionId,服务器拿到后去表里校验是否存在且有效,有效则鉴权通过,无效则报错
  • token

token的状态是保存在客户端的,session是服务端在管理状态。session管理需要在后台存表,管理这个状态,而token后台不需要保存,因为token里自带了信息,比如用户基本信息、过期时间等,后台每次收到直接解密校验即可。

4. 会话令牌劫持

攻击者获取SessionID的方式有多种:

1、 暴力破解:尝试各种Session ID,直到破解为止。

2、 预测:如果SessionID使用非随机的方式产生,则可以通过分析SessionID的强度(长度、字符集以及平均信息量),将其计算出来,例如可以使用Burp Suite中的Sequencer模块对会话进行分析。

  • 捕获(劫持):使用网络嗅探,XSS攻击等方法获得。
  • 会话固定攻击:Session Fixation是攻击者预先计算一个SessionID,诱使用户使用此SessionID登陆,并使之合法。

会话令牌劫持攻击示意图:

5. 防劫持方案

  • 会话令牌生成
  1. 使用安全的随机函数(如/dev/urandom、security.SecureRandom、CryptGenRandom)生成会话标识。
  2. 会话标识包括字母、数字,长度不少于32个字符。
  • 会话令牌有效期
  1. 会话令牌有有效期控制,WEB服务有效期不超过4小时,手机/PC客户端有效期不超过7天。
  • 会话令牌传输
  1. 使用HTTPS信道加密传输会话令牌。
  2. 设置HttpOnly、Secure。通过设置Cookie的HttpOnly属性,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。通过设置Cookie的Secure属性,可以防止会话令牌通过HTTP传输。

          html 代码示例:

Set-Cookie: foo=bar; Path=/; Secure;HttpOnly
  • 会话令牌使用
  1. 会话令牌不通过URL传输。
  2. 关闭dump request信息的页面,如phpinfo页面,Spring Boot Actuator的trace endpoint。
  3. 使用User-Agent检测请求的一致性。当User-Agent和客户端IP同时变化时,则使会话令牌失效,需重新登录。
  4. 使用MAC检测请求的一致性。当客户端MAC地址变化时,则使会话令牌失效,需重新登录。
  5. 登录前登录后使用不一样的会话令牌。

6. 参考链接

https://blog.csdn.net/Doraemon_wu/article/details/52448766?utm_source=blogxgwz7

https://www.jianshu.com/p/cd1b0a98d5a0

https://www.html.cn/archives/5010

https://cloud.tencent.com/developer/article/1043362

# token # 会话劫持 # Session # 会话机制 # 令牌
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录