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服务并执行恶意命令,可能导致系统被攻击。

如何判断反序列化的字段类型?

通过状态判断和字段名匹配,从反序列化器数组中提取目标字段的原始名称,进而判断字段类型。

➡️

继续阅读