mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-22 23:11:52 +08:00
feat: support command encryptor
This commit is contained in:
+31
-6
@@ -1,13 +1,16 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.command;
|
||||
|
||||
import com.reajason.javaweb.memshell.ShellType;
|
||||
import com.reajason.javaweb.memshell.*;
|
||||
import com.reajason.javaweb.memshell.config.CommandConfig;
|
||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||
import com.reajason.javaweb.memshell.config.InjectorConfig;
|
||||
import com.reajason.javaweb.memshell.config.ShellConfig;
|
||||
import com.reajason.javaweb.memshell.generator.CommandGenerator;
|
||||
import com.reajason.javaweb.memshell.generator.command.CommandGenerator;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandValve;
|
||||
import com.reajason.javaweb.util.ClassUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
@@ -36,15 +39,37 @@ class CommandFilterTest {
|
||||
@MethodSource("casesProvider")
|
||||
void generate(String shellType, Class<?> clazz, String className) {
|
||||
ShellConfig generateConfig = new ShellConfig();
|
||||
CommandConfig shellConfig = CommandConfig.builder()
|
||||
CommandConfig commandConfig = CommandConfig.builder()
|
||||
.shellClass(clazz)
|
||||
.shellClassName(className)
|
||||
.paramName("cmd")
|
||||
.build();
|
||||
generateConfig.setShellType(shellType);
|
||||
byte[] bytes = new CommandGenerator(generateConfig, shellConfig).getBytes();
|
||||
byte[] bytes = new CommandGenerator(generateConfig, commandConfig).getBytes();
|
||||
Object obj = ClassUtils.newInstance(bytes);
|
||||
assertEquals(shellConfig.getShellClassName(), obj.getClass().getName());
|
||||
assertEquals(shellConfig.getParamName(), ClassUtils.getFieldValue(obj, "paramName"));
|
||||
assertEquals(commandConfig.getShellClassName(), obj.getClass().getName());
|
||||
assertEquals(commandConfig.getParamName(), ClassUtils.getFieldValue(obj, "paramName"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGenerator() throws Exception {
|
||||
ShellConfig shellConfig = ShellConfig.builder()
|
||||
.server(Server.Tomcat)
|
||||
.shellType(ShellType.FILTER)
|
||||
.shellTool(ShellTool.Command)
|
||||
.build();
|
||||
|
||||
CommandConfig commandConfig = CommandConfig.builder()
|
||||
.shellClass(CommandFilter.class)
|
||||
.shellClassName("org.apache.utils.CommandFilter")
|
||||
.paramName("cmd")
|
||||
.encryptor(CommandConfig.Encryptor.DOUBLE_BASE64)
|
||||
.build();
|
||||
InjectorConfig injectorConfig = new InjectorConfig();
|
||||
|
||||
GenerateResult generate = MemShellGenerator.generate(shellConfig, injectorConfig, commandConfig);
|
||||
// Files.write(Paths.get("hehe.class"), generate.getShellBytes());
|
||||
String pack = Packers.ScriptEngine.getInstance().pack(generate);
|
||||
System.out.println(pack);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user