前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何使用Jwtear解析和修改JWT令牌

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

作者头像
FB客服
发布2023-03-30 19:16:36
1.6K0
发布2023-03-30 19:16:36
举报
文章被收录于专栏:FreeBufFreeBuf

 关于Jwtear 

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

 功能介绍 

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

支持JWS和JWE令牌; 提供了易于使用的接口和模版; 高灵活性,轻松可扩展新功能; 基于生产类库的令牌生成机制,例如json-jwt和jwe等;

 可用插件 

Parse:解析JWT令牌; jsw:修改和生成JWS令牌; jwe:修改和生成JWE令牌; bruteforce:暴力破解JWS签名密钥; wiki:包含关于JWT和攻击相关的离线信息;

 工具安装 

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

代码语言:javascript
复制
git clone https://github.com/KINGSABRI/jwtear.git

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

代码语言:javascript
复制
$ gem install jwtear

 工具使用 

显示工具帮助信息

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

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

代码语言:javascript
复制
$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)

使用一个插件

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

代码语言:javascript
复制
$ 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文件,其中包含下列结构数据:

代码语言:javascript
复制
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”方法中:

代码语言:javascript
复制
deps = {'async-io' => 'async/ip'}
check_dependencies(deps)

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

https://github.com/KINGSABRI/jwtear

精彩推荐

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  •  关于Jwtear 
  •  功能介绍 
  •  可用插件 
  •  工具安装 
  •  工具使用 
  • 添加插件
  • 许可证协议
  • 项目地址
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档