JWT 安全 JWT-WebGoat靶场

cookie(放在浏览器)

cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。

cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的

session(放在服务器)

session 从字面上讲,就是会话。这个就类似于你和一个人交谈,你怎么知道当前和你交谈的是张三而不是李四呢?对方肯定有某种特征(长相等)表明他就是张三。

session
也是类似的道理,服务器要知道当前发请求给自己的是谁。为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,可以有很多种方式,对于浏览器客户端,大家都默认采用
cookie 的方式。

服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。

token

在Web领域基于Token的身份验证随处可见。在大多数使用Web API的互联网公司中,tokens 是多用户下处理认证的最佳方式。

以下几点特性会让你在程序中使用基于Token的身份验证

  1. 无状态、可扩展
  2. 支持移动设备
  3. 跨程序调用
  4. 安全

jwt(json web token)

jwt用来验证客户端身份,

json是一种数据格式,json用来处理不同数据之间的转换,一种中间的语言格式

jwt就是使用json格式的token,优点一目了然jwt存在相当于cookie的字段![](https://img-
blog.csdnimg.cn/direct/9e55a42ce2854f2d96a8a707f1ada474.png)

JWT构成

JWT(JSON Web Token)由三部分组成:头部(Header)、载荷(Payload)、签名(Signature)。

头部(Header):

头部通常由两部分组成,算法类型和令牌类型。
算法类型:指定用于生成签名的算法,例如 HMAC、RSA 或者 ECDSA。
令牌类型:指定令牌的类型,常见的是 JWT。

头部使用 Base64Url 编码表示,并作为整个 JWT 的第一部分。头部的一个示例(json格式):

{
  "alg": "HS256",none    //alg中的HS256为加密算法类型
  "typ": "JWT"
}
载荷(Payload):

载荷存储了有关用户或实体的声明和其他有关信息。
声明:如用户 ID、角色、权限等信息。
注册声明:包含一些标准的声明(比如发行人、过期时间等)和一些自定义的声明。

载荷也使用 Base64Url 编码表示,并作为整个 JWT 的第二部分。载荷的一个示例:

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
签名(Signature):

用于验证JWT是否完整,真实有效,只有第一段第二段有效。
签名生成方式:将头部和载荷进行 Base64Url 编码后拼接在一起,然后使用指定的加密算法(如 HMAC、RSA)进行签名,将生成的签名添加到 JWT
中。

JWT渗透思路

1. 将头部中的HS256替换为none时,不校验签名,没有算法,签名没有意义,服务器不看签名,WebGoat第四关

{
  "alg": "none",none    //alg中的HS256为加密算法类型
  "typ": "JWT"
}

2.修改算法为none,exp时间为有效时间,第七关

jwt payload的常用字段![](https://img-
blog.csdnimg.cn/direct/85880bcd047b4a838414ed5937e2ea0f.png)

3.修改exp有效时间和爆破密钥 ,第五关

WebGoat靶场

kali使用jar包文件![](https://img-
blog.csdnimg.cn/direct/7e7a21105ac04542a49f27d042c66364.png)

启动靶场

sudo java -jar jar包的名字 --server.port=8888 --server.address=kali ip

访问页面

ip:port/WebGoat

注册用户

靶场位置![](https://img-
blog.csdnimg.cn/direct/cdbc114fb1594530a50b030b2226a4f2.png)

工具网站:

JWT官方解码网站

第四关

tom现有票数![](https://img-
blog.csdnimg.cn/direct/0831ddc59ee347d5b7ab9f905be7e38f.png)

重置票数,发现没有权限 ![](https://img-
blog.csdnimg.cn/direct/e48c8c3f03f94c85bd312e4c0bd11794.png)

抓包

网站解码 ![](https://img-
blog.csdnimg.cn/direct/ae6fd60169154ff5ab89ca71c38ee967.png)

修改头部算法为none,admin为true,成功 ![](https://img-
blog.csdnimg.cn/direct/eb97decdc289417f9d55296d35b120c2.png)

第五关

提示

爆破命令

hashcat -m 16500 jwt.txt -a 3 -w 2 1.txt --force
-m 16500 		这里的16500对应的就是jwt的token爆破;
-a 3  			代表蛮力破解
-w 3 			可以理解为高速破解,就是会让桌面进程无响应的那种高速
jwt.txt 			是我把题目要求破解的token保存到的文件
pass.txt 		密码字典

爆破

可能会爆破不出来,需要kali虚拟机至少4g内存,如果还有问题可以重启靶场![](https://img-
blog.csdnimg.cn/direct/667dde92ec3149bb91fa3790fe54e7ad.png)

修改exp为有效时间,在解码网站输入爆破出来的密钥![](https://img-
blog.csdnimg.cn/direct/4ea088edcad548f289a978beb8453ead.png)

将JWT放到 ![](https://img-
blog.csdnimg.cn/direct/d56773e72b3b4a15afa339c443cd202e.png)

第七关

要求以tom身份结账![](https://img-
blog.csdnimg.cn/direct/9ee673d5a6894cfb8eb4028a5eca9dfd.png)
点击提示![](https://img-
blog.csdnimg.cn/direct/eb6e5630e02a4d81b313de979f675ed1.png)
发现JWT![](https://img-
blog.csdnimg.cn/direct/20dab69d66e444139f1aae0a7efff26e.png)
网站解码![](https://img-
blog.csdnimg.cn/direct/34ff0da9da9a4777a1c1c37789d615e4.png)
修改HS512为none,修改时间戳为实时时间以后的时间 ![](https://img-
blog.csdnimg.cn/direct/32a45f0d91a1406aa5628f4a3f19a8fa.png)复制前两部分,不要签名,签名已经失效,放到bp中,成功![](https://img-
blog.csdnimg.cn/direct/f5125cdbde444e10bac244e6b7ff9cf8.png)

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

学习计划

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

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

接下来我将给大家安排一个为期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】的网络安全工程师从入门到精通的学习资料包,可点击下方二维码链接领取哦。

# 学习计划安排

我一共划分了六个阶段,但并不是说你得学完全部才能上手工作,对于一些初级岗位,学到第三四个阶段就足矣~

这里我整合并且整理成了一份【282G】的网络安全从零基础入门到进阶资料包,需要的小伙伴可以扫描下方CSDN官方合作二维码免费领取哦,无偿分享!!!

如果你对网络安全入门感兴趣,那么你需要的话可以

点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

①网络安全学习路线
②上百份渗透测试电子书
③安全攻防357页笔记
④50份安全攻防面试指南
⑤安全红队渗透工具包
⑥HW护网行动经验总结
⑦100个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年CTF夺旗赛题解析

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值