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,14 +1,10 @@
package com.reajason.javaweb.integration;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.MemShellGenerator;
import com.reajason.javaweb.antsword.AntSwordManager;
import com.reajason.javaweb.behinder.BehinderManager;
import com.reajason.javaweb.godzilla.GodzillaManager;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.*;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.packer.jar.JarPacker;
import com.reajason.javaweb.suo5.Suo5Manager;
import lombok.SneakyThrows;
@@ -17,6 +13,7 @@ import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.junit.jupiter.api.Assumptions;
import org.testcontainers.containers.GenericContainer;
import org.testcontainers.shaded.org.apache.commons.io.FileUtils;
import org.testcontainers.shaded.org.apache.commons.lang3.StringUtils;
@@ -0,0 +1,62 @@
package com.reajason.javaweb.integration;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
import com.reajason.javaweb.memshell.ShellType;
import org.junit.jupiter.params.provider.Arguments;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.util.Collections;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/**
* @author ReaJason
* @since 2025/2/23
*/
public class TestCasesProvider {
public static Stream<Arguments> getTestCases(String imageName, Server server, Set<String> testShellTypes, Set<Packers> testPackers, Set<Triple<String, ShellTool, Packers>> unSupportedCases) {
return getTestCases(imageName, server, testShellTypes, testPackers, unSupportedCases, null);
}
public static Stream<Arguments> getTestCases(String imageName, Server server, Set<String> testShellTypes, Set<Packers> testPackers, Set<Triple<String, ShellTool, Packers>> unSupportedCases, Set<ShellTool> unSupportedShellTools) {
Set<ShellTool> supportedShellTools = new HashSet<>(server.getShell().getSupportedShellTools());
if (unSupportedShellTools != null) {
supportedShellTools.removeAll(unSupportedShellTools);
}
Set<String> unSupported = unSupportedCases == null ? Collections.emptySet() : unSupportedCases.stream().map(i -> i.getLeft() + i.getMiddle() + i.getRight()).collect(Collectors.toSet());
return supportedShellTools.stream()
.flatMap(supportedShellTool -> {
Set<String> toolSupportedShellTypes = new HashSet<>(server.getShell().getSupportedShellTypes(supportedShellTool));
toolSupportedShellTypes.retainAll(testShellTypes);
return toolSupportedShellTypes.stream().flatMap(supportedShellType -> {
if (supportedShellType.startsWith(ShellType.AGENT)) {
if (!unSupported.contains(supportedShellType + supportedShellTool + Packers.AgentJar)) {
return Stream.of(arguments(imageName, supportedShellType, supportedShellTool, Packers.AgentJar));
}
return Stream.empty();
} else {
return testPackers.stream()
.map(testPacker -> {
if (!unSupported.contains(supportedShellType + supportedShellTool + testPacker)) {
return arguments(imageName, supportedShellType, supportedShellTool, testPacker);
} else {
return null;
}
}).filter(Objects::nonNull);
}
});
});
}
public static Stream<Arguments> getTestCases(String imageName, Server server, Set<String> testShellTypes, Set<Packers> testPackers) {
return getTestCases(imageName, server, testShellTypes, testPackers, null);
}
}
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.glassfish;
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;
@@ -15,15 +16,16 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.time.Duration;
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
@@ -48,54 +50,22 @@ public class GlassFish3ContainerTest {
}
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), // classFormatError
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
Server server = Server.GlassFish;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
Set<Triple<String, ShellTool, Packers>> unSupportedCases = Set.of(
Triple.of(ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar), // ClassFormatError
Triple.of(ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar) // ClassFormatError
);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases);
}
@AfterAll
static void tearDown() {
String logs = container.getLogs();
log.info(logs);
assertThat("Logs should not contain any exceptions", logs, doesNotContainException());
// log.info(logs);
// assertThat("Logs should not contain any exceptions", logs, doesNotContainException());
}
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.glassfish;
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,8 +16,10 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -49,46 +52,11 @@ public class GlassFish4ContainerTest {
}
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.GlassFish;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.glassfish;
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.*;
@@ -41,46 +43,11 @@ public class GlassFish501ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.GlassFish;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.glassfish;
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.*;
@@ -41,59 +43,11 @@ public class GlassFish510ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.GlassFish;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.glassfish;
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;
@@ -15,14 +16,13 @@ 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.*;
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
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,37 +42,12 @@ public class GlassFish6ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.GlassFish;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
null, Set.of(ShellTool.AntSword) // AntSword not support jakarta
);
}
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.glassfish;
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;
@@ -15,14 +16,13 @@ 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.*;
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
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,25 +42,12 @@ public class GlassFish7ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.GlassFish;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
null, Set.of(ShellTool.AntSword) // AntSword not support jakarta
);
}
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbossas;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,46 +42,11 @@ public class Jboss423ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.JBossAS;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbossas;
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;
@@ -15,14 +16,13 @@ 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.*;
import static com.reajason.javaweb.integration.ContainerTool.jbossPid;
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,45 +42,12 @@ public class Jboss510ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.JBossAS;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
null, Set.of(ShellTool.Behinder) // Behinder SocketTimeOuts
);
}
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jbossas;
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.*;
@@ -41,46 +43,11 @@ public class Jboss610ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.JBossAS;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbossas;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -44,32 +45,11 @@ public class Jboss711ContainerTest {
* 找不到 Templates 类暂时先不测试反序列化
*/
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.JBossAS;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbosseap;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,31 +42,11 @@ public class JbossEap6ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.JBossEAP6;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jbosseap;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,42 +42,10 @@ public class JbossEap7ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.JBossEAP7;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty;
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.*;
@@ -40,34 +42,10 @@ public class Jetty10ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar));
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jetty;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -40,34 +41,11 @@ public class Jetty11ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JETTY_AGENT_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
null, Set.of(ShellTool.AntSword) // AntSword not supported Jakarta
);
}
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.jetty;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -40,41 +41,10 @@ public class Jetty61ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize)
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packer.INSTANCE.AgentJar),
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.AgentJar)
);
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty;
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.*;
@@ -40,43 +42,10 @@ public class Jetty76ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
);
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty;
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.*;
@@ -40,42 +42,10 @@ public class Jetty81ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
);
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty;
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.*;
@@ -41,42 +43,10 @@ public class Jetty92ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty;
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.*;
@@ -40,42 +42,10 @@ public class Jetty93ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.jetty;
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.*;
@@ -40,42 +42,10 @@ public class Jetty94ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.JETTY_AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Jetty;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.JETTY_AGENT_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.payara;
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;
@@ -15,14 +16,13 @@ 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.*;
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
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,61 +42,11 @@ public class Payara5201ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Payara;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -108,6 +58,6 @@ public class Payara5201ContainerTest {
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
@MethodSource("casesProvider")
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
testShellInjectAssertOk(getUrl(container), Server.GlassFish, shellType, shellTool, Opcodes.V1_6, packer, container);
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer, container);
}
}
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.payara;
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.*;
@@ -42,46 +44,11 @@ public class Payara520225ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Payara;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.ScriptEngine);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.payara;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,37 +42,12 @@ public class Payara620222ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.Payara;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
null, Set.of(ShellTool.AntSword) // AntSword not supported Jakarta
);
}
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.resin;
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.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.*;
@@ -41,42 +43,10 @@ public class Resin3116ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Resin;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.resin;
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;
@@ -15,14 +16,13 @@ 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.*;
import static com.reajason.javaweb.integration.ContainerTool.resinPid;
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
@@ -41,42 +41,10 @@ public class Resin318ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Resin;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.resin;
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.*;
@@ -40,42 +42,10 @@ public class Resin4058ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Resin;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.resin;
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.*;
@@ -40,42 +42,10 @@ public class Resin4067ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Resin;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.AGENT_FILTER_CHAIN);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -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
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springwebflux;
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.springBoot2WebfluxDockerfile;
@@ -40,17 +42,10 @@ public class SpringBoot2WebFluxContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.Base64)
);
Server server = Server.SpringWebFlux;
Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellType.NETTY_HANDLER);
Set<Packers> testPackers = Set.of(Packers.Base64);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.springwebflux;
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.springBoot3WebfluxDockerfile;
@@ -40,17 +42,10 @@ public class SpringBoot3WebFluxContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SPRING_WEBFLUX_HANDLER_FUNCTION, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.Base64)
);
Server server = Server.SpringWebFlux;
Set<String> supportedShellTypes = Set.of(ShellType.SPRING_WEBFLUX_WEB_FILTER, ShellType.SPRING_WEBFLUX_HANDLER_METHOD, ShellType.NETTY_HANDLER);
Set<Packers> testPackers = Set.of(Packers.Base64);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat;
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.*;
@@ -40,62 +42,11 @@ public class Tomcat10ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.tomcat;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,30 +42,11 @@ public class Tomcat11ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.tomcat;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,30 +42,11 @@ public class Tomcat11JRE21ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.JAKARTA_VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, Set.of(ShellTool.AntSword));
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat;
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.*;
@@ -40,71 +42,10 @@ public class Tomcat5ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSPX),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize)
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packer.INSTANCE.AgentJar)
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat;
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.*;
@@ -41,56 +43,11 @@ public class Tomcat6ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat;
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.*;
@@ -41,56 +43,11 @@ public class Tomcat7ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat;
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.*;
@@ -41,76 +43,11 @@ public class Tomcat8ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.tomcat;
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.*;
@@ -40,56 +42,11 @@ public class Tomcat9ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Godzilla, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Command, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.CATALINA_AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
);
Server server = Server.Tomcat;
Set<String> supportedShellTypes = Set.of(ShellType.FILTER, ShellType.LISTENER, ShellType.VALVE,
ShellType.AGENT_FILTER_CHAIN, ShellType.CATALINA_AGENT_CONTEXT_VALVE);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.weblogic;
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;
@@ -14,12 +15,13 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
import static org.junit.jupiter.params.provider.Arguments.arguments;
/**
* @author ReaJason
@@ -38,27 +40,14 @@ public class WebLogic1036ContainerTest {
.withExposedPorts(7001);
static Stream<Arguments> casesProvider() {
return Stream.of(
// arguments(imageName, Constants.SERVLET, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64),
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.WebLogic;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT);
Set<Packers> testPackers = Set.of(Packers.Base64);
Set<Triple<String, ShellTool, Packers>> unSupportedCases = Set.of(
Triple.of(ShellType.SERVLET, ShellTool.Behinder, Packers.Base64), // java.net.SocketTimeoutException
Triple.of(ShellType.FILTER, ShellTool.Behinder, Packers.Base64) // java.net.SocketTimeoutException
);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.weblogic;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -40,27 +41,10 @@ public class WebLogic12214ContainerTest {
.withExposedPorts(7001);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.WebLogic;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT);
Set<Packers> testPackers = Set.of(Packers.Base64);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.weblogic;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -40,27 +41,10 @@ public class WebLogic14110ContainerTest {
.withExposedPorts(7001);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.Base64),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.Base64),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.WebLogic;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WEBLOGIC_AGENT_SERVLET_CONTEXT);
Set<Packers> testPackers = Set.of(Packers.Base64);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.websphere;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -17,6 +18,7 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -43,28 +45,10 @@ public class WebSphere855ContainerTest {
.withPrivilegedMode(true);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.WebSphere;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER);
Set<Packers> testPackers = Set.of(Packers.JSP);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.websphere;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -17,6 +18,7 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -43,27 +45,10 @@ public class WebSphere905ContainerTest {
.withPrivilegedMode(true);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.WebSphere;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER);
Set<Packers> testPackers = Set.of(Packers.JSP);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.websphere7;
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;
@@ -17,13 +18,13 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.time.Duration;
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
@@ -43,27 +44,10 @@ public class WebSphere700ContainerTest {
.withPrivilegedMode(true);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.WAS_AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.WebSphere;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.WAS_AGENT_FILTER_MANAGER);
Set<Packers> testPackers = Set.of(Packers.JSP);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.wildfly;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,27 +42,10 @@ public class Wildfly18ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.wildfly;
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.*;
@@ -41,27 +43,10 @@ public class Wildfly23ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
);
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,9 +1,10 @@
package com.reajason.javaweb.integration.wildfly;
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;
@@ -15,13 +16,13 @@ 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.*;
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
@@ -41,22 +42,11 @@ public class Wildfly30ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.JAKARTA_LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
null, Set.of(ShellTool.AntSword) // AntSword not support jakarta
);
}
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.wildfly;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -14,7 +15,9 @@ import org.testcontainers.containers.GenericContainer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import org.testcontainers.shaded.org.apache.commons.lang3.tuple.Triple;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.ContainerTool.*;
@@ -44,42 +47,13 @@ public class Wildfly9ContainerTest {
.withExposedPorts(8080);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Godzilla, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Command, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.JSP),
arguments(imageName, ShellType.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
// arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
arguments(imageName, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar)
Server server = Server.Undertow;
Set<String> supportedShellTypes = Set.of(ShellType.SERVLET, ShellType.FILTER, ShellType.LISTENER, ShellType.UNDERTOW_AGENT_SERVLET_HANDLER);
Set<Packers> testPackers = Set.of(Packers.JSP, Packers.JSPX, Packers.ScriptEngine);
Set<Triple<String, ShellTool, Packers>> unSupportedCases = Set.of(
Triple.of(ShellType.UNDERTOW_AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar) // Request ClassNotFound in module
);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, unSupportedCases);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.xxljob;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.Packers;
import com.reajason.javaweb.memshell.Server;
import com.reajason.javaweb.memshell.ShellTool;
@@ -15,12 +16,12 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.io.File;
import java.util.Set;
import java.util.stream.Stream;
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
@@ -38,10 +39,10 @@ public class XxlJob220ContainerTest {
.withExposedService("executor", 9999);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob)
);
Server server = Server.XXLJOB;
Set<String> supportedShellTypes = Set.of(ShellType.NETTY_HANDLER);
Set<Packers> testPackers = Set.of(Packers.XxlJob);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll
@@ -1,5 +1,6 @@
package com.reajason.javaweb.integration.xxljob;
import com.reajason.javaweb.integration.TestCasesProvider;
import com.reajason.javaweb.memshell.ShellType;
import com.reajason.javaweb.memshell.server.XxlJobShell;
import com.reajason.javaweb.memshell.Server;
@@ -16,6 +17,7 @@ import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
import java.io.File;
import java.util.Set;
import java.util.stream.Stream;
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
@@ -39,10 +41,10 @@ public class XxlJob230ContainerTest {
.withExposedService("executor", 9999);
static Stream<Arguments> casesProvider() {
return Stream.of(
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Command, Packers.XxlJob),
arguments(imageName, ShellType.NETTY_HANDLER, ShellTool.Godzilla, Packers.XxlJob)
);
Server server = Server.XXLJOB;
Set<String> supportedShellTypes = Set.of(ShellType.NETTY_HANDLER);
Set<Packers> testPackers = Set.of(Packers.XxlJob);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@AfterAll