关于cookie的一些学习笔记

0x00

发现自己对一些原理性的东西实在是太不了解

最近看了《cookie之困》记一下笔记

 

0x01

因为http是无状态的

所以需要cookie和session来保持http的会话状态和缓存信息

设置cookie

服务器写入

  Set-Cookie:user=1; domain=.xxx.com ; path=/

脚本写入

  document.cookie="user=1; domain=.xxx.com ; path=/ "

存储于浏览器  传输于http头部

name,domain,path 三者确定cookie  三者任一不同cookie都不同

 

0x02

web的同源策略是要求域名 端口 协议都相同

cookie的同源策略仅是domain和path  不区分端口和http/https

  cookie在域下是向上通配的

  www.xxx.com 下可看到所有cookie

  test.xxx.com下 只能获取在这个二级域名下的cookie或者更低域名下的cookie

  

  在路径上是向下通配的

  路径浅的无法获取路径深页面的cookie

  

  

0x03

关于cookie注入

  服务器端将cookie拼接到html页面

  js将cookie渲染到com参与运算

 

0x04

cookie的替换

  cookie是允许重名的

  cookie由name domain path三者确定

  读取或者发送的时候 js和service只能看到name

  domain和path由浏览器决定

  当服务器接收到重名的cookie时

  拥有相同name的cookie除了先后顺序没有其他区别

  因语言框架等不同 而取值优先级不同

  

  可见先后顺序能决定cookie的替换

  而浏览器对cookie的排序规则是

  path更长的cookie更靠前

  path相等是 更早创建的cookie更靠前

  

   

  由于以上这些条件

  可以对cookie进行构造 利用自己制造的cookie优先级更先替换原有的cookie

 

0x05

在一个打开的https页面下

  可能是由多个https子页面以及多个Ajax拼接而成

  可以利用cookie替换进行篡改

同样一次操作也可能是多次https操作

  往往由多个Ajax以及多次跳转请求组成

  cookie可对中间请求进行身份篡改

 

文档链接

 https://github.com/knownsec/KCon/blob/master/2015/Cookie%20%E4%B9%8B%E5%9B%B0.pdf

posted @ 2018-03-29 17:25  slpawn  阅读(449)  评论(0编辑  收藏  举报