mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
test: add JRE and JDK Attacher test cases
This commit is contained in:
+2
-1
@@ -6,6 +6,7 @@ import com.reajason.javaweb.godzilla.GodzillaManager;
|
|||||||
import com.reajason.javaweb.memshell.*;
|
import com.reajason.javaweb.memshell.*;
|
||||||
import com.reajason.javaweb.memshell.config.*;
|
import com.reajason.javaweb.memshell.config.*;
|
||||||
import com.reajason.javaweb.memshell.packer.jar.AgentJarPacker;
|
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.AgentJarWithJREAttacherPacker;
|
||||||
import com.reajason.javaweb.memshell.packer.jar.JarPacker;
|
import com.reajason.javaweb.memshell.packer.jar.JarPacker;
|
||||||
import com.reajason.javaweb.suo5.Suo5Manager;
|
import com.reajason.javaweb.suo5.Suo5Manager;
|
||||||
@@ -110,7 +111,7 @@ public class ShellAssertionTool {
|
|||||||
containsString("ATTACH_ACK"),
|
containsString("ATTACH_ACK"),
|
||||||
containsString("JVM response code = 0")
|
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);
|
byte[] bytes = ((JarPacker) packer.getInstance()).packBytes(generateResult);
|
||||||
Path tempJar = Files.createTempFile("temp", "jar");
|
Path tempJar = Files.createTempFile("temp", "jar");
|
||||||
Files.write(tempJar, bytes);
|
Files.write(tempJar, bytes);
|
||||||
|
|||||||
+10
-4
@@ -55,15 +55,21 @@ public class TestCasesProvider {
|
|||||||
return toolSupportedShellTypes.stream().flatMap(supportedShellType -> {
|
return toolSupportedShellTypes.stream().flatMap(supportedShellType -> {
|
||||||
if (supportedShellType.startsWith(ShellType.AGENT)) {
|
if (supportedShellType.startsWith(ShellType.AGENT)) {
|
||||||
if (!unSupported.contains(supportedShellType + supportedShellTool + Packers.AgentJar)) {
|
if (!unSupported.contains(supportedShellType + supportedShellTool + Packers.AgentJar)) {
|
||||||
return Stream.of(
|
Set<Packers> agentJarPackers = testPackers.stream()
|
||||||
arguments(imageName, supportedShellType, supportedShellTool, Packers.AgentJar)
|
.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();
|
return Stream.empty();
|
||||||
} else {
|
} else {
|
||||||
return testPackers.stream()
|
return testPackers.stream()
|
||||||
.map(testPacker -> {
|
.map(testPacker -> {
|
||||||
if (!unSupported.contains(supportedShellType + supportedShellTool + testPacker)) {
|
if (!unSupported.contains(supportedShellType + supportedShellTool + testPacker)
|
||||||
|
&& !testPacker.name().startsWith("AgentJar")) {
|
||||||
return arguments(imageName, supportedShellType, supportedShellTool, testPacker);
|
return arguments(imageName, supportedShellType, supportedShellTool, testPacker);
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
+1
-1
@@ -59,7 +59,7 @@ public class Tomcat10ContainerTest {
|
|||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE
|
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));
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ public class Tomcat11ContainerTest {
|
|||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE
|
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));
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ public class Tomcat11JRE21ContainerTest {
|
|||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE
|
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));
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ public class Tomcat5ContainerTest {
|
|||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE
|
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);
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -58,7 +58,7 @@ public class Tomcat6ContainerTest {
|
|||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE
|
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);
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -59,7 +59,7 @@ public class Tomcat7ContainerTest {
|
|||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE
|
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);
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -60,7 +60,7 @@ public class Tomcat8ContainerTest {
|
|||||||
ShellType.WEBSOCKET,
|
ShellType.WEBSOCKET,
|
||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE);
|
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);
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -59,7 +59,7 @@ public class Tomcat9ContainerTest {
|
|||||||
ShellType.AGENT_FILTER_CHAIN,
|
ShellType.AGENT_FILTER_CHAIN,
|
||||||
ShellType.CATALINA_AGENT_CONTEXT_VALVE
|
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);
|
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ dependencies {
|
|||||||
api 'net.bytebuddy:byte-buddy:1.17.5'
|
api 'net.bytebuddy:byte-buddy:1.17.5'
|
||||||
api 'org.ow2.asm:asm-commons:9.7.1'
|
api 'org.ow2.asm:asm-commons:9.7.1'
|
||||||
|
|
||||||
api 'net.java.dev.jna:jna:5.17.0'
|
api 'net.java.dev.jna:jna:5.13.0'
|
||||||
api 'net.java.dev.jna:jna-platform:5.17.0'
|
api 'net.java.dev.jna:jna-platform:5.13.0'
|
||||||
|
|
||||||
api 'javax.servlet:javax.servlet-api:3.0.1'
|
api 'javax.servlet:javax.servlet-api:3.0.1'
|
||||||
api 'jakarta.servlet:jakarta.servlet-api:6.0.0'
|
api 'jakarta.servlet:jakarta.servlet-api:6.0.0'
|
||||||
|
|||||||
Reference in New Issue
Block a user