首页 > 其他分享 >fastjson 1.2.24 反序列化漏洞(审计分析)

fastjson 1.2.24 反序列化漏洞(审计分析)

时间:2023-04-14 16:47:44浏览次数:41  
标签:fastjson 24 调用 跟进 JDK 传入 序列化 方法

环境

JDK 8u181

Fastjson 1.2.24

POC

跟进 parse 方法

跟进到底层deserialze 方法

Poc 中传入的 dataSourceName : ldap://192.168.3.229:8084/vnSYPYwMs 值

这里实际对应 setDataSourceName 方法,调用此方法并传入 ldap

跟进 setDataSourceName 方法,这里只是简单赋值

 

步出回此方法

继续步出,进入parseRest方法

跟进 deserialze 方法

 

 

 继续跟进 setValue 方法

此处通过 invoke 反射实现方法

POC 传入的 autoCommit : true 对应

setAutoCommit 方法

跟进 connect 方法

此处通过 lookup 实现 ldap 请求

检测到 LDAP 请求

如果是LDAP请求,需要JDK版本<= 8u181

如果是RMI请求,需要JDK版本<= 8u112

那为什么会调用对应值set方法呢?尝试实验

先构造加载类

再构造Test类

 

通过输出分析发现 fastjson 的反序列化方法,parse 和 parseObject 类中

1、在调用 parseObject 方法时,会默认调用所有get方法,并调用传入参数的set方法

2、在调用 parse 方法时,只调用传入参数的set方法

所以可以通过 com.sun.rowset.JdbcRowSetImpl 类的 setDataSourceName 先进行赋值

再通过 com.sun.rowset.JdbcRowSetImpl 类的 autoCommit 方法去间接调用 connect 方法,去执行 lookup 方法执行 ladp 请求

 

标签:fastjson,24,调用,跟进,JDK,传入,序列化,方法
From: https://www.cnblogs.com/shaoqiblog/p/17318756.html

相关文章

  • COSC 2408 Assignment 2
    ProgrammingProject1COSC2408Assignment2AssessmentTypeThisisagroupassignment.Youneedtohaveformedyourcanvasgroupbeforesubmittingthisassignment.Submiton-lineviaCanvas→Assignments→Assignment2.Marksawardedformeetingrequirements......
  • pytest + yaml 框架 -24.单个用例中参数化功能实现
    前言早期版本参数化功能实现只支持在config中全局的地方写parameters关键字,只实现了基本的功能。v1.2.1版本对parameters参数化功能做了进一步的细分,支持在case用例中针对单个用例的参数化了。parameters参数化用例参数化的实现,我设计了2种实现方式参数化方式1:con......
  • BZOJ 2243 [SDOI2011] 染色 (树链剖分)
    题目地址:BZOJ2243普通的树链剖分,用线段树维护区间段数与最左边和最右边的颜色。然后当合并区间的时候判断一下左儿子的右端与右儿子的左端是否相同,若相同,则将和减去1.同样,在迭代求值的过程中,也要记录下上条链的最顶端的颜色。代码如下:#include<iostream>#include<strin......
  • HDU 2473 Junk-Mail Filter(并查集的删除操作)
    题目地址:HDU2473这题以前碰到过,没做出来。。现在又做了做,还是没做出来。。、、这题涉及到并查集的删除操作。想到了设一个虚节点,但是我把虚节点设为了要删除的点的父节点,一直是栈溢出,目测是无限递归了。看了看别人的做法,原来只要建一个映射就可以了,虚节点是作为的新的映射,每......
  • AP6608高效率1.2MHz 2-24V 2A升压转换IC
    FEATURES•Integrated80mΩPowerMOSFET•2Vto24VInputVoltage•1.2MHzFixedSwitchingFrequency•Internal4ASwitchCurrentLimit•AdjustableOutputVoltage•InternalCompensation•Upto28VOutputVoltage•AutomaticPulseFrequencyModulatio......
  • P2490 [SDOI2011]黑白棋
    题意:一个1*n的棋盘上有k个棋子,一半是黑一半是白,并且是白黑白黑白黑...白黑的形式,A每次最多可以将d个白棋子向右移动,B每次最多可以将d个黑棋子向左移动,不能不移动棋子,谁最后无法移动棋子谁就输了,A先手,问有多少种布局可以使得A获胜SolutionNim-K博弈+动态规划可以把棋子之间的间......
  • java.io.Serializable(序列化)接口
     一、概念Java对象序列化的意思就是将对象的状态转化成字节流,以后可以通过这些值再生成相同状态的对象。对象序列化是对象持久化的一种实现方法,它是将对象的属性和方法转化为一种序列化的形式用于存储和传输。反序列化就是根据这些保存的信息重建对象的过程。序......
  • 第24届中国环博会丨计讯物联豪华新品首秀,邀您共见卓越
    2023年4月19日-23日,第24届中国环博会在上海新国际博览中心正式拉开帷幕。本届展会将荟集全球顶级污水处理、给水排水、固体废弃物处理、资源回收利用、大气污染治理、室内空气污染治理、场地修复、环境监测、环境服务业等环境污染治理领域的前沿技术与最新解决方案。  计讯......
  • 24-springcloud-config-1-配置中心
    配置中心:  用于解决服务配置管理问题;1、传统配置方式:配置信息分散到系统各个角落方式,配置文件或者在代码中;2、集中式配置中心:将应用系统中对配置信息的管理作为一个新的应用功能模块,进行集中统一管理,并且提供额外功能;3、分布式配置中心:在分布式、微服务架构中,独立的配置......
  • C# Json序列化,设置驼峰命名(字段首字母小写)
    相关代码:varserializerSettings=newJsonSerializerSettings{//设置为驼峰命名ContractResolver=newCamelCasePropertyNamesContractResolver()};varresult=JsonConvert.Ser......