Cookie和会话安全,编码方式及其密文特征

(本文章仅支持本人学习使用,若造成不良影响,与本人无关!)

Cookie

Cookie 是 Web 服务端发送给用户浏览器的一小段数据, 浏览器会存储这些数据 ,并在后续发往服务器的请求中带上它们。

Cookie 是一种将数据存储在客户端的方式,我们可以通过 Cookie 将用户标识存储在客户端,也有一些很老的 Web 应用是使用 URL
参数来存储这个标识的。但是将用户标识存放在 Cookie 或 URL 参数中都有个问题:在浏览器端,用户可以查看和篡改这些数据。

如果 Web 应用希望存储一些敏感数据或不希望被用户篡改的数据,最好的办法是将数据存储在服务端,并且为该用户的数据分配一个随机的 ID,在客户端仅存储这个
ID,然后用户每次访问服务器都要带上这个 ID,服务端用这个 ID 去查已存储的数据就知道当前的访问者是谁。

![image-20240115000742503](https://img-
blog.csdnimg.cn/img_convert/a654ef2d42d1ca1374416ca3509e030f.png)

在这个过程中, 服务端存储的这份数据称为 Session ,分配给客户端的这个随机 ID 称为SessionID。在大多数场景中,SessionID
都是通过 Cookie 分发给客户端的,然后客户端每次访问服务器都会带上这个 Cookie。在一些很老的手机 WAP 应用中,考虑到有些功能机的浏览器不支持
Cookie,也有通过 URL 参数传输 SessionID 的,但现在已经非常少见了。

第一方 Cookie 和第三方 Cookie

![image-20240115001427573](https://img-
blog.csdnimg.cn/img_convert/b50c5dbb5c8b5696d6d27ecb5f329a9c.png)

所有浏览器都会接受第一方 Cookie,但是浏览器的隐私策略可能会阻止部分第三方 Cookie。

cookie属性

Domain 属性用于指定 Cookie 在哪些域名中生效,即访问哪些域名时浏览器会发送这个Cookie,该属性也决定了哪些域名的网页可以通过
JavaScript 访问这个 Cookie。如果域名前面带一个点号“.”表示该 Cookie
对当前域名及其子域名都有效,浏览器访问这些子域名时都会带上这个 Cookie; 如果域名前不带点号,表示 Cookie 仅对当前域名有效。

Path 属性用于指定 Cookie 的生效路径,只有访问这个路径或其子路径时,浏览器才会发送这个 Cookie。如不设置,Path
属性的默认值就是当前页面所在的路径。如果一个域名中不同路径有很多不同的应用,同名的 Cookie 会造成干扰,这时可以设置 Cookie 的 Path
属性将它们区分开来。

Expires 属性来设置 Cookie 的有效期,浏览器会在这个 Cookie 到期后自动将其删除。没有指定 Expires 属性的 Cookie
叫“临时 Cookie”,关掉浏览器后将自动删除。有些地方也将临时 Cookie 称为“会话
Cokie”,即仅在当前会话中有效,可以实现关掉浏览器就自动结束会话,下次再打开网站则需要重新登录。

HttpOnly 属性的作用是让 Cookie 只能用于HTTP/HTTPS 传输,客户端JavaScript 无法读取它,从而在一定程度上减少了 XSS
漏洞带来的危害。

Secure 属性:给 Cookie 设置 Secure 属性后,该 Cookie 只会在 HTTPS 请求中被发送给服务器,非加密的HTTP
请求是不会发送该 Cookie 的,确保了它不会在网络中以明文传输。同时,在客户端通过 JavaScript 设置 Cookie,或者在服务端通过 Set-
Cookie 头来设置 Cookie时,如果当前网站用的是 HTTP 协议,写入带 Secure 属性的 Cookie 会失败。

SameSite 是一个新的安全属性,服务端在 Set-Cookie 响应头中通过 SameSite 属性指示是否可以在跨站请求中发送该
Cookie,即它能不能作为第三方 Cookie。

这个属性有 3 种值:

  1. None 不做限制,任何场景下都会发送 Cookie。

  2. LAX 在普通的跨站请求中都不发送 Cookie,但是导航到其他网站时(如点击链接)会发送 Cookie另外,在跨站点提交表单的场景中,只有 GET 方法提交的表单会带 Cookie,使用 POST 提交表单时不会带 Cookie。当 Cookie 没有指定 SameSite 属性时,现代浏览器的表现与 SameSite=Lax时一致。

  3. Strict SameSite 属性为 Strict 表示严格模式,即完全禁止在跨站请求中发送 Cookie,即使点击站外链接也不会发送 Cookie,只有当请求的站点与浏览器地址栏 URL 中的域名属于同一个站点(即“第一方”站点) 时,才会发送 Cookie。这是非常严格的跨站点策略,假如用户已经登录 A网站,他在 B 网站点击链接跳转到 A 网站时,也不会带上 A 网站的 Cokie,此时 A 网站还是给用户展示未登录页面

会话管理

会话ID的随机性 :会话ID(SessionID)最基本的要求是随机性,让攻击者无法猜测出来。所以,不能简单地使用用户的ID、时间戳等数据作为
SessionID,也不能基于用户的公开信息简单计算出一个值。同时,SessionID 也要足够长,以防止攻击者通过遍历穷举的方法获取 SessionID。

过期和失效 :很多比较敏感的应用都有超时自动退出账号的机制,大多数有“记住登录状态”功能的应用也会有超时机制,只是这个超时时间设置得比较长。

绑定客户端 :在应用中、如果将会话与客户端绑定会更安全,因为即使攻击者窃取了 SessionID,也无法在新的设备中登录目标网站。

