diff --git a/README.md b/README.md index 53dca991..06c5b7c8 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,8 @@ > 本工具仅供安全研究人员、网络管理员及相关技术人员进行授权的安全测试、漏洞评估和安全审计工作使用。使用本工具进行任何未经授权的网络攻击或渗透测试等行为均属违法,使用者需自行承担相应的法律责任。 > [!TIP] -> [GitHub Actions](https://github.com/ReaJason/MemShellParty/actions/workflows/ci.yaml) 最新一次构建会打印集成测试用例测试结果,可通过此来了解当前支持进度。 +> [GitHub Actions](https://github.com/ReaJason/MemShellParty/actions/workflows/ci.yaml) +> 最新一次构建会打印集成测试用例测试结果,可通过此来了解当前支持进度。 > [!WARNING] > 项目仍在快速迭代过程中(代码结构十分不稳定)...... @@ -31,11 +32,11 @@ | Listener | Listener | Valve | Valve | | Valve | | | | -| Resin(3 ~ 4) | Netty | SpringMVC | SpringWebFlux | -|--------------|-------|-----------|---------------| -| Servlet | x | x | x | -| Filter | | | | -| Listener | | | | +| Resin(3 ~ 4) | SpringMVC | SpringWebFlux | Netty | +|--------------|-------------------|---------------|-------| +| Servlet | Interceptor | x | x | +| Filter | ControllerHandler | | | +| Listener | | | | | JBossAS(4 ~ 7) | JBossEAP(6 ~ 7) | WildFly(9 ~ 30) | Undertow | |----------------|-----------------|-----------------|----------| @@ -81,7 +82,7 @@ 使用 docker 部署之后访问 http://127.0.0.1:8080 ``` -docker run -it -d --name memshell -p 8080:8080 reajason/memshell-party + docker run -it -d --rm --pull=always --name memshell -p 8080:8080 reajason/memshell-party ``` ## How diff --git a/boot/src/main/java/com/reajason/javaweb/boot/controller/ConfigController.java b/boot/src/main/java/com/reajason/javaweb/boot/controller/ConfigController.java index 3dc3ecd3..14390270 100644 --- a/boot/src/main/java/com/reajason/javaweb/boot/controller/ConfigController.java +++ b/boot/src/main/java/com/reajason/javaweb/boot/controller/ConfigController.java @@ -1,9 +1,9 @@ package com.reajason.javaweb.boot.controller; import com.reajason.javaweb.boot.entity.Config; +import com.reajason.javaweb.memshell.AbstractShell; import com.reajason.javaweb.memshell.config.Server; import com.reajason.javaweb.memshell.config.ShellTool; -import com.reajason.javaweb.memshell.AbstractShell; import com.reajason.javaweb.memshell.packer.Packer; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; @@ -26,15 +26,19 @@ public class ConfigController { Map> coreMap = new HashMap<>(16); for (Server value : Server.values()) { AbstractShell shell = value.getShell(); - if (shell != null) { - List supportedShellTools = shell.getSupportedShellTools(); - Map> map = new HashMap<>(16); - for (ShellTool shellTool : supportedShellTools) { - List supportedShellTypes = shell.getSupportedShellTypes(shellTool); - map.put(shellTool.name(), supportedShellTypes); - } - coreMap.put(value.name(), map); + if (shell == null) { + continue; } + ShellTool[] supportedShellTools = ShellTool.values(); + Map> map = new HashMap<>(16); + for (ShellTool shellTool : supportedShellTools) { + List supportedShellTypes = shell.getSupportedShellTypes(shellTool); + if (supportedShellTypes.isEmpty()) { + continue; + } + map.put(shellTool.name(), supportedShellTypes); + } + coreMap.put(value.name(), map); } Config config = new Config(); config.setServers( diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/AbstractShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/AbstractShell.java index 2e65266c..0d450b8c 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/AbstractShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/AbstractShell.java @@ -12,15 +12,6 @@ import java.util.Map; * @since 2024/12/7 */ public abstract class AbstractShell { - - /** - * 获取当前支持的内存马功能列表 - * - * @return supported tool lists - */ - public abstract List getSupportedShellTools(); - - /** * 获取内存马功能所支持的注入类型列表 * @@ -36,22 +27,6 @@ public abstract class AbstractShell { }; } - /** - * 检查 shellConfig 的配置是否有效 - * - * @param shellConfig 内存马生成配置 - * @return valid - */ - public boolean isValid(ShellConfig shellConfig) { - List supportedShellTools = getSupportedShellTools(); - if (!supportedShellTools.contains(shellConfig.getShellTool())) { - return false; - } - - List supportedShellTypes = getSupportedShellTypes(shellConfig.getShellTool()); - return supportedShellTypes.contains(shellConfig.getShellType()); - } - public GenerateResult generate(ShellConfig shellConfig, InjectorConfig injectorConfig, ShellToolConfig shellToolConfig) { Pair, Class> shellInjectorPair = getShellInjectorPair(shellConfig.getShellTool(), shellConfig.getShellType()); if (shellInjectorPair == null) { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/GlassFishShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/GlassFishShell.java index c0c564bb..f068810f 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/GlassFishShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/GlassFishShell.java @@ -27,11 +27,6 @@ public class GlassFishShell extends AbstractShell { public static final String VALVE = "Valve"; public static final String JAKARTA_VALVE = "JakartaValve"; - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Command, ShellTool.Godzilla); - } - @Override protected Map, Class>> getCommandShellMap() { return Map.of( diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/JbossShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/JbossShell.java index d2bd76df..0155874d 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/JbossShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/JbossShell.java @@ -21,11 +21,6 @@ import java.util.Map; */ public class JbossShell extends AbstractShell { - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Command, ShellTool.Godzilla); - } - @Override protected Map, Class>> getCommandShellMap() { return Map.of( diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/JettyShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/JettyShell.java index 2023e476..d604782d 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/JettyShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/JettyShell.java @@ -26,11 +26,6 @@ import static com.reajason.javaweb.memshell.config.Constants.*; */ public class JettyShell extends AbstractShell { - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Godzilla, ShellTool.Command); - } - @Override protected Map, Class>> getCommandShellMap() { return Map.of( diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/PayaraShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/PayaraShell.java index ea3d4810..46e289e3 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/PayaraShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/PayaraShell.java @@ -27,11 +27,6 @@ public class PayaraShell extends AbstractShell { public static final String VALVE = "Valve"; public static final String JAKARTA_VALVE = "JakartaValve"; - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Command, ShellTool.Godzilla); - } - @Override protected Map, Class>> getCommandShellMap() { return Map.of( diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/ResinShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/ResinShell.java index 15f496e3..398894c8 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/ResinShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/ResinShell.java @@ -24,10 +24,6 @@ import java.util.Map; * @since 2024/12/14 */ public class ResinShell extends AbstractShell { - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Godzilla, ShellTool.Command); - } @Override protected Map, Class>> getCommandShellMap() { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/SpringMVCShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/SpringMVCShell.java index 04f2b576..9f3ce9a2 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/SpringMVCShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/SpringMVCShell.java @@ -24,11 +24,6 @@ public class SpringMVCShell extends AbstractShell { public static final String CONTROLLER_HANDLER = "ControllerHandler"; public static final String JAKARTA_CONTROLLER_HANDLER = "JakartaControllerHandler"; - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Command, ShellTool.Godzilla, ShellTool.Behinder); - } - @Override protected Map, Class>> getBehinderShellMap() { return Map.of( diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/TomcatShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/TomcatShell.java index ae32d2f9..cdfe2bbe 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/TomcatShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/TomcatShell.java @@ -33,11 +33,6 @@ public class TomcatShell extends AbstractShell { public static final String UPGRADE = "Upgrade"; public static final String EXECUTOR = "Executor"; - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Godzilla, ShellTool.Command); - } - @Override protected Map, Class>> getCommandShellMap() { return Map.of( diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/UndertowShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/UndertowShell.java index 6262b9ed..d03709f0 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/UndertowShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/UndertowShell.java @@ -24,10 +24,6 @@ import java.util.Map; * @since 2024/12/10 */ public class UndertowShell extends AbstractShell { - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Command, ShellTool.Godzilla); - } @Override protected Map, Class>> getCommandShellMap() { diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/WebSphereShell.java b/generator/src/main/java/com/reajason/javaweb/memshell/WebSphereShell.java index bc0fdb3d..eec74465 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/WebSphereShell.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/WebSphereShell.java @@ -24,11 +24,6 @@ import java.util.Map; * @since 2024/12/21 */ public class WebSphereShell extends AbstractShell { - @Override - public List getSupportedShellTools() { - return List.of(ShellTool.Command, ShellTool.Godzilla); - } - @Override protected Map, Class>> getCommandShellMap() { return Map.of(