我是靠谱客的博主 温暖香烟,最近开发中收集的这篇文章主要介绍13JWT安全及预编译CASE注入java 防御注入以及绕过jwt 安全,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

JWT安全及预编译CASE注入

  • java 防御注入以及绕过
    • 预编译防止注入(参数绑定)
    • session防注入
  • jwt 安全
    • jwt简介
    • jwt攻击
      • jwt伪造攻击
      • jwt密钥爆破攻击

java 防御注入以及绕过

预编译防止注入(参数绑定)

  1. java 注入防御

    1.1 参数绑定,通过预编译实现
    预编译可以将传递的参数值只当做要查询的数据
    不给机会执行破坏语句
    sql = “select * from tabel where id=?”
    如果出现 order by 就可以通过 case when 绕过
    一般需要排序的地方都会用到 order by

    1.2 具体绕过方式
    一种预编译绕过方法 通过 case when 绕过,必须要在代码中使用了 order by 才能生效
    需要通过 python 编写脚本利用,这是部分代码:
    在这里插入图片描述

    1.3 java 预防注入的手法图:
    在这里插入图片描述

session防注入

  1. 通过 session 防御
    因为 session 在服务器端,所以无法操作

jwt 安全

jwt简介

  1. jwt 安全 json web token
    3.1 jwt 组成部分:头部 header、声明 claims、签名 signature
    这是 jwt 组成的示意图:
    在这里插入图片描述

    3.2 jwt 的编码方式&加密方式
    jwt 的头部与声明部分是通过 base64 编码的
    签名部分是基于 header 中指定的签名算法(默认情况下为 HMAC SHA256)生成加密字符串,
    这个加密字符串既可以 base64 编码,也可以不编码

jwt攻击

jwt伪造攻击

3.3 基于 jwt 的攻击-jwt 伪造
话不多说上链接,通过 jwt 解密网站,可以将前两部分解密
得到用户信息
一个例子,解密后变成这样:
在这里插入图片描述

我们通过 burpsuite 的 decoder 修改 jwt 头部,将签名方式 alg 的内容改为 none
在这里插入图片描述

再将 payload 声明中的 admin 改为 true,这个是改用户权限,
操作与上面相同
完成修改我们要手动删除 base64 加密后的==
在这里插入图片描述

再将改好的 admin 也拼接上去
在这里插入图片描述

最后就是复制到数据包的 token 处发送给服务器

注意需要在最后再补上一个.否则服务器无法解析
这种方式只有在服务端不验证签名方式的情况下才有用

jwt密钥爆破攻击

3.4 基于 jwt 的攻击-jwt 密钥爆破
上面说到签名是通过头部指定的加密方式加上密钥得到的,
又由于加密方式我们可以直接从头部得到,那么我们只要不断更换密钥,
通过脚本加密出签名然后与原来的签名对比即可知道密钥是否正确,
也就是密钥爆破(因为相当于一个一个试)

这里有一部分 python 实现密钥爆破的代码,具体的等以后学到 python 开发再试:
在这里插入图片描述

最后

以上就是温暖香烟为你收集整理的13JWT安全及预编译CASE注入java 防御注入以及绕过jwt 安全的全部内容,希望文章能够帮你解决13JWT安全及预编译CASE注入java 防御注入以及绕过jwt 安全所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部