【第69课】Java安全JWT攻防Swagger自动化算法签名密匙Druid未授权

news2024/11/27 23:22:16

免责声明

本文发布的工具和脚本,仅用作测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。

如果任何单位或个人认为该项目的脚本可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明,我们将在收到认证文件后删除相关内容。

文中所涉及的技术、思路及工具等相关知识仅供安全为目的的学习使用,任何人不得将其应用于非法用途及盈利等目的,间接使用文章中的任何工具、思路及技术,我方对于由此引起的法律后果概不负责。

知识点:
1、Java安全-Druid监控-未授权访问&信息泄漏
2、Java安全-Swagger接口-文档导入&联动批量测试
2、Java安全-JWT令牌攻防-空算法&未签名&密匙提取

一、演示案例-Java安全-Druid监控-未授权访问

参考:Druid未授权访问 漏洞复现-阿里云开发者社区
Druid是阿里巴巴数据库事业部出品,为监控而生的数据库连接池。Druid提供的监控功能,监控SQL的执行时间、监控Web URI的请求、Session监控。当开发者配置不当时就可能造成未授权访问漏洞。

黑盒发现

在这里插入图片描述
在这里插入图片描述

白盒发现

在项目源码配置文件中搜索druid关键字
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

攻击点

1、直接拼接URL路径,尝试能否直接未授权访问系统功能点。
在这里插入图片描述
2、结合泄露URL路径和Session信息,利用BurpSuite进行尝试登录。
在这里插入图片描述
3、利用Cookie编辑器替换Session,再次访问后台路径尝试进入后台。

二、演示案例-Java安全-Swagger接口-导入&联动批量测试

Swagger就是将项目中所有(想要暴露的)接口展现在WEB页面上,并可以进行接口调用和调式的服务(一般都是用spring boot框架搭建该服务)

所以可以对这个接口进行漏洞测试,看是否存在未授权访问、sql注入、文件上传等漏洞。由于接口太多,一个个接口测试的话太费时间,所以一般会采用自动化接口漏洞安全测试。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

黑盒发现

在这里插入图片描述

白盒发现

在这里插入图片描述

1、自动化发包测试

Postman:GitHub - hlmd/Postman-cn: Postman汉化中文版
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果postman上有出现200的响应,那么就有可能是一个未授权接口

2、自动化漏洞测试

联动BurpSuite Xray
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也可以在BP上看有没有200响应的数据包,也有可能会是一个未授权接口

bp联动xray
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、演示案例-Java安全-JWT令牌-空算法&未签名&密匙提取

在这里插入图片描述
JSON Web Token(JWT)。它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份。基于token的身份验证可以替代传统的cookie+session身份验证方法。这使得JWT成为高度分布式网站的热门选择,在这些网站中,用户需要与多个后端服务器无缝交互。
在这里插入图片描述

JWT识别

1、标头(Header)

HeaderJWT的第一个部分,是一个JSON对象,主要声明了JWT的签名算法,如"HS256”、"RS256"等,以及其他可选参数,如"kid"、"jku"、"x5u"
alg字段通常用于表示加密采用的算法。如"HS256"、"RS256"等(HS对称加密、RS非对称加密)
typ字段通常用于表示类型
还有一些其他可选参数,如"kid"、"jku"、"x5u"

2、有效载荷(Payload)

PayloadJWT的第二个部分,这是一个JSON对象,主要承载了各种声明并传递明文数据,用于存储用户的信息,如id、用户名、角色、令牌生成时间和其他自定义声明。
iss:该字段表示jwt的签发者。
sub:该jwt面向的用户。
aud:jwt的接收方。
exp:jwt的过期时间,通常来说是一个时间戳。
iat:jwt的签发时间,常来说是一个时间戳。
jti:此jwt的唯一标识。通常用于解决请求中的重放攻击。该字段在大多数地方没有被提及或使用。因为使用此字段就意味着必须要在服务器维护一张jti表, 当客户端携带jwt访问的时候需要在jti表中查找这个唯一标识是否被使用过。使用这种方式防止重放攻击似乎让jwt有点怪怪的感觉, 毕竟jwt所宣称的优点就是无状态访问

