(本文章仅支持本人学习使用,若造成不良影响,与本人无关!)
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 种值:
-
None 不做限制,任何场景下都会发送 Cookie。
-
LAX 在普通的跨站请求中都不发送 Cookie,但是导航到其他网站时(如点击链接)会发送 Cookie另外,在跨站点提交表单的场景中,只有 GET 方法提交的表单会带 Cookie,使用 POST 提交表单时不会带 Cookie。当 Cookie 没有指定 SameSite 属性时,现代浏览器的表现与 SameSite=Lax时一致。
-
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(域哈希)。
相似加密类型
# | 算法 | 长度 |
---|---|---|
1 | md5 | 32/16 |
2 | sha1 | 40 |
3 | sha256 | 64 |
4 | sha512 | 128 |
5 | adler32 | 8 |
6 | crc32 | 8 |
7 | crc32b | 8 |
8 | fnv132 | 8 |
9 | fnv164 | 16 |
10 | fnv1a32 | 8 |
11 | fnv1a64 | 16 |
12 | gost | 64 |
13 | gost-crypto | 64 |
14 | haval128,3 | 32 |
15 | haval128,4 | 32 |
16 | haval128,5 | 32 |
17 | haval160,3 | 40 |
18 | haval160,4 | 40 |
19 | haval160,5 | 40 |
20 | haval192,3 | 48 |
21 | haval192,4 | 48 |
22 | haval192,5 | 48 |
23 | haval224,3 | 56 |
24 | haval224,4 | 56 |
25 | haval224,5 | 56 |
26 | haval256,3 | 64 |
27 | haval256,4 | 64 |
28 | haval256,5 | 64 |
29 | joaat | 8 |
30 | md2 | 32 |
31 | md4 | 32 |
32 | ripemd128 | 32 |
33 | ripemd160 | 40 |
34 | ripemd256 | 64 |
35 | ripemd320 | 80 |
36 | sha224 | 56 |
37 | sha3-224 | 56 |
38 | sha3-256 | 64 |
39 | sha3-384 | 96 |
40 | sha3-512 | 128 |
41 | sha384 | 96 |
42 | sha512/224 | 56 |
43 | sha512/256 | 64 |
44 | snefru | 64 |
45 | snefru256 | 64 |
46 | tiger128,3 | 32 |
47 | tiger128,4 | 32 |
48 | tiger160,3 | 40 |
49 | tiger160,4 | 40 |
50 | tiger192,3 | 48 |
51 | tiger192,4 | 48 |
52 | whirlpool | 128 |
53 | mysql | 老MYSQL数据库用的,16位,且第1位和第7位必须为0-8 |
54 | mysql5 | 40 |
55 | NTLM | 32 |
56 | Domain Cached Credentials | 32 |
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】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。
![](https://i-blog.csdnimg.cn/blog_migrate/238b616a52463e2788da968b582e8e39.jpeg)