前言
前段时间分析了JBoss 3873和4446端口下的反序列化,受影响的版本最晚已经是2011年发布的,而JBoss EAP 6.X及WildFly\JBoss AS 7.X等后续版本,它们反序列化相关的CVE就很少了。归根结底,是因为以上所说的后续版本弃用了原来的Remoting2协议,启用了Remoting3协议。本文以Remoting3的反序列化相关问题展开分析。
Java远程方法调用,即Java RMI(Java Remote Method Invocation)是Java编程语言里,一种用于实现远程过程调用的应用程序编程接口。它使客户机上运行的程序可以调用远程服务器上的对象。远程方法调用特性使Java编程人员能够在网络环境中分布操作。它是由注册中心、服务端和客户端三部分组成。
注册中心
作为存储远程方法的代理对象的仓库。
服务端
暴露远程对象,并将其代理对象注册进 RMI Registry。一个代理对象在服务端中包含一个skeleton对象,用于接受来自stub对象的调用。
客户端
查找远程代理对象,远程调用服务对象。一个代理对象在调用该远程对象的客户端上包含一个stub对象,负责调用参数和返回值的序列化、打包解包,以及网络层的通讯过程。
Update your browser to view this website correctly. Update my browser now