refactor: supported unified test cases provider

This commit is contained in:
ReaJason
2025-02-23 16:44:35 +08:00
parent f1d797295c
commit 7e84cab7bc
76 changed files with 634 additions and 1952 deletions
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.springmvc;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.ShellType;
import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.jar.asm.Opcodes;
import org.junit.jupiter.api.AfterAll;
@@ -16,13 +17,13 @@ import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/**
* @author ReaJason
@@ -42,42 +43,10 @@ public class SpringBoot2ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.SpringWebMvc;
Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
Set<Packers> testPackers = Set.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springmvc;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -15,6 +16,7 @@ import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
@@ -40,32 +42,10 @@ public class SpringBoot2WarContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL),
arguments(imageName, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64)
);
Server server = Server.SpringWebMvc;
Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_INTERCEPTOR, ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
Set<Packers> testPackers = Set.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springmvc;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -16,6 +17,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -42,19 +44,10 @@ public class SpringBoot3ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar)
);
Server server = Server.SpringWebMvc;
Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBMVC_JAKARTA_INTERCEPTOR, ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER, ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET);
Set<Packers> testPackers = Set.of(Packers.Base64);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
}
@AfterAll