如何使用Jwtear解析和修改JWT令牌

VSole2022-07-22 17:11:13

 关于Jwtear 

Jwtear是一款模块化的命令行工具,该工具可以帮助广大研究人员从安全研究的角度来解析、创建和修改JSON Web令牌(JWT)。

 功能介绍 

完整的模块化组件:所有的命令都是插件,可以轻松添加新的插件;

支持JWS和JWE令牌;

提供了易于使用的接口和模版;

高灵活性,轻松可扩展新功能;

基于生产类库的令牌生成机制,例如json-jwt和jwe等;

 可用插件 

Parse:解析JWT令牌;

jsw:修改和生成JWS令牌;

jwe:修改和生成JWE令牌;

bruteforce:暴力破解JWS签名密钥;

wiki:包含关于JWT和攻击相关的离线信息;

 工具安装 

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/KINGSABRI/jwtear.git

除此之外,我们也可以使用gem命令下载和安装Jwtear:

$ gem install jwtear

 工具使用 

显示工具帮助信息

命令解释:
help             - 显示命令帮助信息
    bruteforce, bfs   - 用于离线破解令牌签名的插件
    jws, s           - 生成基于签名的JWT(JWS)令牌
    jwe, e           - 生成基于加密的JWT(JWE)令牌
    parse           - 解析JWT令牌(接受JWS和JWE格式)
    wiki, w          - 为研究人员提供的JWT WiKi

使用“-h COMMAND”命令可以查看相关命令的参数选项

$jwtear -h jws
 
NAME
    jws - 成基于签名的JWT(JWS)令牌
 
SYNOPSIS
    jwtear [global options] jws [command options]
 
DESCRIPTION
    生成JWS和JWE令牌 
 
COMMAND OPTIONS
    -h, --header=JSON               - JWT header (JSON 格式)。例如:{"typ":"JWT","alg":"HS256"}. Run 'jwtear gen -l' for supported algorithms. (必须, 默认: none)
    -p, --payload=JSON              - JWT payload (JSON 格式)。例如:{"login":"admin"} (必须, 默认: none)
    -k, --key=PASSWORD|PUB_KEY_FILE - 密钥作为密码字符串或文件公共密钥。例如:P@ssw0rd  | eg. public_key.pem (默认: none)

使用一个插件

插件是以子命令的形式定义的,每一个子命令都有一个或多个参数进行控制:

$ jwtear parse -t eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.J8SS8VKlI2yV47C4BtfYukWPx_2welF34Mz7l-MNmkE
$ jwtear jws -h '{"alg":"HS256","typ":"JWT"}' -p '{"user":"admin"}' -k p@ss0rd123
$ jwtear jwe -header '{"enc":"A192GCM","typ":"JWT"}' --payload '{"user":"admin"}' --key public.pem
$ jwtear bruteforce -v -t eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjpudWxsfQ.Tr0VvdP6rVBGBGuI_luxGCOaz6BbhC6IxRTlKOW8UjM -l ~/tmp/pass.list

添加插件:

如需添加一个新的插件,则要在“plugins”目录下创建一个新的Ruby文件,其中包含下列结构数据:

module JWTear
  module CLI
    extend GLI::App
    extend JWTear::Helpers::Extensions::Print
    extend JWTear::Helpers::Utils
 
    desc "Plugin short description"
    long_desc "Plugin long description"
    command [:template, :pt] do |c|
      c.action do |global, options, arguments|
        print_h1 "Plugin template"
        print_good "Hi, I'm a template."
        template = TemplatePlugin.new
      end
    end
  end
 
  module Plugin
    class TemplatePlugin
      include JWTear::Helpers::Extensions::Print
      include JWTear::Helpers::Utils
 
      def initialize
        check_dependencies
        # ..code...
      end
     
      # ..code...
    end
  end
end

其中,我们可以将所需的依赖组件以哈希形式添加到“check_dependencies”方法中:

deps = {'async-io' => 'async/ip'}
check_dependencies(deps)
jwt
本作品采用《CC 协议》,转载必须注明作者和本文链接
浅析JWT安全问题
2022-08-08 15:44:18
观察确定为JWT,将payload处字符base64解码得??把sub的wiener修改为administrator,重新传参??成功越权,然后就是删除用户即可?然后前往jwt.io生成我们需要的的jwt,把sub和secret进行修改??重新传包,成功?
Oracle WebCenter在这个业务中,登陆口的校验是采用Oracle WebCenter进行认证的,也就是说在系统最初的登录,流量是走到Oracle WebCenter中进行认证的。Oracle WebCenter是面向社交业务的用户参与平台。JWTJTW全程是Json Web Token,是目前最流行的跨域认证解决方案。之前遇到的JWT漏洞情况,可能大多数都是在一开始的登录验证下,通过修改token字段以三个点分割的BASE64字符串。第一个字符串为JWT头,一般base64解码后长这样?
Jwtear是一款模块化的命令行工具,该工具可以帮助广大研究人员从安全研究的角度来解析、创建和修改JSON Web令牌。?完整的模块化组件:所有的命令都是插件,可以轻松添加新的插件;支持JWS和JWE令牌;提供了易于使用的接口和模版;高灵活性,轻松可扩展新功能;基于生产类库的令牌生成机制。
它们基于JSON格式,并包含一个令牌签名以确保令牌的完整性。本文主要讨论使用JSON Web令牌的安全隐患,以及攻击者如何利用它们绕过访问控制。有效载荷和签名。
花了点时间写了一个SpringSecurity集合JWT完成身份验证的Demo,并按照自己的想法完成了动态权限问题。在写这个Demo之初,使用的是SpringSecurity自带的注解权限,但是这样权限就显得不太灵活,在实现之后,感觉也挺复杂的,欢迎大家给出建议。认证流程及授权流程我画了个建议的认证授权流程图,后面会结合代码进行解释整个流程。
近几天在网上找了一个 Spring Security 和 JWT 的例子来学习
根据Check Point的数据,去年记录的网络攻击数量比2021年观察到的总数量高出近五分之二 (38%)。
后面测试的时候发现删了整段token都可以,根本就没校验 使用a邮箱给b邮箱发送信息,抓包,是jwt加密算法。对第一部分算法解码是HS256,修改为None后,重新编码为base64,替换第一部分,删掉最后一部分的签名,发送成功。幸福来得太突然,有点不相信,删了整段发现不是在此处校验,为后面的测试提供了很大的方便
项目介绍 前后端分离架构,分离开发,分离部署,前后端互不影响。 前端技术采用vue + antdvPro + axios。 后端采用spring boot + mybatis-plus + hutool等,开源可靠。 基于spring security(jwt) + 用户UUID双重认证。 基于AOP实现的接口粒度的鉴权,最细粒度过滤权限资源。 基于hibernate validator实现的校验
漏洞信息ShenYu是一款高性能,响应式的网关,同时也是应用于所有微服务场景的,可扩展、高性能、响应式的 API 网关解决方案。
VSole
网络安全专家