Fastjson已被所有人分析了很多次。本文主要分析和比较三个使用链。
有效载荷中的A对象用于绕过它作为缓存。需要关注的是第二个对象
请注意,当依赖人序列化时,将反映属性,调用呼叫
关注,触发,加载远程恶意对象
基于查找
遵循该方法,请参阅加载远程绑定的恶意对象
总结:
请注意,有效负载来自恶意类别,此类应继承
与第一个链相似,通过绕过两个对象,有效载荷是恶意字节码的结果,然后是基本64编码,提供了一个简单的PY脚本
链需要打开参数并反映设置属性。检查官方说明。如果某个属性中没有集合方法,但是当您要设置值时,您需要打开参数。结果,链条更时尚,没有实际意义(实际上,有一个集合课堂中的方法,例如,但名称和不一致)
设置属性时会有判断力
在deepertine期间,fastjson中“ _”的属性将被空替换为空。
调用方法
跟随
然后遵循并验证父类,这说明了为什么有效负载恶意类必须继承该类。如果验证没有问题,则该类将在上述方法中实例化,从而导致RCE
为什么基本64在字节代码上编码?在加深序列化过程中会调用许多类。
遵循方法,请参阅
总结:
此有效载荷适用于1.2.37版,需要将其导入到与Tomcat相关的软件包中
生成工具如下
BCEL的全名是Apache Commons Bcel,Apache Commons项目下的一个子项目,该项目包含在JDK的本机库中。我们可以使用BCEL提供的两个类用于使用:存储库用于转换Java类进入本机字节代码。当然,您还可以使用Javac命令来编译Java文件以生成字节代码。实用程序用于将本机字节码转换为BCER格式的字节代码。
生成的BCEL格式可能如下:
将此格式字符串作为“字节”将实例化。当我们在Fastjson的深层化中构建这条链时
返回有效载荷,开始围绕Fastjson黑白列表。它没有特殊意义。核心部分如下:
此版本使用此功能:FastJSON版本> = 1.2.36时,我们可以使用任何呼叫器的方式。例如,此有效载荷呼叫是x是这个大对象,最后一个调用是C对象的连接。
参考代码
漏洞的触发点是
跟随
跟随,这里的数组是
到达
继续跟随
跟随
跟随
到达,到达最终触发点:
在这里看到JavaObject正是
回到自己
最终触发点在中间控制,用户输入了ClassLoader为AS,并将ClassName设置为此格式,并在方法执行后进行实例化。第二个参数为true时,代码将会在加载课后直接执行。
总结:
Fastjson已被所有人分析了很多次。本文主要分析和比较三个使用链
有效载荷中的A对象用于绕过它作为缓存。需要关注的是第二个对象
请注意,当依赖人序列化时,将反映属性,调用呼叫
关注,触发,加载远程恶意对象
基于查找
遵循该方法,请参阅加载远程绑定的恶意对象
总结:
请注意,有效负载来自恶意类别,此类应继承
与第一个链相似,通过绕过两个对象,有效载荷是恶意字节码的结果,然后是基本64编码,提供了一个简单的PY脚本
链需要打开参数并反映设置属性。检查官方说明。如果某个属性中没有集合方法,但是当您要设置值时,您需要打开参数。结果,链条更时尚,没有实际意义(实际上,有一个集合课堂中的方法,例如,但名称和不一致)
设置属性时会有判断力
在deepertine期间,fastjson中“ _”的属性将被空替换为空。
调用方法
跟随
然后遵循并验证父类,这说明了为什么有效负载恶意类必须继承该类。如果验证没有问题,则该类将在上述方法中实例化,从而导致RCE
为什么基本64在字节代码上编码?在加深序列化过程中会调用许多类。
遵循方法,请参阅
总结:
此有效载荷适用于1.2.37版,需要将其导入到与Tomcat相关的软件包中
生成工具如下
BCEL的全名是Apache Commons Bcel,Apache Commons项目下的一个子项目,该项目包含在JDK的本机库中。我们可以使用BCEL提供的两个类用于使用:存储库用于转换Java类进入本机字节代码。当然,您还可以使用Javac命令来编译Java文件以生成字节代码。实用程序用于将本机字节码转换为BCER格式的字节代码。
生成的BCEL格式可能如下:
将此格式字符串作为“字节”将实例化。当我们在Fastjson的深层化中构建这条链时
返回有效载荷,开始围绕Fastjson黑白列表。它没有特殊意义。核心部分如下:
此版本使用此功能:FastJSON版本> = 1.2.36时,我们可以使用任何呼叫器的方式。例如,此有效载荷呼叫是x是这个大对象,最后一个调用是C对象的连接。
参考代码
漏洞的触发点是
跟随
跟随,这里的数组是
到达
继续跟随
跟随
跟随
到达,到达最终触发点:
在这里看到JavaObject正是
回到自己
最终触发点在中间控制,用户输入了ClassLoader为AS,并将ClassName设置为此格式,并在方法执行后进行实例化。第二个参数为true时,代码将会在加载课后直接执行。
总结: