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

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.kler.cn/a/538351.html

相关文章:

  • C# 封送和远程编程介绍
  • CMOS 图像传感器市场趋势和新兴应用
  • 07苍穹外卖之redis缓存商品、购物车(redis案例缓存实现)
  • 语言月赛 202308【小粉兔做麻辣兔头】题解(AC)
  • 利用deepseek参与软件测试 基本架构如何 又该在什么环节接入deepseek
  • css:怎么设置图片不变形
  • Composo:企业级AI应用的质量守门员
  • 四元数:连接四维时空与三维旋转的数学桥梁
  • 超越传统IDE:Cursor智能编码介绍
  • Mysql系列之--InnoDB存储引擎
  • 基于 Linux 与 CloudFlare 的智能实时 CC/DDoS 防御方案
  • Vue 3 30天精进之旅:Day 18 - 测试Vue组件
  • DeepSeek模拟阿里面试官——java基础(面向对象)
  • 什么是网络安全审计?网络安全审计的作用...
  • 10vue3实战-----实现登录的基本功能
  • 【CubeMX-HAL库】STM32F407—无刷电机学习笔记
  • postgresql 游标(cursor)的使用
  • 《从入门到精通:蓝桥杯编程大赛知识点全攻略》(八)-摘花生、地宫取宝
  • SQL语言的游戏开发
  • zzcms接口index.php id参数存在SQL注入漏洞
  • 电路研究9.3——合宙Air780EP中的AT开发指南(含TCP 示例)
  • 安全测试|用例设计基本步骤和指南
  • 跟我学C++高级篇——CRTP的高级应用
  • ZU47DR 100G光纤 高性能板卡
  • 【Elasticsearch】significant_terms聚合
  • ollama linux下载