前几天做了一个登录页面的绕过,由于认证返回的token是JWT的格式,于是花了一些时间看了看有关于JWT的东西。

#关于JWT

JWT的全称为Json Web Token。它遵循JOSN格式,与传统的cookie+session的认证方式不同,服务器使用它的好处是只需要保存秘钥信息,通过加密算法验证token即可,减小了保存用户信息的资源开销。 jwt可以分成三部分,header.payload.signature

## header部分

通常它会长成这个样子

{"alg": "HS256","typ": "JWT"
}

其中alg字段指定了token加密的算法,常见的有HMAC算法、RSA算法。

typ声明类型。

## payload部分

通常会长成这样子

{"sub": "1234567890","name": "John Doe","iat": 1516239022
}

会有很多类似的字段,比如用户名,签发时间(iat),过期时间(exp)类似的信息。

## signature部分

这部分主要是用来保证token的完整性。 他的组成也不难,比如这样:signature=HMAC-SHA256(base64UrlEncode(header)+'.'+base64UrlEncode(payload),secret_key)完成的token生成可以使用python的pyjwt库来完成,如果你要修改jwt的一部分内容可以考虑使用https://jwt.io/

# 攻击手法 ## 针对加密方式

首先可以试试,修改alg字段为None即可,类似这样

{"alg": "None","typ": "JWT"
}

那么相应的,你JWT的第三部分也就不需要了,顺便一提,如果对方加入了对None字段的过滤的话,有时替换大小写可以绕过 第二种方法把RSA加密修改为HMAC也不错,因为它是对称加密的,所以在部分情况下好使。 比如:将第一个字段修改成这样

{"alg": "HS256","typ": "jwt"
}

一般情况下都是密钥签名,公钥用来验证。虽然无法获取到密钥,但是公钥往往是有办法获取到。此时便可以把加密方式修改为HS256,然后把共要哦用来签名发给服务器,然后服务器就会那私钥进行解密。

## 爆破秘钥

爆破可以使用github上的工具c-jwt-cracker来完成,但是局限性很大。 首先秘钥不能太复杂,其次还需要一段已知的签过名的token。 基本打比赛偶尔能遇到,实战歇菜。

## 修改kid

kid(key ID)是JWT的header部分的可选参数,作用是用来指定加密算法秘钥。 大概长这个样子

{"alg": "HS256","typ": "jwt","kid": "/home/jwt/.ssh/1.pem"
}

由于这部分可以用户输入,在极少数情况下也会有用。 比如说,掌握了某一个老秘钥,但是服务器会定期更新秘钥,如果老秘钥没有删除,就可以在这里指定加密秘钥为老秘钥。

再比如说,如果过滤不严,一些注入之类的骚操作,但是局限性很大。

## 信息泄露

因为jwt简单来说就是base64encode了一段json,所以一些JWT令牌的中间部分会有一些敏感信息。

关于JWT的一些攻击方法相关推荐

  1. cve-2019-7609 Kibana远程代码执行漏洞攻击方法和漏洞原理分析

    目录 0x00 前言 0x01 漏洞简介 0x02 环境搭建 0x03 漏洞利用 0x04 漏洞机理 1.POC验证 ​2.漏洞产生原理和攻击思路 3.payload构建 0x05 危害分析和处理建议 ...

  2. 高效的密码攻击方法:彩虹表

    为了保护账号安全,几乎所有网站都不会保存用户的密码,而是用哈希加密算法对密码进行计算,将得到的哈希串保存在数据库中,每次用户登录时会将用户提交的密码用同样的算法计算,并将结果与数据库中保存的哈希串比对 ...

  3. 灰帽黑客:正义黑客的道德规范、渗透测试、攻击方法和漏洞分析技术(第3版)

    基本信息 灰帽黑客:正义黑客的道德规范.渗透测试.攻击方法和漏洞分析技术(第3版)原书名: Gray Hat Hacking: The Ethical Hacker's Handbook, Third ...

  4. Kibana远程代码执行漏洞攻击方法和漏洞原理分析

    漏洞简介 Kibana存在远程代码执行漏洞,影响版本为5.6.15和6.6.0之前的所有版本.拥有Kibana的Timelion模块访问权限的人可以以Kibana的运行权限执行任意代码,包括反弹she ...

  5. (转)交换机攻击方法描述

    利用交换机漏洞的攻击方法如下: 一.生成树攻击 生成树协议(STP)可以防止冗余的交换环境出现回路.要是网络有回路,就会变得拥塞不堪,从而出现广播风暴,引起MAC表不一致,最终使网络崩溃. 使用STP ...

  6. 物联网智能硬件设备常见攻击方法

    以太网接入型设备,一般分为网线或WiFi两种.不管是WiFi还是网线,可以通过局域网抓包.笔记本WiFi桥接抓包等等手段. 最著名的抓包软件 Wireshark 如何抓取硬件设备的网络数据包,考量的是 ...

  7. 计算机网络安全应具备的功能,2016计算机专业知识:网络系统安全体系具备功能攻击方法...

    [导读] 为了帮助广大考生更好的备考,中公事业单位考试网提供2016年计算机专业知识<网络系统安全体系具备功能攻击方法>学习,为考生定制计算机基础知识复习计划. 一.网络系统安全体系具备功 ...

  8. ICCV 2021 | 模型安全不容忽视!特定样本触发器的隐形后门攻击方法

    关注公众号,发现CV技术之美 论文链接:https://openaccess.thecvf.com/content/ICCV2021/papers/Li_Invisible_Backdoor_Atta ...

  9. MTCNN可攻破?华为提出一种可复制、可靠的攻击方法

    作者 | Edgar Kaziakhmedov.Klim Kireev.Grigorii Melnikov.Mikhail Pautov.Aleksandr Petiushko 译者 | TroyCh ...

最新文章

  1. php面试题11(边看边复习刚刚讲的)(array_multisort($arr1,$arr2); 用$arr1来排序$arr2。)...
  2. 关于tcmalloc\malloc和new
  3. 系统会自带java吗_使用eclipse自带制作帮助系统
  4. 新手学html 第一节:html简介
  5. java 操作db2_java操作DB2,增删改查
  6. 2016年第12本:成功就靠专注一件事
  7. springmvc+swagger构建Restful风格文档
  8. 计算机学科研究方向统计
  9. 洛谷 P2495 [SDOI2011]消耗战
  10. [android] 帧动画和补间动画
  11. pytorch 中的 split
  12. 从科技到“科技亲”,2019 IBM 中国论坛干货分享
  13. HDU1864 最大报销额【0-1背包】
  14. 活动推荐 | 首届云原生编程挑战赛开始报名啦~
  15. 本地硬盘如何重装系统Win11?
  16. 教师公开课教学课件PPT模板
  17. 商标遭遇侵权,企业该如何反击?
  18. 袋式除尘器—分类和命名
  19. Redis与Memorycache的区别
  20. php将json转换成对象,php将json转换成对象或数组

热门文章

  1. Effective Java之不要忽略异常(六十五)
  2. 数据结构——排序算法(含动态图片)
  3. 【双100%解法】剑指 Offer 24. 反转链表
  4. 【报错】:Char 5: error: non-void f
  5. 计算机网络实验(华为eNSP模拟器)——第十三章 VLAN注册协议(GVRP)
  6. OpenStack(三)——Glance组件
  7. python中乘法和除法_python – NumPy的性能:uint8对比浮动和乘法与除法?
  8. STM32 ADC采样使用内部参考电压
  9. Java 枚举7常见种用法
  10. Oracle openv目录,2015年ORACLE数据库日常维护手册82281192.doc