3、签名(Signature)

Signature是对HeaderPayload进行签名,具体是用什么加密方式写在Header的alg 中。同时拥有该部分的JWT被称为JWS,也就是签了名的JWT。

第一部分:对 JSON 的头部做 base64 编码处理得到
第二部分:对 JSON 类型的 payload 做 base64 编码处理得到
第三部分:分别对头部和载荷做base64编码,并使用.拼接起来
使用头部声明的加密方式,对base64编码前两部分合并的结果加盐加密处理,作为JWT
4、人工识别

在这里插入图片描述

5、BURP插件识别
Hae(需要自己下载项目)

在这里插入图片描述
在这里插入图片描述

JSON Web Tokens(BP商店有,支持识别解析)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如何解析JWT数据?

1.JWT在线解析

JSON Web Tokens - jwt.io
在这里插入图片描述
在这里插入图片描述

2.BP官方插件-JSON Web Tokens

在这里插入图片描述

JWT安全

1、空加密算法(攻击头部不使用加密)

签名算法可被修改为none,JWT支持将算法设定为"None"。如果"alg"字段设为"None",那么签名会被置空,这样任何token都是有效的。
在这里插入图片描述

2、未校验签名(攻击签名不使用签名认证)

某些服务端并未校验JWT签名,可以尝试修改payload后然后直接请求token或者直接删除signature再次请求查看其是否还有效。

3、暴力破解密钥(攻击签名知道密钥实现重组)

针对是对称加密算法(非对称没有用)
非对称要使用方法:从源码获取公钥私钥文件

某些签名算法,例如HS256(HMAC+SHA-256),会像密码一样使用一个任意的、独立的字符串作为秘密密钥。这个秘钥如被轻易猜到或暴力破解,则攻击者能以任意的头部和载荷值来创建JWT,然后用密钥重新给令牌签名。

4、其他安全参考:(源码泄漏密匙,Kid注入等)

细说——JWT攻击_jwt漏洞-CSDN博客

JWTCTF

JWT利用项目

GitHub - ticarpi/jwt_tool: :snake: A toolkit for testing, tweaking and cracking JSON Web Tokens

项目命令帮助
# 使用None算法
python3 jwt_tool.py JWT_HERE -X a

# 自定义修改生成
python3 jwt_tool.py JWT_HERE -T

# 使用字典破解
python3 jwt_tool.py JWT_HERE -C -d dictionary.txt

# 指定密码测试
python3 jwt_tool.py JWT_HERE -C -p password_here
Web345(None空加密算法)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web346(None算法绕过签名)

在这里插入图片描述
在这里插入图片描述
解题思路:alg强制设置为none绕过签名
两种方法:

BP插件-JSON Web Tokens

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

JWT利用项目-jwt_tool

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web347(弱口令密钥获取)

在这里插入图片描述
在这里插入图片描述
JWT利用项目-jwt_tool
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
知道密匙之后肯定要重新生成JWT呀,如何重新生成?
使用 JWT在线解析:JSON Web Tokens - jwt.io来重新生成
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web348(爆破密钥上题一样)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web349(公钥私钥泄露)

在这里插入图片描述
这里可以使用专门的js ide打开相关源码文件,看的比较清楚
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
公钥私钥泄露,访问/private.key、/public.key得到公钥密钥
在这里插入图片描述
在这里插入图片描述
源码中私钥生成jwt,利用公钥解密jwt,只要有私钥就可以重新生成JWT
test.py

import jwt
public = open('private.key', 'r').read()
payload={"user":"admin"}
print(jwt.encode(payload, key=public, algorithm='RS256'))

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意源码中公匙解密的条件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Web350(密钥混淆攻击RS256=>HS256)

在这里插入图片描述
在这里插入图片描述
这里可以使用专门的js ide打开相关源码文件,看的比较清楚
在这里插入图片描述
在这里插入图片描述
RS256算法改为HS256(非对称密码算法=>对称密码算法)
HS256算法使用密钥为所有消息进行签名和验证。
而RS256算法则使用私钥对消息进行签名并使用公钥进行身份验证。
在这里插入图片描述
test.js

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

