警告:本文所涉及内容只可用于交流学习,请勿使用本文提到的内容违反法律,本文和作者不提供任何担保!!!
一、漏洞原理
RMI是REMOTE METHODINVOCATION的简称,是J2SE的一部分,能够让程序员开发出基于JAVA的分布式应用。一个RMI对象是一个远程JAVA对象,可以从另一个JAVA虚拟机上(甚至跨过网络)调用它的方法,可以像调用本地JAVA对象的方法一样调用远程对象的方法,使分布在不同的JVM中的对象的外表和行为都像本地对象一样。对于任何一个以对象为参数的RMI接口,你都可以发一个自己构建的对象,迫使服务器端将这个对象按任何一个存在于class path中的可序列化类来反序列化。 RMI的传输100%基于反序列化。
二、漏洞详情
1099端口是Java RMI的默认端口,RMI默认使用序列化来完成所有的交互,所以这是非常常见的漏洞。如果该端口暴露在公网上,且使用了Apache Commons Collections的漏洞版本,就可以在该服务器上执行相关命令。
工具下载链接(永久有效)
命令行工具:
链接:https://pan.baidu.com/s/1n8aVs5EjlWkR59u0XdXWbQ
提取码:6666
图形工具:
链接:https://pan.baidu.com/s/1rhHXVEeeUt2YBmZqZ_I4Cg
提取码:6666
三、验证漏洞
使用命令行工具验证:
这