Burp靶场JWT学习笔记1

news2025/7/12 23:12:48

JWT(JSON Web Token)

从其名字就可以看出来,它具有表示身份的作用,其本质是将用户信息储存到一串json字符串中再将其编码得到一串token

JWT由三部分组成,分别是

Header,Payload,Signatrue

JWT=Base64(Header).Base64(Payload).加密函数(base64UrlEncode(header)+"."+base64UrlEncode(payload),secret)

例如: 

Header部分

{

"kid":"4ff7ccb9-58a2-47de-8f91-cfc7582ebe41",

"alg":"RS256"

}

 Payload部分

{

"iss":"portswigger",

"exp":1745253912,

"sub":"administrator"

}

Signature部分

#一大堆加密后的信息(签名)

u9e8ddhECxkGzuvGk9u78LcmBmLK4apCDh84l2BgYjauMcWkzSF2A9rqDEzqdBDiBMyHkUYeLiVF7Nu7km94PfMskQlIeVxuSF0MxI3a7I53mJ7woT3ypQm3Jw6VAOlqapLEC7VRa3Vfgv7H_dJpbFJkrHwE9KfW3TzdQeVAz-QKglJritq5WAPXP4oGAu5lSK8QUVECvUcnTYYzGS_TYYuOewbqgiq1w_dm5wn0M1LEYu1QM1fu7l8kOcDnkw7nMxeBM3iiZpAESvhd2myN_MCuIFFkC5OKghsWqIRehMKG3qR1X2YWnem04_ki6YMRA1jqEcvp5acH58rhGrDEyQ

1.JWT authentication bypass via unverified signature

本关要求我们进入管理员界面/admin并且删除用户carlos

我们访问admin,会发现提示只有administrator可以访问

那么我们登录wiener用户并且抓包,在放行了第一个包后第二个抓到的包就是我们所要的包

我们要去到管理员的/admin界面,就需要以管理员身份去访问

先登录到我们的账号wiener

这一步的目的是先让我们得到自己的cookie以查看jwt信息以让我们可以去分析其构成

再访问/admin界面,同时抓包

我们在burp里双击jwt的内容可以在inspector栏里看到对应的信息以及对应的解码结果,这里我们就查看payload信息,也就是第一个句点.后的内容,可以看到里面有个sub参数对应的值为wiener

我们将其修改为administrator后应用

再放行这个包会发现访问/admin成功,网站将我们认成了administrator

我们要删除carlos用户,执行删除操作也要以管理员的身份执行,具体方法和前面一样,抓包修改jwt信息为administrator

放行后成功过关

2.JWT authentication bypass via flawed signature verification

本关要求也和上一关一样要去/admin里删除carlos

但是本关还会校验jwt里的签名信息,所以单单修改用户名是没有用的,我们还是先登录wiener用户然后访问/admin再抓包

修改payload部分里的用户名为administrator

再修改header里的加密方式为none

修改为none后我们需要把jwt里的签名信息给删掉,但别把句点.也删了,不然jwt格式错误

随后放行,发现成功访问admin界面

删除carlos时也要重复前面一样的操作

放行后成功过关

3.JWT authentication bypass via weak signing key

本关要求也一样是删除carlos

同时将签名加密类型修改为none给过滤掉了,也就是不得不破解加密用的密钥了,并且本关也是提示弱签名,可以爆破

同样的步骤登录账号,访问/admin然后抓包,此时将jwt信息复制出来,使用hashcat工具破解

使用命令

hashcat -a 0 -m 16500 <jwt信息> <爆破字典>

得到密钥为secret1

于是前往json编辑网站JSON Web Tokens - jwt.io进行修改

将原有的jwt复制进去后修改decoded的内容,encoded的内容就是我们要的

将其替换原有的jwt

放行后成功绕过验证

再以一样的操作删除carlos用户

放行后成功过关

4.JWT authentication bypass via jwk header injection

本关也一样要求在/admin下删除carlos

并且本关也同样限制了none加密方式,同时加密很复杂很难爆破,那么根据本关题目提示,应该是通过修改jwt的header部分实现绕过,题目提示服务器支持jwk也就是JSON Web Key,它可以作为jwt里header的一部分,在这里用于数字签名身份验证

一下就是一串jwk结构(以RSA为例)

{
  "kty": "RSA",           // 密钥类型(RSA/EC/oct)
  "alg": "RS256",         // 算法(如 RS256、ES256、HS256)
  "kid": "2023-01",       // 密钥唯一标识(用于轮换)
  "n": "Modulus...",      // RSA 模数(Base64URL)
  "e": "AQAB",            // RSA 公钥指数(通常为 65537)
  "d": "PrivateExponent", // 私钥参数(仅私钥包含)
  "p": "Prime1",          // 私钥参数(仅私钥包含)
  "q": "Prime2",          // 私钥参数(仅私钥包含)
  "use": "sig",           // 用途(sig 签名/enc 加密)
}

