Skip to content

Commit 9d523c6

Browse files
committed
test: add more cases
1 parent cdbf8bb commit 9d523c6

File tree

10 files changed

+204
-7
lines changed

10 files changed

+204
-7
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
services:
2+
wildfly26:
3+
image: quay.io/wildfly/wildfly:26.1.3.Final-jdk11
4+
container_name: wildfly26
5+
ports:
6+
- 8080:8080
7+
- 5005:5005
8+
environment:
9+
JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
10+
volumes:
11+
- ../../../vul/vul-webapp-jakarta/build/libs/vul-webapp.war:/opt/jboss/wildfly/standalone/deployments/app.war
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
services:
2+
wildfly27:
3+
image: quay.io/wildfly/wildfly:27.0.1.Final-jdk11
4+
container_name: wildfly27
5+
ports:
6+
- 8080:8080
7+
- 5005:5005
8+
environment:
9+
JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005
10+
volumes:
11+
- ../../../vul/vul-webapp-jakarta/build/libs/vul-webapp-jakarta.war:/opt/jboss/wildfly/standalone/deployments/app.war

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/springwebmvc/SpringBoot1ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ static Stream<Arguments> casesProvider() {
5757
ShellType.SPRING_WEBMVC_CONTROLLER_HANDLER,
5858
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET
5959
);
60-
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
60+
List<Packers> testPackers = List.of(Packers.SpEL);
6161
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
6262
}
6363

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/springwebmvc/SpringBoot2ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ static Stream<Arguments> tomcatCasesProvider() {
9494
ShellType.AGENT_FILTER_CHAIN,
9595
ShellType.CATALINA_AGENT_CONTEXT_VALVE
9696
);
97-
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64, Packers.H2JS);
97+
List<Packers> testPackers = List.of(Packers.H2JS);
9898
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
9999
}
100100

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/springwebmvc/SpringBoot2JettyContainerTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,16 +87,18 @@ static Stream<Arguments> jettyCasesProvider() {
8787
List<String> supportedShellTypes = List.of(
8888
ShellType.SERVLET,
8989
ShellType.FILTER,
90+
ShellType.HANDLER,
91+
ShellType.CUSTOMIZER,
9092
// ShellType.LISTENER,
9193
ShellType.JETTY_AGENT_HANDLER
9294
);
93-
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
95+
List<Packers> testPackers = List.of(Packers.SpEL);
9496
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
9597
}
9698

