[基础知识]
Java 中 RMI、JNDI、LDAP、JRMP、JMX、JMS那些事儿(上)
[漏洞学习]
Spring jndi注入:
攻击Java中的JNDI、RMI、LDAP(二) - Y4er的博客
jndi配合rmi实现反序列化命令执行。原理就是spring框架的lookup参数可控,就可以让server端去请求我们自己构造的rmi服务,其中包括恶意代码。其中利用到jndi的特性:
由于远程调用的类过大或者不稳定,JNDI提出了Naming
References的方法,返回相应的Reference而不返回具体的obj。统一由JNDI的请求端去加载指定的地址上的obj
也就是说我们搭建一个带有恶意类的服务器,其中这个服务器地址绑定在rmi服务上。我们发送给带有spring漏洞的服务器我们的rmi地址,让他去lookup,然后去访问我们的服务器,下载恶意类并反序列化。
利用过程就是这张图
服务端启动:
客户端向服务端发送恶意代码导致命令执行: