当前位置: 首页 > news >正文

JAVA安全—FastJson反序列化利用链跟踪autoType绕过

前言

FastJson这个漏洞我们之前讲过了,今天主要是对它的链条进行分析一下,明白链条的构造原理。

Java安全—log4j日志&FastJson序列化&JNDI注入_log4j漏洞-CSDN博客

漏洞版本

1.2.24及以下没有对序列化的类做校验,导致漏洞产生

1.2.25-1.2.41增加了黑名单限制,更改autoType默认为关闭选项。

1.2.42版本是对1.2.41及以下版本的黑名单绕过,代码内更新字符串黑名单hash方式

1.2.43版本是对1.2.42及以下版本的黑名单绕过

1.2.44-1.2.45版本1.2.43版本黑名单无法绕过,寻找新的利用链进行利用

1.2.47版本 利用fastjson处理Class类时的操作,将恶意类加载到缓存中,实现攻击

1.2.62-1.2.67版本Class不会再往缓存中加载恶意类,寻找新的利用链进行突破

1.2.68版本,使用期望类AutoCloseable来绕过fastjson校验

1.2.72-1.2.80使用期望类Throwable的子类,进行绕过

项目搭建

JDK不建议选版本太高的,以防止出错啥的。

选择Web依赖项,因为后续会用到Web的功能。

新建一个类叫FastJsonController,这里待会写入我们的实验代码。

接着我们引入fastjson这个包,我这里选择的是1.2.24版本,直接再pom.xml文件写入以下代码即可。

首先写入以下代码,对我们的JSON数据进行测试,可以看到能够成功解析输出,说明环境没毛病。

public static void main(String[] args) {String str = "{\"name\":\"wlwznb\",\"age\":18}";JSONObject data = JSON.parseObject(str);System.out.println(data);}

链条分析

1.2.24 利用链分析

现在我们开始对链条来解析,把我们上面测试的JSON数据换成以下的链条,可以看出来有点像我们的fastjson利用链了。

String userStr = "{\"@type\":\"com.sf.maven.fastjsondemo1.demos.web.User\",\"age\":18,\"name\":\"wlwznb\"}";

这个 com.sf.maven.fastjsondemo1.demos.web.User 就是你自带的 User 类的路径,直接复制过来就行。

运行代码,可以看出与上面的没啥区别。

别急,此时我们打开User这个类,可以看出里面又很多方法。

我们往里面添加打印语句,这样在调用这些方法的时候,我们就会知道被调用了。

此时我们再运行代码,可以看到setAge、setName、getAge、getName这四个方法都被调用了,这说明在解析数据的时候不仅仅把age和name这两个数据解析了,还把User类里面的set和get方法解析了。


http://www.mrgr.cn/news/89841.html

相关文章:

  • windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?
  • 简单看看会议系统(TODO)
  • 用css和html制作太极图
  • Unity 语音转文字 Vosk 离线库
  • 基于禁忌搜索算法的TSP问题最优路径搜索matlab仿真
  • docker更换镜像源脚本
  • Android原生开发问题汇总
  • VMware下Linux和macOS遇到的一些问题总结
  • π0开源了且推出自回归版π0-FAST——打造机器人动作专用的高效Tokenizer:比扩散π0的训练速度快5倍但效果相当
  • idea——IDEA2024版本创建Sping项目无法选择Java 8
  • aliyun 的 ip 设置方法
  • 定时任务单线程消费 redis 中数据导致消费能力不足
  • DeepSeek本地化部署
  • mongodb 使用内存过大分析
  • 学习笔记:机器学习中的数学原理(一)
  • 均方根层标准化(RMSNorm: Root Mean Square Layer Normalization)
  • 【从零开始系列】DeepSeek-R1:(本地部署使用)思维链推理大模型,开源的神!——Windows/Linux本地环境测试 + vLLM远程部署服务
  • k8s部署rabbitmq
  • 《Kettle实操案例一(全量/增量更新与邮件发送)》
  • 音频进阶学习十二——Z变换
  • 保姆级教程Docker部署KRaft模式的Kafka官方镜像
  • 【服务器知识】如何在linux系统上搭建一个nfs
  • 【Langchain学习笔记(二)】Langchain安装及使用示例
  • HIVE如何注册UDF函数
  • nodejs:express + js-mdict 网页查询英汉词典,能播放.spx 声音
  • Mac上搭建k8s环境——Minikube