漏洞形成的原因

FASTJSON 漏洞原理

如果我们可以控制JNDI客户端中传入的url 就可以起一个恶意的RMI 让JNDI来加载我们的恶意类从而进行命令执行

Log4j 漏洞原理

Log4j2引入Lookup的统一接口 接口允许查找 输出 实现对象功能 由于会解析打印JNDI的数据 配合JNDI远程下载ldap服务构造的恶意class

Fastjson

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

大致意思是可以实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。

解析json过程 支持使用auto type实例化一个类 调用类的set/get访问属性

JNDI

NDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一。JNDI提供统一的客户端API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,可以用来定位用户、网络、机器、对象和服务等各种资源。比如可以利用JNDI再局域网上定位一台打印机,也可以用JNDI来定位数据库服务或一个远程Java对象。JNDI底层支持RMI远程对象,RMI注册的服务可以通过JNDI接口来访问和调用。

JNDi是应用程序设计的Api,JNDI可以根据名字动态加载数据,支持的服务主要有以下几种:

DNS、LDAP、CORBA对象服务、RMI

RMI

RMI(Remote Method Invocation)是专为Java环境设计的远程方法调用机制,远程服务器实现具体的Java方法并提供接口,客户端本地仅需根据接口类的定义,提供相应的参数即可调用远程方法。