test: add JRE and JDK Attacher test cases

This commit is contained in:
ReaJason
2025-05-28 01:22:54 +08:00
parent be63177268
commit ebd1bebf2f
11 changed files with 22 additions and 15 deletions
@@ -6,6 +6,7 @@ import com.reajason.javaweb.godzilla.GodzillaManager;
import com.reajason.javaweb.memshell.*;
import com.reajason.javaweb.memshell.config.*;
import com.reajason.javaweb.memshell.packer.jar.AgentJarPacker;
import com.reajason.javaweb.memshell.packer.jar.AgentJarWithJDKAttacherPacker;
import com.reajason.javaweb.memshell.packer.jar.AgentJarWithJREAttacherPacker;
import com.reajason.javaweb.memshell.packer.jar.JarPacker;
import com.reajason.javaweb.suo5.Suo5Manager;
@@ -110,7 +111,7 @@ public class ShellAssertionTool {
containsString("ATTACH_ACK"),
containsString("JVM response code = 0")
));
} else if (packer.getInstance() instanceof AgentJarWithJREAttacherPacker) {
} else if (packer.getInstance() instanceof AgentJarWithJREAttacherPacker || packer.getInstance() instanceof AgentJarWithJDKAttacherPacker) {
byte[] bytes = ((JarPacker) packer.getInstance()).packBytes(generateResult);
Path tempJar = Files.createTempFile("temp", "jar");
Files.write(tempJar, bytes);
@@ -55,15 +55,21 @@ public class TestCasesProvider {
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)
);
Set<Packers> agentJarPackers = testPackers.stream()
.filter(packer -> packer.name().startsWith("AgentJar")).collect(Collectors.toSet());
if (!agentJarPackers.isEmpty()) {
return agentJarPackers.stream()
.map(packer -> Arguments.arguments(imageName, supportedShellType, supportedShellTool, packer));
} else {
return Stream.of(arguments(imageName, supportedShellType, supportedShellTool, Packers.AgentJar));
}
}
return Stream.empty();
} else {
return testPackers.stream()
.map(testPacker -> {
if (!unSupported.contains(supportedShellType + supportedShellTool + testPacker)) {
if (!unSupported.contains(supportedShellType + supportedShellTool + testPacker)
&& !testPacker.name().startsWith("AgentJar")) {
return arguments(imageName, supportedShellType, supportedShellTool, testPacker);
} else {
return null;
@@ -59,7 +59,7 @@ public class Tomcat10ContainerTest {
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE
);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
}
@@ -60,7 +60,7 @@ public class Tomcat11ContainerTest {
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE
);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.AgentJarWithJREAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
}
@@ -61,7 +61,7 @@ public class Tomcat11JRE21ContainerTest {
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE
);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.AgentJarWithJREAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
}
@@ -60,7 +60,7 @@ public class Tomcat5ContainerTest {
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE
);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJDKAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@@ -58,7 +58,7 @@ public class Tomcat6ContainerTest {
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE
);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJDKAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@@ -59,7 +59,7 @@ public class Tomcat7ContainerTest {
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE
);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
List<Packers> testPackers = List.of(Packers.AgentJarWithJREAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@@ -60,7 +60,7 @@ public class Tomcat8ContainerTest {
ShellType.WEBSOCKET,
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
@@ -59,7 +59,7 @@ public class Tomcat9ContainerTest {
ShellType.AGENT_FILTER_CHAIN,
ShellType.CATALINA_AGENT_CONTEXT_VALVE
);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize);
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher);
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
}
+2 -2
View File
@@ -11,8 +11,8 @@ dependencies {
api 'net.bytebuddy:byte-buddy:1.17.5'
api 'org.ow2.asm:asm-commons:9.7.1'
api 'net.java.dev.jna:jna:5.17.0'
api 'net.java.dev.jna:jna-platform:5.17.0'
api 'net.java.dev.jna:jna:5.13.0'
api 'net.java.dev.jna:jna-platform:5.13.0'
api 'javax.servlet:javax.servlet-api:3.0.1'
api 'jakarta.servlet:jakarta.servlet-api:6.0.0'