本篇简单说一下RMI的调用流程和攻击历史,以及分析RMI的JDK源码,对于RMI攻击的各种反序列化并不做过多的分析。
关于JDK源码,详情请参考:https://github.com/frohoff/jdk8u-jdk/tree/master/src/share/classes。
1. RMI调用流程RMI(Remote Method Invocation,远程方法调用),可以引用远程主机上对象的方法,在分布式领域应用广泛。RMI总的来说可以分为:RMI Client、RMI registry、RMI Server(有的代码中把registry和Server合成了一个)。
(1)首先远程主机(RMI Server
)会向RMI注册表(RMI Registry
)中注册对象,给对象绑定一个名称,例如Hello
代表RemoteA对象
。
创建对象:既然要注册一个对象,那么远程主机Server上首先要有一个对象。写一个接口、一个接口的