fastjson及其反序列化分析 源码取自 https://www.github.com/ZH3FENG/PoCs-fastjson1241 参考 (23条消息) Json详解以及fastjson使用教程_srj1095530512的博客-CSDN博客_fastjson parse方法和parseObject方法区别: parse()及parseObject()进行反序列化时的细节区别在于,parse() 会识别并调用目标类的 setter 方法,而 parseObject() 由于要将返回值转…
Java安全之SnakeYaml反序列化分析 目录 Java安全之SnakeYaml反序列化分析 写在前面 SnakeYaml简介 SnakeYaml序列化与反序列化 常用方法 序列化 反序列化 SnakeYaml反序列化漏洞 影响版本 漏洞原理 漏洞复现 调试分析 小结 SPI机制 ScriptEngineManager分析 其他利用姿势 C3P0 ScriptEngineManager Reference 写在前面 学习记录 SnakeYaml简介 snakeyaml包主要用来解析yaml格…
反序列化分析(二)--CommonCollections1 链子分析 首先新建一个TransformedMap,其中二三参数为可控,后续要用到 当TransformedMap执行put方法时,会分别执行transformKey和transformValue方法 可以看到,两个方法中,都有transform方法,但参数不可控 找能触发InvokerTransform的transform方法,而且是无需借用外部传参的那种 分析cc链的时候,最大的体会就是分析可以,但不明白为什么可以想到这么绝的方法?…
JSONObject.DEFFAULT_DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.mmm"; Productorder tmp1 = JSONObject.parseObject(tmp.toJSONString(), Productorder.class); 方案2:新增date反序列化解析器 主要思路是以fastjson原生的DateDeserializer.class为基础,定制化一个可以解析0000-00-00的日期反序列化解析器.该方式是fas…
此漏洞是基于CVE-2015-4852漏洞进行黑名单的绕过,CVE-2015-4852补丁主要应用在三个位置上 weblogic.rjvm.InboundMsgAbbrev.class :: ServerChannelInputStream weblogic.rjvm.MsgAbbrevInputStream.class weblogic.iiop.Utils.class 所以如果能找到可以在其readObject中创建自己的InputStream的对象,并且不是使用黑名单中的ServerCha…
fastJson是很常用的序列化工具,用了这么久一直想底层看一下它的设计,探究一下它序列化和反序列化效率高的秘密.现在从最基础的用法开始,一点点揭开fastJson神秘的面纱.(版本:1.2.50) 实际工程里,最常用的就是序列化和反序列化: ResultDO resultDO = new ResultDO(); String jsonStr = JSON.toJSONString(resultDO); ResultDO resultDO2 = JSON.parseObject(jsonStr,…
背景:曾经遇到一个很麻烦的事情,就是一个json串中有很多占位符,需要替换成特定文案.如果将json转换成对象后,在一个一个属性去转换的话就出出现很多冗余代码,不美观也不是很实用. 而且也不能提前在json串中替换,因为替换的文案会因为某些变量发生改变.就比如国际化,在中文的时候应该是"你好",而在英文的时候要出现"Hello". 所以我想到一个方法,为什么不能再json反序列化的时候,把这些都做好呢? 以下的代码介绍的是,我自己扩展的一点点fastjson代码,增…
0x01.环境搭建 下载地址:https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4 环境:Tomcat 8.5.27 + idea 2020.2 + jdk 1.8 +maven 3.6 下载之后之后直接打开,并open这个web文件夹即可,其他自行百度就行,其中还需要导入一些jstl的jar等等 0x02.漏洞原理 shiro默认使用了CookieRememberMeManager,其处理cookie的流程是: 得到reme…
拖了很久的shiro分析 漏洞概述 Apache Shiro <= 1.2.4 版本中,加密的用户信息序列化后存储在Cookie的rememberMe字段中,攻击者可以使用Shiro的AES加密算法的默认密钥来构造恶意的Cookie rememberMe值,发送到Shiro服务端之后会先后进行Base64解码.AES解密.readObject()反序列化,从而触发Java原生反序列化漏洞,进而实现RCE. 该漏洞的根源在于硬编码Key. 漏洞复现 使用shiroattack工具 Dnslog接收…
将反序列化的对象封装进了weblogic.corba.utils.MarshalledObject,然后再对MarshalledObject进行序列化,生成payload字节码.由于MarshalledObject不在WebLogic黑名单里,可正常反序列化,在反序列化时MarshalledObject对象调用readObject时对MarshalledObject封装的序列化对象再次反序列化,可以绕过黑名单的限制 先给出poc,导入weblogic.jar和ysoserial.jar: imp…
LimitActionConfig是ActionConfig的子类,RuleConfig的有个属性是ActionConfig,需要反序列化成LimitActionConfig ParserConfig parserConfig = new ParserConfig() { @Override public ObjectDeserializer getDeserializer(Type type) { if (type == ActionConfig.class) { return super.g…
目录 0x00 废话 0x01 简单介绍 FastJson的简单使用 0x02 原理分析 分析POC 调试分析 0x03 复现过程 0x04 参考文章 0x00 废话 balabala 开始 0x01 简单介绍 介绍:FastJson是一款由阿里开发的JSON库 影响版本:1.2.22-24 官方通告:https://github.com/alibaba/fastjson/wiki/security_update_20170315 补丁:https://github.com/alibaba/fa…
Java安全之Fastjson反序列化漏洞分析 首发:先知论坛 0x00 前言 在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础.利于后面的漏洞分析. 0x01 Fastjson使用 在分析漏洞前,还需要学习一些Fastjson库的简单使用. Fastjson概述 FastJson是啊里巴巴的的开源库,用于对JSON格式的数据进行解析和打包.其实简单的来说就是处理json格式的数据的.例如将json转换成一个类.或者是将一个类转换成一段json数据.在我前面的学习…
Fastjson 1.2.22-24 反序列化漏洞分析(1) 前言 FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象. 影响版本:1.2.22-24 官方通告:https://github.com/alibaba/fastjson/wiki/security_update_20170315 补丁:https://github.com/alibaba/fastjson/commit/d0757…
Fastjson反序列化漏洞分析 1.2.22-1.2.24 Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java Object之间互相转换,提供两个主要接口JSON.toJSONString和JSON.parseObject/JSON.parse来分别实现序列化和反序列化操作. 环境 Tomcat 8.5.56 org.apache.tomcat.embed 8.5.58 fastjson 1.2.24 漏洞版本: fastjson 1.2.…
Fastjson反序列化漏洞概述 ​ 背景 在推动Fastjson组件升级的过程中遇到一些问题,为帮助业务同学理解漏洞危害,下文将从整体上对其漏洞原理及利用方式做归纳总结,主要是一些概述性和原理上的东西. 漏洞原理 多个版本的Fastjson组件在反序列化不可信数据时会导致代码执行.究其原因,首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过"@type"指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分g…
关于fastjson漏洞利用参考:https://www.cnblogs.com/piaomiaohongchen/p/10799466.html fastjson这个漏洞出来了很久,一直没时间分析,耽搁了,今天捡起来 因为我们要分析fastjson相关漏洞,所以我们先去学习fastjson的基础使用,如果我们连fastjson都不知道,更何谈漏洞分析呢? 首先先搭建相关漏洞环境: 使用maven,非常方便我们切换相关漏洞版本: pom.xml: <?xml version="1.0&qu…
前言 最近护网期间,又听说fastjson传出“0day”,但网上并没有预警,在github上fastjson库中也有人提问关于fastjson反序列化漏洞的详情.也有人说是可能出现了新的绕过方式.不管怎样这都激起了我研究该漏洞的欲望,以前也研究过java的反序列化漏洞,但是没有具体研究过fastjson这个,借此机会好好分析下这个洞. 正文 fastjson主要功能就是实现对象和json字符串相互进行转换,这样方便传输.先简单了解下fastjson的用法,如下图所示,一般通过JSONObjec…
1.问题描述 在使用redis时,配置自定义序列化redisTemplate为FastJsonRedisSerializer .  1 /** 2 * 自定义redis序列化器 3 */ 4 @SuppressWarnings("unchecked") 5 @Bean("redisTemplate") 6 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory f…
从0开始fastjson漏洞分析https://www.cnblogs.com/piaomiaohongchen/p/14777856.html 有了前文铺垫,可以说对fastjson内部机制和fastjson的反序列化处理已经了然于心 大致流程如下,简单说下:当调用Parse的时候,会先搜索@type,然后通过JSONSCanner判断用户的json输入,判断开头是否是{和",然后获取我们的输入@type类,通过JSONSCannerSymbool去解析,获取我们@type的值,使用集合的方式…
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 哈喽大家好啊,我是Hydra~ 在前面的文章中,我们讲过Java中泛型的类型擦除,不过有小伙伴在后台留言提出了一个问题,带有泛型的实体的反序列化过程是如何实现的,今天我们就来看看这个问题. 铺垫 我们选择fastjson来进行反序列化的测试,在测试前先定义一个实体类: @Data public class Foo<T> { private String val; private T obj; } 如果大家对泛型的类型擦除比较熟悉的话,就会…
利用 fastjson等 反序列化时需要注意,他可能会用到 默认的构造函数,如果没有默认构造函数,某些场景下可能会出现 反序列化熟悉为空的情况,如下图所示:…
目前版本的fastjon默认对enum对象使用WriteEnumUsingName属性,因此会将enum值序列化为其Name. 使用WriteEnumUsingToString方法可以序列化时将Enum转换为toString()的返回值:同时override toString函数能够将enum值输出需要的形式.但是这样做会带来一个问题,对应的反序列化使用的Enum的静态方法valueof可能无法识别自行生成的toString(),导致反序列化出错. 如果将节省enum序列化后的大小,可以将enu…
1.问题起因 2017年3月15日,fastjson官方发布安全升级公告,该公告介绍fastjson在1.2.24及之前的版本存在代码执行漏洞,当恶意攻击者提交一个精心构造的序列化数据到服务端时,由于fastjson在反序列化时存在漏洞,可导致远程任意代码执行. 自1.2.25及之后的版本,禁用了部分autotype的功能,也就是”@type”这种指定类型的功能会被限制在一定范围内使用.而由于反序列化对象时,需要检查是否开启了autotype.所以如果反序列化检查时,autotype没有开启,就…
Fastjson反序列化漏洞基础 FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象. 0x0 简单使用 pom.xml加入FastJson <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24<…
据国家网络与信息安全信息通报中心监测发现,开源Java开发组件Fastjson存在反序列化远程代码执行漏洞.攻击者可利用上述漏洞实施任意文件写入.服务端请求伪造等攻击行为,造成服务器权限被窃取.敏感信息泄漏等严重影响. 据统计,此次事件影响Fastjson 1.2.80及之前所有版本.目前, Fastjson最新版本1.2.83已修复该漏洞. 葡萄城提醒广大开发者:请及时排查梳理受影响情况,在确保安全的前提下修复漏洞.消除隐患,提高网络系统安全防护能力,严防网络攻击事件. 漏洞描述 5月23日,…
基于CommonsCollections4的Gadget分析 Author:Welkin 0x1 背景及概要 随着Java应用的推广和普及,Java安全问题越来越被人们重视,纵观近些年来的Java安全漏洞,反序列化漏洞占了很大的比例.就影响程度来说,反序列化漏洞的总体影响也明显高于其他类别的漏洞. 在反序列化漏洞的利用过程中,攻击者会构造一系列的调用链以完成其攻击行为.如何高效的生成符合条件且可以稳定利用的攻击Payload成为了攻击链条中的重要一环,当前已经有很多现成的工具帮助我们完成Payl…
Java安全之FastJson JdbcRowSetImpl 链分析 0x00 前言 续上文的Fastjson TemplatesImpl链分析,接着来学习JdbcRowSetImpl 利用链,JdbcRowSetImpl 的利用链在实际运用中较为广泛,这个链基本没啥限制条件,只需要Json.parse(input)即可进行命令执行. 0x01 漏洞分析 利用限制 首先来说说限制,基于JNDI+RMI或JDNI+LADP进行攻击,会有一定的JDK版本限制. RMI利用的JDK版本≤ JDK 6u…
目录 0 前言 1 Dubbo的协议设计 2 Dubbo中的kryo序列化协议触发点 3 Dubbo中的fst序列化协议触发点 3.1 fst复现 3. 2 思路梳理 4 总结 0 前言 本篇是Dubbo反序列化安全问题的学习和研究第二篇,来看看Dubbo2.x下,由于dubbo的数据包协议设计安全问题,导致攻击者可以选定危险的反序列化协议从而实现RCE,复现漏洞为CVE-2021-45641 Apache Dubbo协议绕过漏洞 1 Dubbo的协议设计 由于Dubbo可以支持很多类型的反序列…
为什么要替换fastjson 工程里大量使用了fastjson作为序列化和反序列化框架,甚至ORM在处理部分字段也依赖fastjson进行序列化和反序列化.那么作为大量使用的基础框架,为什么还要进行替换呢? 原因有以下几点: fastjson太过于侧重性能,对于部分高级特性支持不够,而且部分自定义特性完全偏离了json和js规范导致和其他框架不兼容: fastjson文档缺失较多,部分Feature甚至没有文档,而且代码缺少注释较为晦涩: fastjson的CVE bug监测较弱,很多CVE数据…