黑盒JWT测试

首先找到需要JWT鉴权后才能访问的页面,如个人资料页面,将该请求包重放

测试:

1、未授权访问:删除Token后仍然可以正常响应对应页面

2、敏感信息泄露:通过在线平台JWt.io解密出Payload后查看其中是否包含敏感信息,如弱加密的密码等

3、破解密钥+越权访问:通过JWT.io解密出Payload部分内容,通过空加密算法或密钥爆破等方式实现重新签发Token并修改Payload部分内容,重放请求包,观察响应包是否能够越权查看其他用户资料

4、检查Token时效性:解密查看payload中是否有exp字段键值对(Token过期时间),等待过期时间后再次使用该Token发送请求,若正常响应则存在Token不过期

5、通过页面回显进行探测:如修改Payload中键值对后页面报错信息是否存在注入,payload中kid字段的目录遍历问题与sql注入问题

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

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

相关文章

【逆向】打开页面403,加密值如何有其它页面内正则提取并更新

一、问题出现 # import requests # url https://www.regulations.gov/search?sortBypostedDate&sortDirectiondesc # response requests.get(url) # print(response.text) 正常页面打开没有自己看到的内容。 F12找到新的地址 import requests# headers { # accep…

使用VRoid Studio二次元建模,创建专属于自己的二次元卡通人物模型,创建完全免费开源且属于自己VRM模型

最终效果 文章目录 最终效果什么是VRoid Studio官网地址下载安装VRoid Studio1、可以去它的官网下载2、steam安装 创建模型配置参数 导出模型使用别人的VRM模型这里我分享几个不错的模型,大家可以自行去下载 完结 什么是VRoid Studio 如果你玩过能捏脸的游戏你就能…

免费体验!快速生成超逼真真人美图的Stable Diffusion模型!

前言 所有的AI设计工具,模型和插件,都已经整理好了,👇获取~ 环境安装 1、安装Python 下载地址:https://www.python.org/ftp/python/3.10.6/python-3.10.6-amd64.exe。 备注:把安装目录加入环境变量&…

AI打造独居女性生活漫画Vlog,这份涨粉秘籍不容错过!

在快节奏与高压的现代生活中,独居女性的日常成为了许多人向往的一片宁静之地。她们以独特的方式享受着自我成长与生活的美好,而这些细微却动人的瞬间,正是我们创作爆款Vlog的灵感源泉。 在这个数字化时代,我们用科技捕捉并重新诠释…

一些常见的测试类型及介绍

在刚开始学习软件测试的时候,总是看到很多种测试类型,除了下图软件测试分类外,还有一些常见的测试类型名称。 1.接口测试 接口测试用于检测外部系统与所测系统之间以及内部各个子系统之间的交互点,定义特定的交互点,通…

Ubuntu下载安装教程|Ubuntu最新长期支持(LTS)版本24.04 LTS下载安装

