fastjson反序列化TemplatesImpl】的更多相关文章

环境参考第一个链接,直接用IDEA打开 编译EvilObject.java成EvilObject.class 先看poc,其中NASTY_CLASS为TemplatesImpl类,evilCode是EvilObject.class base64编码: final String evilClassPath = "E:\\Struts2-Vulenv-master\\PoCs-fastjson1241\\src\\main\\java\\org\\lain\\poc\\TemplatesImpl\\…
0. 前言 记录在FastJson反序列化RCE漏洞分析和利用时的一些细节问题. 1. TemplatesImpl的利用链 关于 parse 和 parseObject FastJson中的 parse() 和 parseObject()方法都可以用来将JSON字符串反序列化成Java对象,parseObject() 本质上也是调用 parse() 进行反序列化的.但是 parseObject() 会额外的将Java对象转为 JSONObject对象,即 JSON.toJSON().所以进行反序…
Fastjson反序列化漏洞概述 ​ 背景 在推动Fastjson组件升级的过程中遇到一些问题,为帮助业务同学理解漏洞危害,下文将从整体上对其漏洞原理及利用方式做归纳总结,主要是一些概述性和原理上的东西. 漏洞原理 多个版本的Fastjson组件在反序列化不可信数据时会导致代码执行.究其原因,首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过"@type"指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分g…
Java安全之Fastjson反序列化漏洞分析 首发:先知论坛 0x00 前言 在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础.利于后面的漏洞分析. 0x01 Fastjson使用 在分析漏洞前,还需要学习一些Fastjson库的简单使用. Fastjson概述 FastJson是啊里巴巴的的开源库,用于对JSON格式的数据进行解析和打包.其实简单的来说就是处理json格式的数据的.例如将json转换成一个类.或者是将一个类转换成一段json数据.在我前面的学习…
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.…
0X00 前言 Java中的Fastjson曾经爆出了多个反序列化漏洞和Bypass版本,而在.Net领域也有一个Fastjson的库,作者官宣这是一个读写Json效率最高的的.Net 组件,使用内置方法JSON.ToJSON可以快速序列化.Net对象.让你轻松实现.Net中所有类型(对象,基本数据类型等)和Json之间的转换,fastjson是一个开源的Json.Net库,下载地址 http://www.codeproject.com/Articles/159450/fastJSON,反序列过…
在使用springmvc时,我们通常会定义类似这样的通用类与前端进行交互,以便于前端可以做一些统一的处理: public class Result<T> { private int ret; private String msg; private T data; // 此处省略getter和setter方法 } 这样的类序列化为json后,js反序列化处理起来毫无压力.但是如果rest接口的消费端就是java呢,java泛型的类型擦除却容易引入一些障碍. 一个反序列化的迭代 先定义一个类,后面…
前言 最近护网期间,又听说fastjson传出“0day”,但网上并没有预警,在github上fastjson库中也有人提问关于fastjson反序列化漏洞的详情.也有人说是可能出现了新的绕过方式.不管怎样这都激起了我研究该漏洞的欲望,以前也研究过java的反序列化漏洞,但是没有具体研究过fastjson这个,借此机会好好分析下这个洞. 正文 fastjson主要功能就是实现对象和json字符串相互进行转换,这样方便传输.先简单了解下fastjson的用法,如下图所示,一般通过JSONObjec…
今天碰到一个问题,使用fastjson反序列化,就是将JSON解析成javaBean时,一个字段值为null.后面经查,是JavaBean中的set方法写错了,fastJson解析的是利用反射通过setXxx()为对象赋值,这也就是为什么我们的javabean必须有getXxx()和setXxx()方法的原因.而且这个get和set方法必须遵循标准驼峰原则.…
利用fastjson反序列化json为对象和对象数组 利用 fastjosn 将 .json文件 反序列化为 java.class 和 java.util.List fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发. [主要特点] 1.快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson) 2.强大(支持普通JDK类包括任意Java Bean Class.Collection.Map.Date或enum) 3.…
解决fastjson反序列化日期0000-00-00失败的方案 22 Jul 2016 一.案例场景复原 示例场景里涉及两个class:TestDemo.java, DateBeanDemo.java. // DateBeanDemo.java public class DateBeanDemo { /** * dateStr field with Date.class */ private Date dateStr; /** * Get dateStr <br> * * @return Re…
各位看官大家下午好,FastJson想必大家都很熟悉了,很常见的Json序列化工具.今天在下要和大家分享一波FastJson反序列化和构造函数之间的一点小秘密. 下面先进入大家都深恶痛绝的做题环节.哈哈哈... /** * @创建人:Raiden * @Descriotion: * @Date:Created in 15:53 2020/3/21 * @Modified By: */ public class User { private String name; private String…
fastjson反序列化rce实际案例利用全过程: 存在问题网站:http://***.com/ 在网站上寻找一些安全漏洞的时候,发现一条json数据包 数据包如下: POST /*** HTTP/1.1 Host: *** Connection: close Content-Length: 100 Accept: application/json, text/plain, */* Content-Type: application/json;charset=UTF-8 Referer: * A…
Fastjson反序列化漏洞复现 0x00 前言 对Fastjson反序列化漏洞进行复现. 0x01 漏洞环境 靶机环境:vulhub-fastjson-1.2.24 ip:172.16.10.18 端口:8090 攻击机环境:kali,ip:192.168.82.130 0x02 漏洞利用 (1)首先使用docker起一个fastjson反序列化漏洞环境: 访问环境页面如下: (2)RMI利用方式 先编写好攻击脚本,反弹shell到kali上: public class Exploit { p…
Fastjson反序列化漏洞基础 FastJson是alibaba的一款开源JSON解析库,可用于将Java对象转换为其JSON表示形式,也可以用于将JSON字符串转换为等效的Java对象. 0x0 简单使用 pom.xml加入FastJson <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24<…
fastjson反序列化-JdbcRowSetImpl利用链 JdbcRowSetImpl利用链 fastjson反序列化JdbcRowSetImpl - Afant1 - 博客园 (cnblogs.com) 这里涉及了JNDI与RMI的概念. 其本质为JNDI注入. 附上示例代码 JdbcRowSetImplPoC.java package org.lain.poc.poclist; import com.alibaba.fastjson.JSONObject; import com.alib…
Fastjson真-简-介 fastjson是由alibaba开发并维护的一个json工具,以其特有的算法,号称最快的json库 fastjson的使用 首先先创一个简单的测试类User public class user { public String username; public String password; public user(String username, String password) { this.username = username; this.password…
据国家网络与信息安全信息通报中心监测发现,开源Java开发组件Fastjson存在反序列化远程代码执行漏洞.攻击者可利用上述漏洞实施任意文件写入.服务端请求伪造等攻击行为,造成服务器权限被窃取.敏感信息泄漏等严重影响. 据统计,此次事件影响Fastjson 1.2.80及之前所有版本.目前, Fastjson最新版本1.2.83已修复该漏洞. 葡萄城提醒广大开发者:请及时排查梳理受影响情况,在确保安全的前提下修复漏洞.消除隐患,提高网络系统安全防护能力,严防网络攻击事件. 漏洞描述 5月23日,…
0x01 Brief Description java处理JSON数据有三个比较流行的类库,gson(google维护).jackson.以及今天的主角fastjson,fastjson是阿里巴巴一个开源的json相关的java library,地址在这里,https://github.com/alibaba/fastjson,Fastjson可以将java的对象转换成json的形式,也可以用来将json转换成java对象,效率较高,被广泛的用在web服务以及android上,它的JSONStr…
现在思路还是有点乱,希望后面能重新写 先上pon.xml 包 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/…
之前的文章显示字符太多 拒绝显示  只好分为两篇了 这样我们只需要找到可以利用的类,构造poc链就好了,这个和以前的java反序列化漏洞类似,先不说.网上最早的poc是使用com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl.构造如下json字符串 { "@type" : "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl", &quo…
重要漏洞利用poc及版本 我是从github上的参考中直接copy的exp,这个类就是要注入的类 import java.lang.Runtime; import java.lang.Process; public class Exploit { public Exploit() { try{ // 要执行的命令 String commands = "calc.exe"; Process pc = Runtime.getRuntime().exec(commands); pc.wait…
fastjson 1.2.24反序列化漏洞复现 先写一个正常的使用 fastjson的web服务 我们使用 springboot创建 主要是pom.xml 里面要添加fastjson fastjson要求小于等于 1.2.24 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.23</version…
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.aliba…
package cn.jsonlu.passguard.utils; import com.alibaba.fastjson.JSON; import java.lang.reflect.Type; import java.util.HashMap; /** * @author JsonLu * @email jsonlu@qq.com * @desc 反序列化,将属性名1=属性值1&属性名2=属性值2转换为对象类型 * @since 2016/2/23 21:40 */ public clas…
利用 fastjson等 反序列化时需要注意,他可能会用到 默认的构造函数,如果没有默认构造函数,某些场景下可能会出现 反序列化熟悉为空的情况,如下图所示:…
比赛遇到了,一直没利用成功,这里做个记录. 环境搭建 首先用 vulhub 搭建 fastjson 的漏洞环境. 漏洞环境程序的逻辑为接收 body 的数据然后用 fastjson 解析. 漏洞利用 首先我们需要确认是否存在漏洞,可以采取让服务器发请求到我们的公网 vps POST / HTTP/1.1 Host: 192.168.245.128:8080 Pragma: no-cache Cache-Control: no-cache Upgrade-Insecure-Requests: 1…
第一种情况是从后台拿到数据,进行反序列化,反序列化格式时间:试了一下很多网上的方法,最后发现还是在实体类上面的日期字段加上如下注解,可以完成格式化操作,否则默认就都是时间戳的格式: @JSONField (format="yyyy-MM-dd HH:mm:ss") public Date birthday; @JSONField (format="yyyy-MM-dd HH:mm:ss") public Date birthday;  第二种情况是:response…
fastJson反序列化为类对象时,反序列化赋值的属性只会是你构造器上写的属性. 所以部分属性值为null的原因是属性没有加在构造器上的原因. 直接加个无参数的默认构造器即可解决.或者把null属性加构造器上. 如下图 基类的两个属性不会被反序列化赋值!需要加上默认构造器如下图.…
分析一个线上内存告警的问题时,发现了造成内存告警的原因是使用fastjson不当导致的. 分析dump发现com.alibaba.fastjson.util.IdentityHashMap$Entry对象比较多. 查找相关文档 fastjson IdentityHashMap 内存泄漏排查 (这篇文档分析描述的情况与我们遇到的问题的原因一样,是使用com.alibaba.fastjson.util.ParameterizedTypeImpl不当导致的) fastjon官方在很早的版本就修复过类似…