Java反序列化 (之) RMI反序列化

本文详细介绍了Java的RMI(远程方法调用)机制,包括其工作原理、组件以及使用过程。通过流量分析揭示了RMI中的序列化和反序列化过程,并探讨了RMI的安全隐患,如攻击Registry、codebase动态类加载可能导致的任意命令执行漏洞。文章还通过实例展示了如何直接攻击RMI服务端,讨论了攻击条件和防范措施。
摘要由CSDN通过智能技术生成

前言

也是从接触fastjson的时候才接触RMI这个东西。也经常与JNDi搞混。这篇文章先分析RMI的底层,等研究过了再加上。

什么是RMI

RMI即远程方法调用,通俗的来说就是客户端可以调用服务端的方法。和RPC差不多,RMI是java独立实现的一种机制。

RMI使用赖的通信协议为JRMP(Java Remote Message Protocol ,Java 远程消息交换协议),该协议为Java定制,要求服务端与客户端都为Java编写。

RMI分为三个主体部分:摘自https://xz.aliyun.com/t/6660#toc-5

  • Client-客户端:客户端调用服务端的方法
  • Server-服务端:远程调用方法对象的提供者,也是代码真正执行的地方,执行结束会返回给客户端一个方法执行的结果。
  • Registry-注册中心:其实本质就是一个map,相当于是字典一样,用于客户端查询要调用的方法的引用。

使用RMI

服务端:
1.首先创建一个接口。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bog0n

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值