从0开始fastjson漏洞分析https://www.cnblogs.com/piaomiaohongchen/p/14777856.html
有了前文铺垫,可以说对fastjson内部机制和fastjson的反序列化处理已经了然于心
大致流程如下,简单说下:当调用Parse的时候,会先搜索@type,然后通过JSONSCanner判断用户的json输入,判断开头是否是{和",然后获取我们的输入@type类,通过JSONSCannerSymbool去解析,获取我们@type的值,使用集合的方式存储这个恶意类(就是我们@type的值),对恶意类序列化,反序列化,通过反射调用类中所有方法(get/set)和类中的属性,把获取到的方法进行处理,对获取到的属性进行序列化和反序列化,并使用集合封装处理.判断是否是set开头的方法,如果是,把set**后面的字段序列化然后反序列化.比如我们的bytecodes,对我们的输入解码,那么我们的输入就是编码
不鸡肋的利用链:JNDI && JdbcRowSetImpl利⽤链
先学习jndi:
jdni具体含义:
JNDI 即Java Naming and Directory Interface(JAVA 命名和目录接口),那么Java 命名的目的就是为了记录一些不方便记录的内容,就像DNS 中的域名与IP 的关系,存在一一对应的关系。 JNDI 被定义为独立于任何特定的目录服务实现。因此,可以以通用方式访问各种目录。