如果服务器没有对用于验证的公钥做筛选(比如白名单),我们可以通过构造管理员的签名来欺骗服务器认为我们是administrator

一样我们先登录wiener,然后抓取前往/admin的包

我们这里要先安装一个burp插件叫做JWT editor

安装后我们抓的包会发现多了一栏选项叫做json web token也就是jwt

我们要构造jwk,就需要用到jwt editor来生成一个rsa密钥

进入jwt editor界面在右边选择new rsa key

选择类型为JWK,然后生成

随后我们要先修改我们的身份信息为administrator

然后在json web token栏内的攻击方式里选择Embedded JWK(嵌入式JWK)

注意要先修改身份信息在配置攻击方式,不然jwk验证出来会是修改之前的wiener

随后选择我们刚生成的rsa密钥,通过kid来选择

确认后可以看到我们的JWT信息已经被修改

随后放行,发现我们已经成功进入/admin了

然后删除carlos,也使用和前面一样的操作,密钥就不用重新生成了

注意要先修改身份信息再配置攻击模式

放行后成功过关

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

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

相关文章

C++?类和对象(下)!!!

一、前言 在之前我们已经讨论过了有关类和对象的前置知识以及类中的六大默认成员函数&#xff0c;在本期我们继续再讨论类和对象中剩余的友元、初始化列表等相关知识&#xff0c;如果需要再了解之前的知识的话&#xff0c;链接奉上&#xff1a;C&#xff1f;类和对象&#xff0…

FastAPI 零基础入门指南:10 分钟搭建高性能 API

一、为什么选择 FastAPI&#xff1f; 想象一下&#xff0c;用 Python 写 API 可以像搭积木一样简单&#xff0c;同时还能拥有媲美 Go 语言的性能&#xff0c;这个框架凭借三大核心优势迅速风靡全球&#xff1a; 开发效率提升 3 倍&#xff1a;类型注解 自动文档&#xff0c;…

机器人新革命:Pi 0.5如何让智能走进千家万户

在科技飞速发展的今天&#xff0c;机器人技术正在以一种令人惊喜的方式贴近我们的生活。最近&#xff0c;Physical Intelligence 公司推出了 Pi 0.5 版本&#xff0c;这一创新设计不仅颠覆了传统机器人的运作模式&#xff0c;更让我们看到了未来智能设备融入日常生活的无限可能…

从数据结构说起(一)

1 揭开数据结构神奇的面纱 1.1 初识数据结构 在C的标准库模板&#xff08;Standard Template Library,STL&#xff09;课程上&#xff0c;我初次结识了《数据结构》。C语言提供的标准库模板是面向对象程序设计与泛型程序设计思想相结合的典范。所谓的泛型编程就是编写不依赖于具…

Git基本使用(很详细)

一&#xff1a;Git 概述 1.1 定义&#xff1a;分布式版本控制系统 1.2 版本控制 &#xff08;1&#xff09;定义&#xff1a; 版本控制时一种记录文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统 &#xff08;2&#xff09;举例 多副本 优化&#xff1a; 不使用多…

仓颉编程语言最佳实例 “Hello, world!”

仓颉编程语言最佳实例 “Hello, world!” The Best Practice to Cangjie Programming Language - “Hello, world!” BY JACKSON 1. 仓颉集成开发工具&#xff08;IDE&#xff09;安装 打开Chrome浏览器&#xff0c;访问仓颉编程语言官网&#xff1a;https://cangjie-lang.…

[mysql]窗口函数

目录 窗口函数: 为何要学习窗口函数,与mysql5.7实现语句对比 现在我们介绍一下窗口函数: 函数规则 1序号函数 2分布函数 3前后函数 5其他函数 总结 窗口函数: 首先数据库的迁移是非常慢的,大家学习新特性的时候要考虑自己公司的数据库版本是不是和自己学习的吻合 为何…

内存四区(栈)

今天我再次学到了有趣的知识&#xff0c;内存四区&#xff01; 内存四区分为代码区&#xff0c;全局区&#xff0c;栈区&#xff0c;堆区&#xff0c;今天我们详细来讲讲栈区&#xff01; 内存四区和栈区都是用来存放数据的&#xff0c;而栈区存放的数据具体有两类 1.形参数…

新零售行业时代:如何用科技驱动传统零售的转型升级​​

新零售行业时代&#xff1a;如何用科技驱动传统零售的转型升级​​ ​​“在变化的世界中&#xff0c;唯一不变的是变化本身。”​​ ​​一、传统零售的困局&#xff1a;当“生存”成为一场鏖战​​ 街角的便利店老板老王&#xff0c;每天凌晨4点起床进货&#xff0c;却在月…

长途骑行装备攻略:VELO维乐 Angel Revo坐垫伴我畅享旅途

工作忙碌了很久&#xff0c;终于迎来了一个难得的假期。我决定和朋友一起踏上一场长途骑行之旅&#xff0c;远离城市的喧嚣&#xff0c;去寻找那份久违的宁静与自由。这次旅行&#xff0c;不仅是为了旅途风景的放松&#xff0c;更是为了体验一场身体与心灵的挑战。而朋友推荐的…

WebcamJS中文文档

文章目录 WebcamJS针对Chrome 47及以上版本的重要说明浏览器支持演示示例开源协议快速入门指南配置初始化拍摄照片自定义图像大小裁剪图像翻转图像(镜像模式)冻结/预览图像设置备用SWF文件位置重置(关闭)API 参考自定义事件向服务器提交图像跟踪上传进度包含在现有表单中自…

微软官网Win10镜像下载快速获取ISO文件

如何从微软官网轻松下载win10镜像&#xff1f;win10镜像的下载方式主要包括两种&#xff1a; 目录 一&#xff1a;借助官方工具 二&#xff1a;直接微软官网通过浏览器进行下载。 三&#xff1a;实现方法与步骤&#xff1a; 1&#xff1a;利用微软官方提供的MediaCreationT…

逆向|dy|a_bogus|1.0.1.19-fix.01

2025-04-26 请求地址:aHR0cHM6Ly93d3cuZG91eWluLmNvbS91c2VyL01TNHdMakFCQUFBQV96azV6NkoyMG1YeGt0eHBnNkkzRVRKejlyMEs3d2Y2dU9EWlhvd2ttblZWRnB0dlBPMmMwN2J0WFotcVU4V3M 个人主页的视频数据 我们需要逆向这个接口,所以现在需要分析这个请求, 分析这几个数据包可以发现: 只有…

高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!

目录 思路"情境 对象 问题"型 课题选题的类型有哪些呢&#xff1f;这要从课题题目的构成说起。通过对历年来国家社会科学基金立项项目进行分析&#xff0c;小编发现&#xff0c;课题选题类型非常丰富&#xff0c;但一般是围绕限定词、研究对象和研究问题进行不同的组…

springboot项目配置nacos,指定使用环境

遇到这样一个问题&#xff0c;在开发、测试、生成环境之间切换的问题。 大多数的操作是通过修改spring.profiles.active来确定指向使用的环境配置文件&#xff0c;对应项目中需要增加对应的配置文件。 但是现在几乎所有公司都会有代码管理不管是SVN、git&#xff0c;这样就会涉…

DIFY 浅尝 - DIFY + Ollama 添加模型

准备物料 Dify 本地部署 Ollama 下载 Open WebUI 好了现在&#xff0c;假设访问 http://localhost/apps 应该可以打开 Dify&#xff0c;设置用户登录后应该可以看到以下界面 打开 http://localhost:3000/, 你应该可以看到部署好的Open WebUI&#xff0c;并假设有下载好你感…

Java 异常处理全解析:从基础到自定义异常的实战指南

Java 异常处理全解析&#xff1a;从基础到自定义异常的实战指南 一、Java 异常体系&#xff1a;Error 与 Exception 的本质区别 1. 异常体系核心架构 Java把异常当作对象来处理&#xff0c;并定义一个基类java.lang.Throwable作为所有异常的超类。 在Java API中已经定义了许…

开源AI智能名片链动2+1模式S2B2C商城小程序源码赋能下的社交电商创业者技能跃迁与价值重构

摘要&#xff1a;在移动互联网深度重构商业生态的背景下&#xff0c;社交电商创业者面临流量成本攀升、用户粘性不足、供应链协同低效等核心痛点。本文以“开源AI智能名片链动21模式S2B2C商城小程序源码”技术体系为研究对象&#xff0c;通过分析其技术架构、商业逻辑及实战案例…

WSL 中 nvidia-smi: command not found的解决办法

前言 在使用基于 Linux 的 Windows 子系统&#xff08;WSL&#xff09;时&#xff0c;当我们执行某些操作后&#xff0c;可能会遇到输入 nvidia-smi 命令却无法被系统识别的情况。 例如&#xff0c;在终端中输入nvidia-smi 后&#xff0c;系统返回提示 -bash: nvidia-smi: co…

FPGA前瞻篇-组合逻辑电路设计-多路复用器

多路选择器&#xff08;MUX&#xff09;简介 基本概念 多路选择器&#xff08;MUX&#xff0c;Multiplexer&#xff09;是一种多输入、单输出的组合逻辑电路。 它通过选择控制信号&#xff0c;在多个输入信号中选择一个连接到输出端。 可以理解为一个多路数字开关。 &…