From 8b8cc7173d92f7fbd924daee823b4ba675254c56 Mon Sep 17 00:00:00 2001 From: ReaJason Date: Sat, 6 Dec 2025 14:30:21 +0800 Subject: [PATCH] test: fix failed cases --- .../javaweb/integration/ShellAssertion.java | 4 ++++ .../glassfish/GlassFish7ContainerTest.java | 2 +- .../BigIntegerClassLoaderController.java | 24 +++++++++++++++++++ .../BigIntegerClassLoaderController.java | 24 +++++++++++++++++++ 4 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 vul/vul-springboot2-jetty/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java create mode 100644 vul/vul-springboot2-undertow/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java b/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java index db2e954c..cb5a9343 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java @@ -412,6 +412,10 @@ public class ShellAssertion { Pair urls = ShellAssertion.getUrls(url, shellType, shellTool, packer); String shellUrl = urls.getLeft(); String urlPattern = urls.getRight(); + if (urlPattern != null) { + shellUrl += "testProbe"; + urlPattern += "testProbe"; + } ShellConfig shellConfig = ShellConfig.builder() .server(server) .serverVersion(serverVersion) diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/probe/glassfish/GlassFish7ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/probe/glassfish/GlassFish7ContainerTest.java index b2ec261e..a57573e8 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/probe/glassfish/GlassFish7ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/probe/glassfish/GlassFish7ContainerTest.java @@ -33,7 +33,7 @@ public class GlassFish7ContainerTest { @Container public static final GenericContainer container = new GenericContainer<>(imageName) .withCopyToContainer(warJakartaFile, "/usr/local/glassfish7/glassfish/domains/domain1/autodeploy/app.war") - .waitingFor(Wait.forLogMessage(".*deployed.*", 1)) + .waitingFor(Wait.forLogMessage(".*(deployed|done).*", 1)) .withExposedPorts(8080); @AfterAll diff --git a/vul/vul-springboot2-jetty/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java b/vul/vul-springboot2-jetty/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java new file mode 100644 index 00000000..f03071b5 --- /dev/null +++ b/vul/vul-springboot2-jetty/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java @@ -0,0 +1,24 @@ +package com.reajason.javaweb.vul.springboot2.controller; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author ReaJason + * @since 2025/12/6 + */ +@RestController +@RequestMapping("/biginteger") +public class BigIntegerClassLoaderController extends ClassLoader { + static byte[] decodeBigInteger(String bigIntegerStr) throws Exception { + Class decoderClass = Class.forName("java.math.BigInteger"); + return (byte[]) decoderClass.getMethod("toByteArray").invoke(decoderClass.getConstructor(String.class, int.class).newInstance(bigIntegerStr, Character.MAX_RADIX)); + } + + @PostMapping + public void base64ClassLoader(String data) throws Exception { + byte[] bytes = decodeBigInteger(data); + defineClass(null, bytes, 0, bytes.length).newInstance(); + } +} diff --git a/vul/vul-springboot2-undertow/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java b/vul/vul-springboot2-undertow/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java new file mode 100644 index 00000000..f03071b5 --- /dev/null +++ b/vul/vul-springboot2-undertow/src/main/java/com/reajason/javaweb/vul/springboot2/controller/BigIntegerClassLoaderController.java @@ -0,0 +1,24 @@ +package com.reajason.javaweb.vul.springboot2.controller; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author ReaJason + * @since 2025/12/6 + */ +@RestController +@RequestMapping("/biginteger") +public class BigIntegerClassLoaderController extends ClassLoader { + static byte[] decodeBigInteger(String bigIntegerStr) throws Exception { + Class decoderClass = Class.forName("java.math.BigInteger"); + return (byte[]) decoderClass.getMethod("toByteArray").invoke(decoderClass.getConstructor(String.class, int.class).newInstance(bigIntegerStr, Character.MAX_RADIX)); + } + + @PostMapping + public void base64ClassLoader(String data) throws Exception { + byte[] bytes = decodeBigInteger(data); + defineClass(null, bytes, 0, bytes.length).newInstance(); + } +}