安全传输 :现代Web 应用基本上都是将 SessionID 写入 Cookie 中,所以设置相应 Cookie
的安全属性非常重要,大多数情况下建议开启 HttpOnly和Secure 属性。

客户端存储会话 :前面讲的会话案例全部是会话存储在服务端的场录,客户端只保存一个很短的
SessionID,也有一些应用将会话存储在客户端,最典型的就是将JWT(JSON Web Token) 用下会话管理。

利用HackBar使用其他浏览器Cookies登录

1.虚拟机打开靶场,查看IP,打开DVWA。

2.进入DVWA“fn+F12",查cookier信息。

3.打开另一个浏览器,打开dvwa不登陆,“fn+F12"打开hackbar.

4.“load url"输入cookie:name=value,修改为“index”,“execute”

5.不输入用户名 密码便可登录成功。

MD5、sha1、HMAC算法、NTLM等相似加密类型

1.MD5

一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串

2.sha1

这种加密的密文特征与MD5相似,只不过位数是40

3.HMAC算法

HMAC (Hash-based Message Authentication Code)
常用于接口签名验证,这种算法就是在前两种加密的基础上引入了秘钥,而秘钥又只有传输双方才知道,所以基本上是破解不了的

4.NTLM

这种加密是Windows的哈希密码,是 Windows NT 早期版本的标准安全协议。与它相同的还有Domain Cached
Credentials(域哈希)。

相似加密类型
#算法长度
1md532/16
2sha140
3sha25664
4sha512128
5adler328
6crc328
7crc32b8
8fnv1328
9fnv16416
10fnv1a328
11fnv1a6416
12gost64
13gost-crypto64
14haval128,332
15haval128,432
16haval128,532
17haval160,340
18haval160,440
19haval160,540
20haval192,348
21haval192,448
22haval192,548
23haval224,356
24haval224,456
25haval224,556
26haval256,364
27haval256,464
28haval256,564
29joaat8
30md232
31md432
32ripemd12832
33ripemd16040
34ripemd25664
35ripemd32080
36sha22456
37sha3-22456
38sha3-25664
39sha3-38496
40sha3-512128
41sha38496
42sha512/22456
43sha512/25664
44snefru64
45snefru25664
46tiger128,332
47tiger128,432
48tiger160,340
49tiger160,440
50tiger192,348
51tiger192,448
52whirlpool128
53mysql老MYSQL数据库用的,16位,且第1位和第7位必须为0-8
54mysql540
55NTLM32
56Domain Cached Credentials32

Base64、Base58、Base32、Base16、Base85、Base100等相似加密类型

1.Base64

一般情况下密文尾部都会有两个等号,明文很少的时候则没有

2、Base58

示例6tmHCZvhgfNjQu

它最大的特点是没有等号,
相比Base64,Base58不使用数字"0",字母大写"O",字母大写"I",和字母小写"l",以及"+“和”/"符号。0(数字0)、O(o的大写字母)、l(
L的小写字母)、I(i的大写字母)

3、Base32

示例GEZDGNBVGY3TQOJQGE======

他的特点是明文超过十个后面就会有很多等号

4、Base16

示例61646D696E

它的特点是没有等号并且数字要多于字母

5、Base85

示例@:X4hDWe0rkE(G[OdP4CT]N#

特点是奇怪的字符比较多,但是很难出现等号

6、Base100

示例👘👛👤👠👥

特点就是一堆Emoji表情

AES、DES、RC4、Rabbit、Triple DES(3DES)

这些都是非对称性加密算法,就是引入了密钥,密文特征与Base64类似,放个图,就不多说了

![img](https://img-
blog.csdnimg.cn/img_convert/9dc59ae7f41abe7439cbbbc3f8441238.png)

Unicode、HTML实体编码、16进制Unicode

可以说Unicode与HTML实体编码是一个东西

Unicode与HTML实体编码、 16进制Unicode

示例\u8fd9\u662f\u4e00

![img](https://img-
blog.csdnimg.cn/img_convert/ad860ce82db1d90b730a6fdf3536d2a6.png)

​​​

Escape编码/加密、Unescape解码/解密、%u编码、%u解码

特征:以%u开头

Escape/Unescape加密解码/编码解码 ,又叫%u编码。 Escape编码/加密 ,就是字符对应UTF-16
16进制表示方式前面加%u。 Unescape解码/解密 ,就是去掉"%u"后,将16进制字符还原后,由utf-16转码到自己目标字符。

接下来我将给各位同学划分一张学习计划表!

学习计划

那么问题又来了,作为萌新小白,我应该先学什么,再学什么?
既然你都问的这么直白了,我就告诉你,零基础应该从什么开始学起:

阶段一:初级网络安全工程师

接下来我将给大家安排一个为期1个月的网络安全初级计划,当你学完后,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web渗透、安全服务、安全分析等岗位;其中,如果你等保模块学的好,还可以从事等保工程师。

综合薪资区间6k~15k

1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(1周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(1周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(1周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

那么,到此为止,已经耗时1个月左右。你已经成功成为了一名“脚本小子”。那么你还想接着往下探索吗?

阶段二:中级or高级网络安全工程师(看自己能力)

综合薪资区间15k~30k

7、脚本编程学习(4周)
在网络安全领域。是否具备编程能力是“脚本小子”和真正网络安全工程师的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力。

零基础入门的同学,我建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习
搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime;

Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,没必要看完

用Python编写漏洞的exp,然后写一个简单的网络爬虫

PHP基本语法学习并书写一个简单的博客系统

熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选)

了解Bootstrap的布局或者CSS。

阶段三:顶级网络安全工程师

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资料分享

当然,只给予计划不给予学习资料的行为无异于耍流氓,这里给大家整理了一份【282G】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值