Skip to content

Commit 7fdba6a

Browse files
committed
test: add WildFly 36.0.0-Final-jdk21
1 parent b7ede0f commit 7fdba6a

File tree

3 files changed

+158
-0
lines changed

3 files changed

+158
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
services:
2+
wildfly30:
3+
image: quay.io/wildfly/wildfly:30.0.1.Final-jdk17
4+
container_name: wildfly30
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
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
package com.reajason.javaweb.integration.memshell.wildfly;
2+
3+
import com.reajason.javaweb.Server;
4+
import com.reajason.javaweb.integration.TestCasesProvider;
5+
import com.reajason.javaweb.memshell.ShellTool;
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.testcontainers.containers.GenericContainer;
15+
import org.testcontainers.containers.Network;
16+
import org.testcontainers.containers.wait.strategy.Wait;
17+
import org.testcontainers.images.builder.ImageFromDockerfile;
18+
import org.testcontainers.junit.jupiter.Container;
19+
import org.testcontainers.junit.jupiter.Testcontainers;
20+
21+
import java.util.List;
22+
import java.util.stream.Stream;
23+
24+
import static com.reajason.javaweb.integration.ContainerTool.*;
25+
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
26+
import static com.reajason.javaweb.integration.ShellAssertion.shellInjectIsOk;
27+
import static org.hamcrest.MatcherAssert.assertThat;
28+
29+
/**
30+
* @author ReaJason
31+
* @since 2024/12/10
32+
*/
33+
@Slf4j
34+
@Testcontainers
35+
public class Wildfly36ContainerTest {
36+
public static final String imageName = "quay.io/wildfly/wildfly:36.0.0.Final-jdk21";
37+
static Network network = Network.newNetwork();
38+
@Container
39+
public final static GenericContainer<?> python = new GenericContainer<>(new ImageFromDockerfile()
40+
.withDockerfile(neoGeorgDockerfile))
41+
.withNetwork(network);
42+
@Container
43+
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
44+
.withCopyToContainer(warJakartaFile, "/opt/jboss/wildfly/standalone/deployments/app.war")
45+
.withCopyToContainer(jattachFile, "/jattach")
46+
.withCopyToContainer(jbossPid, "/fetch_pid.sh")
47+
.withNetwork(network)
48+
.withNetworkAliases("app")
49+
.waitingFor(Wait.forHttp("/app"))
50+
.withExposedPorts(8080);
51+
52+
static Stream<Arguments> casesProvider() {
53+
String server = Server.Undertow;
54+
List<String> supportedShellTypes = List.of(
55+
ShellType.JAKARTA_SERVLET, ShellType.JAKARTA_FILTER, ShellType.JAKARTA_LISTENER
56+
);
57+
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX);
58+
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers,
59+
null, List.of(ShellTool.AntSword) // AntSword not support jakarta
60+
);
61+
}
62+
63+
@AfterAll
64+
static void tearDown() {
65+
String logs = container.getLogs();
66+
log.info(logs);
67+
assertThat("Logs should not contain any exceptions", logs, doesNotContainException());
68+
}
69+
70+
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
71+
@MethodSource("casesProvider")
72+
void test(String imageName, String shellType, String shellTool, Packers packer) {
73+
shellInjectIsOk(getUrl(container), Server.Undertow, shellType, shellTool, Opcodes.V21, packer, container, python);
74+
}
75+
}
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.reajason.javaweb.integration.probe.wildfly;
2+
3+
import com.reajason.javaweb.Server;
4+
import com.reajason.javaweb.integration.ProbeAssertion;
5+
import com.reajason.javaweb.integration.VulTool;
6+
import com.reajason.javaweb.integration.probe.DetectionTool;
7+
import lombok.SneakyThrows;
8+
import lombok.extern.slf4j.Slf4j;
9+
import org.junit.jupiter.api.Test;
10+
import org.objectweb.asm.Opcodes;
11+
import org.testcontainers.containers.GenericContainer;
12+
import org.testcontainers.containers.wait.strategy.Wait;
13+
import org.testcontainers.junit.jupiter.Container;
14+
import org.testcontainers.junit.jupiter.Testcontainers;
15+
16+
import java.nio.file.Files;
17+
import java.nio.file.Paths;
18+
19+
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
20+
import static com.reajason.javaweb.integration.ContainerTool.warJakartaFile;
21+
import static org.junit.jupiter.api.Assertions.assertEquals;
22+
23+
/**
24+
* @author ReaJason
25+
* @since 2024/12/10
26+
*/
27+
@Slf4j
28+
@Testcontainers
29+
public class Wildfly36ContainerTest {
30+
public static final String imageName = "quay.io/wildfly/wildfly:36.0.0.Final-jdk21";
31+
@Container
32+
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
33+
.withCopyToContainer(warJakartaFile, "/opt/jboss/wildfly/standalone/deployments/app.war")
34+
.waitingFor(Wait.forHttp("/app"))
35+
.withExposedPorts(8080);
36+
37+
@Test
38+
void testJDK() {
39+
String url = getUrl(container);
40+
String data = VulTool.post(url + "/b64", DetectionTool.getJdkDetection());
41+
assertEquals("JDK|21.0.6|65", data);
42+
}
43+
44+
@Test
45+
@SneakyThrows
46+
void testBasicInfo() {
47+
String url = getUrl(container);
48+
String data = VulTool.post(url + "/b64", DetectionTool.getBasicInfoPrinter());
49+
Files.writeString(Paths.get("src", "test", "resources", "infos", this.getClass().getSimpleName() + "BasicInfo.txt"), data);
50+
}
51+
52+
@Test
53+
void testServerDetection() {
54+
String url = getUrl(container);
55+
String data = VulTool.post(url + "/b64", DetectionTool.getServerDetection());
56+
assertEquals(Server.Undertow, data);
57+
}
58+
59+
@Test
60+
@SneakyThrows
61+
void testCommandReqHeaderResponseBody() {
62+
String url = getUrl(container);
63+
ProbeAssertion.responseCommandIsOk(url, Server.Undertow, Opcodes.V17);
64+
}
65+
66+
@Test
67+
@SneakyThrows
68+
void testBytecodeReqParamResponseBody() {
69+
String url = getUrl(container);
70+
ProbeAssertion.responseBytecodeIsOk(url, Server.Undertow, Opcodes.V17);
71+
}
72+
}

0 commit comments

Comments
 (0)