JRMPClient 反序列化
作者:互联网
JRMPClient 反序列化
当目标存在反序列化入口时,可以尝试构造反序列化链让目标在指定端口开启 JRMP 服务,这样我们就可以连接目标开启的 JRMP 服务进行一些后续操作。
Gadget
/*
* Gadget:
* UnicastRemoteObject#readObject
* UnicastRemoteObject#reexport
* UnicastRemoteObject#exportObject
* UnicastRemoteObject#exportObject
* UnicastServerRef#exportObject
* LiveRef#exportObject
* TCPEndpoint#exportObject
* TCPTransport#exportObject
* TCPTransport#listen
* */
UnicastRemoteObject#readObject
调用 UnicastRemoteObject#reexport
方法
UnicastRemoteObject#reexport
方法调用 UnicastRemoteObject#exportObject
方法
传入指定的端口实例化 UnicastServerRef
对象
跟进一下实例化过程
跟进实例化 LiveRef
的过程,ObjID
对象主要用来标识的,在这里没啥作用,这里构造方法有很多重载,我们关注 ep
属性的赋值
跟进 TCPEndpoint#getLocalEndpoint
方法,传入的参数为指定的端口,这里是关键的地方,主要用来创建一个 TCPEndpoint
对象并对其进行操作之后返回。
具体逻辑捋一捋,这里看一个比较关键的地方,实例化一个 TCPTransport
并赋值给 var3.transport
跟进一下实例化的过程,发现是把传入的参数赋值给了 epList
属性,这个挺关键的,后面会用到
然后操作完成之后返回 var3
,这里相当于是把 var3
赋值给 ep
属性
实例化 LiveRef
出来之后调用 UnicastServerRef
的父类构造,把实例化出来的 LiveRef
赋值给 ref
属性
实例化完之后回到 exportObject
方法
调用 UnicastRemoteObject#exportObject
方法
然后调用 UnicastServerRef#exportObject
方法
调用 ref
属性的 exportObjec
方法,ref
属性根据前面分析就是 LiveRef
调用 ep
属性的 exportObject
方法,ep
属性就是 TCPEndpoint
,那么调用 TCPEndpoint#exportObjec
接着调用 transport
属性的 exportObject
方法,transport
属性就是 TCPTransport
,那么就调用 TCPTransport#exportObject
方法
这里接着调用 TCPTransport#listen
方法
看一下 getEndpoint
方法,这里返回的就是 epList
属性,前面这个属性被设置有内容的
最后获取端口等信息开启 JRMP
服务
public class JRMPListener {
public static byte[] getSerializeData() throws Exception{
UnicastRemoteObject unicastRemoteObject = (UnicastRemoteObject) Reflect.reflectGetObject("java.rmi.server.UnicastRemoteObject", new Class[]{}, new Object[]{});
// 反射修改 port 属性
Reflect.reflectSetField(unicastRemoteObject,"port", Integer.parseInt(ParseArgs.JRMPListenerPort));
byte[] bytes = SerWithUnSer.serialize(unicastRemoteObject);
return bytes;
}
public static void main(String[] args) throws Exception{
ParseArgs.parseArgs(args);
byte[] bytes = getSerializeData();
SerWithUnSer.unSerialize(bytes);
}
}
标签:TCPTransport,调用,UnicastRemoteObject,实例,JRMPClient,序列化,exportObject,属性 来源: https://blog.csdn.net/qq_53264525/article/details/122704343