9799
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
98100
@MethodSource("jettyCasesProvider")
99101
void testJetty(String imageName, String shellType, String shellTool, Packers packer) {
100-
shellInjectIsOk(getUrl(container), Server.Jetty, shellType, shellTool, Opcodes.V1_8, packer, container, python);
102+
shellInjectIsOk(getUrl(container), Server.Jetty, "7+", shellType, shellTool, Opcodes.V1_8, packer, container, python);
101103
}
102104
}

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/springwebmvc/SpringBoot2UndertowContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ static Stream<Arguments> undertowCasesProvider() {
9090
// ShellType.LISTENER,
9191
ShellType.UNDERTOW_AGENT_SERVLET_HANDLER
9292
);
93-
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL);
93+
List<Packers> testPackers = List.of(Packers.SpEL);
9494
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
9595
}
9696

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/springwebmvc/SpringBoot2WarContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ static Stream<Arguments> tomcatCasesProvider() {
8181
ShellType.AGENT_FILTER_CHAIN,
8282
ShellType.CATALINA_AGENT_CONTEXT_VALVE
8383
);
84-
List<Packers> testPackers = List.of(Packers.ScriptEngine, Packers.SpEL, Packers.Base64);
84+
List<Packers> testPackers = List.of(Packers.SpEL);
8585
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
8686
}
8787

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/springwebmvc/SpringBoot3ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ static Stream<Arguments> casesProvider() {
5858
ShellType.SPRING_WEBMVC_JAKARTA_CONTROLLER_HANDLER,
5959
ShellType.SPRING_WEBMVC_AGENT_FRAMEWORK_SERVLET
6060
);
61-
List<Packers> testPackers = List.of(Packers.Base64, Packers.H2);
61+
List<Packers> testPackers = List.of(Packers.H2);
6262
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
6363
}
6464

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.reajason.javaweb.integration.memshell.wildfly;
2+
3+
import com.reajason.javaweb.Server;
4+
import com.reajason.javaweb.integration.ShellAssertion;
5+
import com.reajason.javaweb.integration.TestCasesProvider;
6+
import com.reajason.javaweb.memshell.ShellType;
7+
import com.reajason.javaweb.packer.Packers;
8+
import lombok.extern.slf4j.Slf4j;
9+
import net.bytebuddy.jar.asm.Opcodes;
10+
import org.junit.jupiter.api.AfterAll;
11+
import org.junit.jupiter.params.ParameterizedTest;
12+
import org.junit.jupiter.params.provider.Arguments;
13+
import org.junit.jupiter.params.provider.MethodSource;
14+
import org.junit.jupiter.params.provider.ValueSource;
15+
import org.testcontainers.containers.GenericContainer;
16+
import org.testcontainers.containers.Network;
17+
import org.testcontainers.containers.wait.strategy.Wait;
18+
import org.testcontainers.images.builder.ImageFromDockerfile;
19+
import org.testcontainers.junit.jupiter.Container;
20+
import org.testcontainers.junit.jupiter.Testcontainers;
21+
22+
import java.util.List;
23+
import java.util.stream.Stream;
24+
25+
import static com.reajason.javaweb.integration.ContainerTool.*;
26+
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
27+
import static com.reajason.javaweb.integration.ShellAssertion.shellInjectIsOk;
28+
import static org.hamcrest.MatcherAssert.assertThat;
29+
30+
/**
31+
* @author ReaJason
32+
* @since 2024/12/10
33+
*/
34+
@Slf4j
35+
@Testcontainers
36+
public class Wildfly26ContainerTest {
37+
public static final String imageName = "quay.io/wildfly/wildfly:26.1.3.Final-jdk11";
38+
static Network network = Network.newNetwork();
39+
@Container
40+
public final static GenericContainer<?> python = new GenericContainer<>(new ImageFromDockerfile()
41+
.withDockerfile(neoGeorgDockerfile))
42+
.withNetwork(network);
43+
@Container
44+
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
45+
.withCopyToContainer(warFile, "/opt/jboss/wildfly/standalone/deployments/app.war")
46+
.withCopyToContainer(jattachFile, "/jattach")
47+
.withCopyToContainer(jbossPid, "/fetch_pid.sh")
48+
.withNetwork(network)
49+
.withNetworkAliases("app")
50+
.waitingFor(Wait.forHttp("/app"))
51+
.withExposedPorts(8080);
52+
53+
static Stream<Arguments> casesProvider() {
54+
String server = Server.Undertow;
55+
List<String> supportedShellTypes = List.of(
56+
ShellType.SERVLET,
57+
ShellType.FILTER,
58+
ShellType.LISTENER,
59+
ShellType.UNDERTOW_AGENT_SERVLET_HANDLER
60+
);
61+
List<Packers> testPackers = List.of(Packers.JSP);
62+
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
63+
}
64+
65+
@AfterAll
66+
static void tearDown() {
67+
String logs = container.getLogs();
68+
assertThat("Logs should not contain any exceptions", logs, doesNotContainException());
69+
}
70+
71+
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
72+
@MethodSource("casesProvider")
73+
void test(String imageName, String shellType, String shellTool, Packers packer) {
74+
shellInjectIsOk(getUrl(container), Server.Undertow, shellType, shellTool, Opcodes.V11, packer, container, python);
75+
}
76+
77+
@ParameterizedTest
78+
@ValueSource(strings = { ShellType.SERVLET,
79+
ShellType.FILTER,
80+
ShellType.LISTENER,})
81+
void testProbeInject(String shellType) {
82+
String url = getUrl(container);
83+
ShellAssertion.testProbeInject(url, Server.Undertow, shellType, Opcodes.V11);
84+
}
85+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package com.reajason.javaweb.integration.memshell.wildfly;
2+
3+
import com.reajason.javaweb.Server;
4+
import com.reajason.javaweb.integration.ShellAssertion;
5+
import com.reajason.javaweb.integration.TestCasesProvider;
6+
import com.reajason.javaweb.memshell.ShellTool;
7+
import com.reajason.javaweb.memshell.ShellType;
8+
import com.reajason.javaweb.packer.Packers;
9+
import lombok.extern.slf4j.Slf4j;
10+
import net.bytebuddy.jar.asm.Opcodes;
11+
import org.junit.jupiter.api.AfterAll;
12+
import org.junit.jupiter.params.ParameterizedTest;
13+
import org.junit.jupiter.params.provider.Arguments;
14+
import org.junit.jupiter.params.provider.MethodSource;
15+
import org.junit.jupiter.params.provider.ValueSource;
16+
import org.testcontainers.containers.GenericContainer;
17+
import org.testcontainers.containers.Network;
18+
import org.testcontainers.containers.wait.strategy.Wait;
19+
import org.testcontainers.images.builder.ImageFromDockerfile;
20+
import org.testcontainers.junit.jupiter.Container;
21+
import org.testcontainers.junit.jupiter.Testcontainers;
22+
23+
import java.util.List;
24+
import java.util.stream.Stream;
25+
26+
import static com.reajason.javaweb.integration.ContainerTool.*;
27+
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
28+
import static com.reajason.javaweb.integration.ShellAssertion.shellInjectIsOk;
29+
import static org.hamcrest.MatcherAssert.assertThat;
30+
31+
/**
32+
* @author ReaJason
33+
* @since 2024/12/10
34+
*/
35+
@Slf4j
36+
@Testcontainers
37+
public class Wildfly27ContainerTest {
38+
public static final String imageName = "quay.io/wildfly/wildfly:27.0.1.Final-jdk11";
39+
static Network network = Network.newNetwork();
40+
@Container
41+
public final static GenericContainer<?> python = new GenericContainer<>(new ImageFromDockerfile()
42+
.withDockerfile(neoGeorgDockerfile))
43+
.withNetwork(network);
44+
@Container
45+
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
46+
.withCopyToContainer(warJakartaFile, "/opt/jboss/wildfly/standalone/deployments/app.war")
47+
.withCopyToContainer(jattachFile, "/jattach")
48+
.withCopyToContainer(jbossPid, "/fetch_pid.sh")
49+
.withNetwork(network)
50+
.withNetworkAliases("app")
51+
.waitingFor(Wait.forHttp("/app"))
52+
.withExposedPorts(8080);
53+
54+
static Stream<Arguments> casesProvider() {
55+
String server = Server.Undertow;
56+
List<String> supportedShellTypes = List.of(
57+
ShellType.JAKARTA_SERVLET,
58+
ShellType.JAKARTA_FILTER,
59+
ShellType.JAKARTA_LISTENER,
60+
ShellType.UNDERTOW_AGENT_SERVLET_HANDLER
61+
);
62+
List<Packers> testPackers = List.of(Packers.JSP);
63+
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
64+
null, List.of(ShellTool.AntSword) // AntSword not support jakarta
65+
);
66+
}
67+
68+
@AfterAll
69+
static void tearDown() {
70+
String logs = container.getLogs();
71+
assertThat("Logs should not contain any exceptions", logs, doesNotContainException());
72+
}
73+
74+
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
75+
@MethodSource("casesProvider")
76+
void test(String imageName, String shellType, String shellTool, Packers packer) {
77+
shellInjectIsOk(getUrl(container), Server.Undertow, shellType, shellTool, Opcodes.V11, packer, container, python);
78+
}
79+
80+
@ParameterizedTest
81+
@ValueSource(strings = {ShellType.JAKARTA_SERVLET,
82+
ShellType.JAKARTA_FILTER,
83+
ShellType.JAKARTA_LISTENER,})
84+
void testProbeInject(String shellType) {
85+
String url = getUrl(container);
86+
ShellAssertion.testProbeInject(url, Server.Undertow, shellType, Opcodes.V11);
87+
}
88+
}

0 commit comments

Comments
 (0)