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.rhkb.cn/news/14522.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes架构原则和对象设计(三)

云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes常见问题解答 本文主要对kubernetes的核心技术概念和核心A…

每日学习 设计模式 五种不同的单例模式

狮子大佬原文 https://blog.csdn.net/weixin_40461281/article/details/135050977 第一种 饿汉式 为什么叫饿汉,指的是"饿" 也就是说对象实例在程序启动时就已经被创建好,不管你是否需要,它都会在类加载时立即实例化,也就是说 实例化是在类加载时候完成的,早早的吃…

Transformer 详解:了解 GPT、BERT 和 T5 背后的模型

目录 什么是 Transformer? Transformer如何工作? Transformer 为何有用? 常见问题解答:机器学习中的 Transformer 在技​​术领域,突破通常来自于修复损坏的东西。制造第一架飞机的人研究过鸟类。莱特兄弟观察了秃鹫如何在气流中保持平衡,意识到稳定性比动力更重要。…

21.2.6 字体和边框

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 通过设置Rang.Font对象的几个成员就可以修改字体,设置Range.Borders就可以修改边框样式。 【例 21.6】【项目&#xff…

1456. 定长子串中元音的最大数目

目录 一、题目二、思路2.1 解题思路2.2 代码尝试2.3 疑难问题 三、解法四、收获4.1 心得4.2 举一反三 一、题目 二、思路 2.1 解题思路 维护一个统计变量,出入时间窗口就判断 2.2 代码尝试 class Solution { public:int maxVowels(string s, int k) {int sum0;i…

[LeetCode]day16 242.有效的字母异位词

242. 有效的字母异位词 - 力扣(LeetCode) 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的 字母异位词 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat"…

蓝桥杯---力扣题库第38题目解析

文章目录 1.题目重述2.外观数列举例说明3.思路分析(双指针模拟)4.代码说明 1.题目重述 外观数列实际上就是给你一串数字,我们需要对于这个数据进行一个简单的描述罢了; 2.外观数列举例说明 外观数列都是从1开始的,也…

Linux网卡配置方法

1、查看IP ip a 网卡状态 UP/down 2、查看网关 如果显示route命令未找到需要下载net-tools软件包 route -n 3、查看DNS服务器地址 DNS服务器地址会存放在/etc/resolv.conf文件中 使用cat命令可以查看 cat /etc/resolv.conf 4、修改网卡配置 方法1)编…

DeepSeek使用技巧大全(含本地部署教程)

在人工智能技术日新月异的今天,DeepSeek 作为一款极具创新性和实用性的 AI,在众多同类产品中崭露头角,凭借其卓越的性能和丰富的功能,吸引了大量用户的关注。 DeepSeek 是一款由国内顶尖团队研发的人工智能,它基于先进…

消费电子产品中的噪声对TPS54202的影响

本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 在白色家电领域,降压转换器的应用非常广泛,为了实现不同的功能就需要不同的电源轨。TPS542…

无限使用Cursor

原理:运行程序获得15天的免费试用期,重新运行程序重置试用期,实现无限使用。免费的pro账号,一个月有250的高级模型提问次数。 前提:已安装cursor cursor-vip工具:https://cursor.jeter.eu.org?p95d60efe…

Linux之文件IO前世今生

在 Linux之文件系统前世今生(一) VFS中,我们提到了文件的读写,并给出了简要的读写示意图,本文将分析文件I/O的细节。 一、Buffered I/O(缓存I/O)& Directed I/O(直接I/O&#…

【计组】实验五 J型指令设计实验

目录 一、实验目的 二、实验环境 三、实验原理 四、实验任务 代码 一、实验目的 1. 理解MIPS处理器指令格式及功能。 2. 掌握lw, sw, beq, bne, lui, j, jal指令格式与功能。 3. 掌握ModelSim和ISE\Vivado工具软件。 4. 掌握基本的测试代码编写和FPGA开发板使用方法。 …

扩展知识--缓存和分时复用cpu

在多核CPU中,缓存和分时复用CPU是两个重要的概念,它们分别涉及硬件架构和资源管理策略。以下将从缓存的层次结构、工作原理以及分时复用CPU的概念进行详细解释。 一、多核CPU中的缓存 缓存的定义与作用 缓存(Cache)是位于CPU与主…

人工智能:从概念到未来

人工智能:从概念到未来 一、引言 在当今数字化时代,人工智能(Artificial Intelligence,AI)已从科幻小说和电影中的幻想逐渐走进现实,成为推动社会进步和经济发展的关键力量。它正在深刻地改变着我们的生活…

nvm:node 版本管理器

一、先安装git Git 安装完成后执行 git --version查看版本号是否安装成功 二、安装nvm (参考链接:mac 安装nvm详细教程 - 简书) 官网(https://github.com/nvm-sh/nvm/blob/master/README.md)查看最新版本安装命令 …

【1】深入解析 SD-WAN:从思科 SD-WAN 视角看现代网络发展

1. 什么是 SD-WAN? SD-WAN(软件定义广域网,Software-Defined Wide Area Network)是一种基于 SDN(软件定义网络)的广域网技术。它利用软件控制来管理广域网连接、流量和安全策略,从而优化数据传输,提高网络可用性。 传统的广域网(WAN)通常依赖专线(如 MPLS)连接分…

C语言基础学习之环境准备

写在前面 本文看下如何在win环境中使用vs code开发C程序。 1:安装gcc 从这里下载,解压,配置环境变量,执行gcc -v验证: C:\Windows\system32>gcc -v Using built-in specs. COLLECT_GCCgcc COLLECT_LTO_WRAPPERD:/programs/…

LabVIEW之TDMS文件

在很多场合,早期的LabVIEW版本不得不借助常规的数据库来做一些数据管理工作,但常规数据库对于中高速数据采集显然是不合适的,因为高速数据采集的数据量非常大,用一般的数据库无法满足存储数据的要求。 直到TDM(Technical Data Ma…

设置IDEA的内存大小,让IDEA更流畅: 建议设置在 2048 MB 及以上

文章目录 引言I 更改内存设置基于窗口界面进行内存设置修改内存配置文件II IDEA中的一些常见问题及其解决方案引言 方式一:基于窗口界面进行内存设置方式二:修改内存配置文件I 更改内存设置 基于窗口界面进行内存设置 打开IDEA,上方菜单栏 Help > Change Memory Settin…