diff --git a/integration-test/docker-compose/websphere/docker-compose-700.yaml b/integration-test/docker-compose/websphere/docker-compose-700.yaml index 22619156..f8b0f2b1 100644 --- a/integration-test/docker-compose/websphere/docker-compose-700.yaml +++ b/integration-test/docker-compose/websphere/docker-compose-700.yaml @@ -2,6 +2,8 @@ services: was700: image: reajason/websphere:7.0.0.21 container_name: was700 + environment: + JAVA_OPTS: -Xshareclasses:none ports: - "9080:9080" - "9060:9060" diff --git a/integration-test/docker-compose/websphere/docker-compose-905.yaml b/integration-test/docker-compose/websphere/docker-compose-905.yaml new file mode 100644 index 00000000..e28fcc88 --- /dev/null +++ b/integration-test/docker-compose/websphere/docker-compose-905.yaml @@ -0,0 +1,12 @@ +services: + was905: + image: reajason/websphere:9.0.5.17 + container_name: was905 + ports: + - "9080:9080" + - "9060:9060" + - "5005:5005" + environment: + JAVA_OPTS: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 + volumes: + - ../../../vul/vul-webapp/build/libs/vul-webapp.war:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/monitoredDeployableApps/servers/server1/app.war \ No newline at end of file diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java b/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java index 1bb409ad..5951e3f3 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java @@ -530,6 +530,10 @@ public class ShellAssertion { if (listStdout.contains("executable file not found")) { listResult = appContainer.execInContainer("/opt/IBM/WebSphere/AppServer/java/bin/java", "-jar", jarPath); listStdout = listResult.getStdout(); + if (listStdout.contains("no such file or directory")) { + listResult = appContainer.execInContainer("/opt/IBM/WebSphere/AppServer/java/8.0/jre/bin/java", "-jar", jarPath); + listStdout = listResult.getStdout(); + } } log.info("list processes output:\n{}", listStdout); System.out.println("list stderr: " + listResult.getStderr()); @@ -542,10 +546,14 @@ public class ShellAssertion { if (attachStdout.contains("executable file not found")) { attachResult = appContainer.execInContainer("/opt/IBM/WebSphere/AppServer/java/bin/java", "-jar", jarPath, "all"); attachStdout = attachResult.getStdout(); + if (attachStdout.contains("no such file or directory")) { + attachResult = appContainer.execInContainer("/opt/IBM/WebSphere/AppServer/java/8.0/jre/bin/java", "-jar", jarPath, "all"); + attachStdout = attachResult.getStdout(); + } } log.info("attach all output:\n{}", attachStdout); System.out.println("attach all stderr: " + attachResult.getStderr()); - assertThat("Attach all should complete with ok", attachStdout, containsString("ok")); + assertThat("Attach all should complete with Success", attachStdout, containsString("Success")); // Test 3: Verify shell injection was successful String paramName = ((CommandConfig) shellToolConfig).getParamName(); diff --git a/integration-test/src/test/java/com/reajason/javaweb/integration/memshell/websphere7/WebSphere700ContainerTest.java b/integration-test/src/test/java/com/reajason/javaweb/integration/memshell/websphere7/WebSphere700ContainerTest.java index 86d4676c..8511b6d7 100644 --- a/integration-test/src/test/java/com/reajason/javaweb/integration/memshell/websphere7/WebSphere700ContainerTest.java +++ b/integration-test/src/test/java/com/reajason/javaweb/integration/memshell/websphere7/WebSphere700ContainerTest.java @@ -15,6 +15,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import java.time.Duration; import java.util.List; +import java.util.Map; /** * @author ReaJason @@ -28,6 +29,7 @@ public class WebSphere700ContainerTest extends AbstractContainerTest { "reajason/websphere:7.0.0.21", "/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/monitoredDeployableApps/servers/server1/app.war") .targetJdkVersion(Opcodes.V1_6) + .env(Map.of("JAVA_OPTS", "-Xshareclasses:none")) .waitStrategy(Wait.forHttp("/app/").forPort(9080).withStartupTimeout(Duration.ofMinutes(5))) .supportedShellTypes(List.of( ShellType.SERVLET,