fasjson 1.2.24 反序列化漏洞超详细分析
💡
原文中文,约1800字,阅读约需5分钟。
📝
内容提要
本文分析了漏洞的调用流程,包括参数传递、反序列化器创建与注册、字段类型动态解析等,最终导致远程JNDI服务的命令执行。
🎯
关键要点
- 前言部分介绍了漏洞的基础调用流程分析。
- 分析了参数传递和判断是否为空的过程。
- 获取解析器并调用DefaultJSONParser构造方法。
- 通过反射获取类的成员变量和方法,进行动态解析。
- 处理不同类型的字段,包括枚举、数组、集合和Map。
- 注册反序列化器并调用其deserialze方法进行反序列化。
- 根据字段类型动态调用对应的解析方法完成数据转换。
- 最终通过lookup()加载远程JNDI服务并执行命令。
❓
延伸问答
fasjson 1.2.24的反序列化漏洞是如何触发的?
该漏洞通过调用parse方法传递参数,经过一系列判断和解析,最终导致远程JNDI服务的命令执行。
反序列化过程中如何处理不同类型的字段?
反序列化过程中,使用不同的解析器处理枚举、数组、集合和Map等类型,确保正确解析数据。
在反序列化过程中,如何动态加载类?
通过调用loadClass方法,动态加载指定的类名,并返回对应的Class对象。
反序列化器是如何注册的?
反序列化器通过调用putDeserializer方法进行注册,以便在反序列化时使用。
fasjson 1.2.24漏洞的最终影响是什么?
漏洞的最终影响是通过lookup()加载远程JNDI服务并执行恶意命令,可能导致系统被攻击。
如何判断反序列化的字段类型?
通过状态判断和字段名匹配,从反序列化器数组中提取目标字段的原始名称,进而判断字段类型。
➡️