安装Ubuntu Ubuntu最新长期支持(LTS)版本24.04 LTS Ubuntu 24.04 LTS | 概览 Ubuntu长期支持(LTS)版本,LTS意为“长期支持”,一般为5年。LTS版本将提供免费安全和维护更新至 2029年4月。 Ubuntu 24.04 LTS(代号“Noble Numbat”,…

【EI检索稳定】2024年第四届数字化社会与智能系统国际学术会议(DSInS 2024)

由悉尼科技大学和西南交通大学联合主办,四川大学、中南大学社会计算研究中心、西南财经大学、武汉理工大学协办的2024年第四届数字化社会与智能系统国际学术会议将于2024年11月22-24日在中国郑州举行。会议主题主要聚焦智能系统在数字化社会中的相关技术和应用发展。…

RM电控RTOS

OS即(operating system)操作系统,比如我们常用的windows系统,mac系统,android系统,ios系统,linux系统等,都属于操作系统。操作系统的本质是一个特殊的软件,它直接管理硬件…

一文彻底搞懂Transformer - FFNN(前馈神经网络)

Transformer 神经网络: 神经网络(Neural Networks)是一种模仿生物神经网络的结构和功能的数学或计算模型。它由大量的人工神经元(也称为节点或处理单元)相互连接而成,这些神经元之间通过带有权重的连接进行…

罗德与施瓦茨(RS)FSW50,FSW85,FSW67信号和频谱分析仪

Rohde & Schwarz FSW50,FSW67,FSW85信号和频谱分析仪 高性能罗德与施瓦茨 (R&S) FSW50 信号和频谱分析仪专为方便、准确和快速而设计。其独特的触摸屏、直观的多视图结果显示和优化的用户指南使 R&S FSW50 分析仪的操作高效便捷。凭借其无与伦比的相位噪声、无与伦…

数学生物学-2-离散时间模型(Discrete Time Models)

上一篇介绍了一个指数增长模型。然而,我们也看到,在现实情况下,细菌培养的增长是在离散的时间(在这种情况下是小时)进行测量的,种群并没有无限增长,而是趋于以S形曲线趋于平稳,称为“…

[ACL 2024] Revisiting Knowledge Distillation for Autoregressive Language Models

Contents IntroductionMethodRethinking Knowledge Distillation for Autoregressive LMsImproving Knowledge Distillation with Adaptive Teaching Modes ExperimentsReferences Introduction 作者提出 Autoregressive KD with Adaptive Teaching Modes (ATKD),通…

Go语言开发通过本地数据xdb文件​查询获取IP地址的归属地区及运营商名称

说明: 用本地数据,离线识别ip属地,用于显示用户ip属地,不依赖第三方的api接口,本地数据包解析,解析速度快10微秒级别的查询效率。返回数据固定格式:国家|区域|省份|城市|ISP,例如&a…

c++11(三)

一、可变参数 1、可变参数模板 c语言中的 scanf 和 printf 可以支持我们传入任意个数的参数&#xff0c;原理就是用了参数包。 //可变参数包 template<class ...Args> void Print(Args... args) {} Args&#xff1a;模板参数包 args&#xff1a;函数形参参数包 声明…

检查linux系统中异常进程

1、查看非root运行的进程 [rootbastion-IDC ~]# ps -U root -u root -N 2、查看root运行的进程 [rootbastion-IDC ~]# ps -u root 注意&#xff1a;UID为0的进程&#xff0c;查看该进程所打开的端口和文件 [rootbastion-IDC ~]#ps -ef 查看进程 [rootbastion-IDC ~]# l…

Lesson 77 Terrible toothache

Lesson 77 Terrible toothache 词汇 appointment n. 预约 构成&#xff1a;point v. 指&#xff0c;指向 用法&#xff1a;point to 人 / 物    指着&#xff0c;指向……    point out 指出&#xff08;问题&#xff09; 相关&#xff1a;game point 局点    matc…

statsmodels学习笔记

statsmodels学习笔记 统计模型、假设检验和数据探索。statsmodels是一个python模块&#xff0c;提供了用于估计许多不同统计模型的类和函数&#xff0c;以及用于统计测试和统计数据探索。每个估计器都有一个广泛的结果统计列表。根据现有的统计软件包对结果进行测试&#xff0c…

【C++】深入解析C/C++内存管理:new与delete的使用及原理

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类 本章将分享C为何放弃malloc/free系列&#xff0c;选择新系列new/delete去管理内存。深度探索new/delete的使用及其原理,m…

VBA注释 (<*> + <*>)

在VBA&#xff08;Visual Basic for Applications&#xff09;中&#xff0c;注释是一种用于向代码中添加说明或解释文本的方法&#xff0c;这些文本不会被执行。注释对于理解代码的目的、逻辑或特定部分的代码功能非常有帮助&#xff0c;尤其是在处理复杂或长的代码时。 一、…

当《黑神话:悟空》遇上openKylin,国产力量的极致碰撞!

万众瞩目的国产3A游戏巨作《黑神话&#xff1a;悟空》终于上线啦&#xff01;&#xff01;&#xff01; 在正式发售后不到24小时&#xff0c;Steam在线玩家峰值突破222万&#xff0c;在Steam所有游戏在线玩家历史峰值中排名第二。第一拨玩家纷纷晒出好评&#xff0c;称这款现象…