mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-21 22:50:42 +08:00
fix: rename struct2 -> struts2
This commit is contained in:
@@ -48,8 +48,8 @@ jobs:
|
|||||||
depend_tasks: ":vul:vul-springboot2-webflux:bootJar :vul:vul-springboot3-webflux:bootJar"
|
depend_tasks: ":vul:vul-springboot2-webflux:bootJar :vul:vul-springboot3-webflux:bootJar"
|
||||||
- middleware: "xxljob"
|
- middleware: "xxljob"
|
||||||
depend_tasks: ""
|
depend_tasks: ""
|
||||||
- middleware: "struct2"
|
- middleware: "struts2"
|
||||||
depend_tasks: ":vul:vul-struct2:war"
|
depend_tasks: ":vul:vul-struts2:war"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
name: ${{ matrix.cases.middleware }}
|
name: ${{ matrix.cases.middleware }}
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -42,8 +42,8 @@ jobs:
|
|||||||
depend_tasks: ":vul:vul-webapp:war"
|
depend_tasks: ":vul:vul-webapp:war"
|
||||||
- middleware: "springwebmvc"
|
- middleware: "springwebmvc"
|
||||||
depend_tasks: ":vul:vul-springboot1:bootJar :vul:vul-springboot2:bootJar :vul:vul-springboot2-jetty:bootJar :vul:vul-springboot2-undertow:bootJar :vul:vul-springboot2:bootWar :vul:vul-springboot3:bootJar"
|
depend_tasks: ":vul:vul-springboot1:bootJar :vul:vul-springboot2:bootJar :vul:vul-springboot2-jetty:bootJar :vul:vul-springboot2-undertow:bootJar :vul:vul-springboot2:bootWar :vul:vul-springboot3:bootJar"
|
||||||
- middleware: "struct2"
|
- middleware: "struts2"
|
||||||
depend_tasks: ":vul:vul-struct2:war"
|
depend_tasks: ":vul:vul-struts2:war"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
name: ${{ matrix.cases.middleware }}
|
name: ${{ matrix.cases.middleware }}
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -20,6 +20,6 @@ public class Server {
|
|||||||
public static final String SpringWebMvc = "SpringWebMvc";
|
public static final String SpringWebMvc = "SpringWebMvc";
|
||||||
public static final String SpringWebFlux = "SpringWebFlux";
|
public static final String SpringWebFlux = "SpringWebFlux";
|
||||||
public static final String XXLJOB = "XXLJOB";
|
public static final String XXLJOB = "XXLJOB";
|
||||||
public static final String Struct2 = "Struct2";
|
public static final String Struts2 = "Struts2";
|
||||||
public static final String Dubbo = "Dubbo";
|
public static final String Dubbo = "Dubbo";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ public class ServerFactory {
|
|||||||
register(Server.SpringWebMvc, SpringWebMvc::new);
|
register(Server.SpringWebMvc, SpringWebMvc::new);
|
||||||
register(Server.SpringWebFlux, SpringWebFlux::new);
|
register(Server.SpringWebFlux, SpringWebFlux::new);
|
||||||
register(Server.XXLJOB, XxlJob::new);
|
register(Server.XXLJOB, XxlJob::new);
|
||||||
register(Server.Struct2, Struct2::new);
|
register(Server.Struts2, Struts2::new);
|
||||||
register(Server.Dubbo, Dubbo::new);
|
register(Server.Dubbo, Dubbo::new);
|
||||||
|
|
||||||
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
addToolMapping(ShellTool.Godzilla, ToolMapping.builder()
|
||||||
@@ -82,7 +82,7 @@ public class ServerFactory {
|
|||||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaUndertowServletHandler.class)
|
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, GodzillaUndertowServletHandler.class)
|
||||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Godzilla.class)
|
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Godzilla.class)
|
||||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, Godzilla.class)
|
.addShellClass(WAS_AGENT_FILTER_MANAGER, Godzilla.class)
|
||||||
.addShellClass(ACTION, GodzillaStruct2Action.class)
|
.addShellClass(ACTION, GodzillaStruts2Action.class)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
addToolMapping(ShellTool.Behinder, ToolMapping.builder()
|
||||||
@@ -107,7 +107,7 @@ public class ServerFactory {
|
|||||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderUndertowServletHandler.class)
|
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, BehinderUndertowServletHandler.class)
|
||||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Behinder.class)
|
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Behinder.class)
|
||||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, Behinder.class)
|
.addShellClass(WAS_AGENT_FILTER_MANAGER, Behinder.class)
|
||||||
.addShellClass(ACTION, BehinderStruct2Action.class)
|
.addShellClass(ACTION, BehinderStruts2Action.class)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
addToolMapping(ShellTool.AntSword, ToolMapping.builder()
|
||||||
@@ -125,7 +125,7 @@ public class ServerFactory {
|
|||||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordUndertowServletHandler.class)
|
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, AntSwordUndertowServletHandler.class)
|
||||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSword.class)
|
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, AntSword.class)
|
||||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, AntSword.class)
|
.addShellClass(WAS_AGENT_FILTER_MANAGER, AntSword.class)
|
||||||
.addShellClass(ACTION, AntSwordStruct2Action.class)
|
.addShellClass(ACTION, AntSwordStruts2Action.class)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
addToolMapping(ShellTool.Command, ToolMapping.builder()
|
||||||
@@ -162,7 +162,7 @@ public class ServerFactory {
|
|||||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandUndertowServletHandler.class)
|
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, CommandUndertowServletHandler.class)
|
||||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Command.class)
|
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Command.class)
|
||||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, Command.class)
|
.addShellClass(WAS_AGENT_FILTER_MANAGER, Command.class)
|
||||||
.addShellClass(ACTION, CommandStruct2Action.class)
|
.addShellClass(ACTION, CommandStruts2Action.class)
|
||||||
.addShellClass(ALIBABA_DUBBO_SERVICE, CommandDubboService.class)
|
.addShellClass(ALIBABA_DUBBO_SERVICE, CommandDubboService.class)
|
||||||
.addShellClass(APACHE_DUBBO_SERVICE, CommandDubboService.class)
|
.addShellClass(APACHE_DUBBO_SERVICE, CommandDubboService.class)
|
||||||
.build());
|
.build());
|
||||||
@@ -190,7 +190,7 @@ public class ServerFactory {
|
|||||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, Suo5UndertowServletHandler.class)
|
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, Suo5UndertowServletHandler.class)
|
||||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Suo5.class)
|
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Suo5.class)
|
||||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, Suo5.class)
|
.addShellClass(WAS_AGENT_FILTER_MANAGER, Suo5.class)
|
||||||
.addShellClass(ACTION, Suo5Struct2Action.class)
|
.addShellClass(ACTION, Suo5Struts2Action.class)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
addToolMapping(ShellTool.Suo5v2, ToolMapping.builder()
|
addToolMapping(ShellTool.Suo5v2, ToolMapping.builder()
|
||||||
@@ -215,7 +215,7 @@ public class ServerFactory {
|
|||||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, Suo5v2UndertowServletHandler.class)
|
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, Suo5v2UndertowServletHandler.class)
|
||||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Suo5v2.class)
|
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, Suo5v2.class)
|
||||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, Suo5v2.class)
|
.addShellClass(WAS_AGENT_FILTER_MANAGER, Suo5v2.class)
|
||||||
.addShellClass(ACTION, Suo5v2Struct2Action.class)
|
.addShellClass(ACTION, Suo5v2Struts2Action.class)
|
||||||
.addShellClass(CUSTOMIZER, Suo5v2JettyCustomizer.class)
|
.addShellClass(CUSTOMIZER, Suo5v2JettyCustomizer.class)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
@@ -241,7 +241,7 @@ public class ServerFactory {
|
|||||||
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, NeoreGeorgUndertowServletHandler.class)
|
.addShellClass(UNDERTOW_AGENT_SERVLET_HANDLER, NeoreGeorgUndertowServletHandler.class)
|
||||||
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, NeoreGeorg.class)
|
.addShellClass(WEBLOGIC_AGENT_SERVLET_CONTEXT, NeoreGeorg.class)
|
||||||
.addShellClass(WAS_AGENT_FILTER_MANAGER, NeoreGeorg.class)
|
.addShellClass(WAS_AGENT_FILTER_MANAGER, NeoreGeorg.class)
|
||||||
.addShellClass(ACTION, NeoreGeorgStruct2Action.class)
|
.addShellClass(ACTION, NeoreGeorgStruts2Action.class)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
addToolMapping(ShellTool.Proxy, ToolMapping.builder()
|
addToolMapping(ShellTool.Proxy, ToolMapping.builder()
|
||||||
|
|||||||
+3
-3
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.memshell.injector.struct2;
|
package com.reajason.javaweb.memshell.injector.struts2;
|
||||||
|
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
@@ -15,7 +15,7 @@ import java.util.zip.GZIPInputStream;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2025/12/8
|
* @since 2025/12/8
|
||||||
*/
|
*/
|
||||||
public class Struct2ActionInjector {
|
public class Struts2ActionInjector {
|
||||||
|
|
||||||
private static String msg = "";
|
private static String msg = "";
|
||||||
private static boolean ok = false;
|
private static boolean ok = false;
|
||||||
@@ -32,7 +32,7 @@ public class Struct2ActionInjector {
|
|||||||
return "{{base64Str}}";
|
return "{{base64Str}}";
|
||||||
}
|
}
|
||||||
|
|
||||||
public Struct2ActionInjector() {
|
public Struts2ActionInjector() {
|
||||||
if (ok) {
|
if (ok) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
+3
-3
@@ -1,18 +1,18 @@
|
|||||||
package com.reajason.javaweb.memshell.server;
|
package com.reajason.javaweb.memshell.server;
|
||||||
|
|
||||||
import com.reajason.javaweb.memshell.ShellType;
|
import com.reajason.javaweb.memshell.ShellType;
|
||||||
import com.reajason.javaweb.memshell.injector.struct2.Struct2ActionInjector;
|
import com.reajason.javaweb.memshell.injector.struts2.Struts2ActionInjector;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2025/12/8
|
* @since 2025/12/8
|
||||||
*/
|
*/
|
||||||
public class Struct2 extends AbstractServer {
|
public class Struts2 extends AbstractServer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InjectorMapping getShellInjectorMapping() {
|
public InjectorMapping getShellInjectorMapping() {
|
||||||
return InjectorMapping.builder()
|
return InjectorMapping.builder()
|
||||||
.addInjector(ShellType.ACTION, Struct2ActionInjector.class)
|
.addInjector(ShellType.ACTION, Struts2ActionInjector.class)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+1
-1
@@ -10,7 +10,7 @@ import java.net.URLClassLoader;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2025/02/18
|
* @since 2025/02/18
|
||||||
*/
|
*/
|
||||||
public class AntSwordStruct2Action {
|
public class AntSwordStruts2Action {
|
||||||
|
|
||||||
public static String pass;
|
public static String pass;
|
||||||
public static String headerName;
|
public static String headerName;
|
||||||
+1
-1
@@ -15,7 +15,7 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
*/
|
*/
|
||||||
public class BehinderStruct2Action {
|
public class BehinderStruts2Action {
|
||||||
public static String pass;
|
public static String pass;
|
||||||
public static String headerName;
|
public static String headerName;
|
||||||
public static String headerValue;
|
public static String headerValue;
|
||||||
+1
-1
@@ -10,7 +10,7 @@ import java.util.Scanner;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2025/12/8
|
* @since 2025/12/8
|
||||||
*/
|
*/
|
||||||
public class CommandStruct2Action {
|
public class CommandStruts2Action {
|
||||||
private static String paramName;
|
private static String paramName;
|
||||||
|
|
||||||
public String execute() throws Exception {
|
public String execute() throws Exception {
|
||||||
+1
-1
@@ -15,7 +15,7 @@ import java.net.URLClassLoader;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2024/12/15
|
* @since 2024/12/15
|
||||||
*/
|
*/
|
||||||
public class GodzillaStruct2Action {
|
public class GodzillaStruts2Action {
|
||||||
private static String key;
|
private static String key;
|
||||||
private static String pass;
|
private static String pass;
|
||||||
private static String md5;
|
private static String md5;
|
||||||
+1
-1
@@ -18,7 +18,7 @@ import java.util.zip.GZIPInputStream;
|
|||||||
* <p>
|
* <p>
|
||||||
* key: key
|
* key: key
|
||||||
*/
|
*/
|
||||||
public class NeoreGeorgStruct2Action {
|
public class NeoreGeorgStruts2Action {
|
||||||
public static String headerName;
|
public static String headerName;
|
||||||
public static String headerValue;
|
public static String headerValue;
|
||||||
|
|
||||||
+4
-4
@@ -16,7 +16,7 @@ import java.util.HashMap;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2024/12/15
|
* @since 2024/12/15
|
||||||
*/
|
*/
|
||||||
public class Suo5Struct2Action implements Runnable, HostnameVerifier, X509TrustManager {
|
public class Suo5Struts2Action implements Runnable, HostnameVerifier, X509TrustManager {
|
||||||
public static String headerName;
|
public static String headerName;
|
||||||
public static String headerValue;
|
public static String headerValue;
|
||||||
public static HashMap addrs = collectAddr();
|
public static HashMap addrs = collectAddr();
|
||||||
@@ -25,10 +25,10 @@ public class Suo5Struct2Action implements Runnable, HostnameVerifier, X509TrustM
|
|||||||
InputStream gInStream;
|
InputStream gInStream;
|
||||||
OutputStream gOutStream;
|
OutputStream gOutStream;
|
||||||
|
|
||||||
public Suo5Struct2Action() {
|
public Suo5Struts2Action() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Suo5Struct2Action(InputStream in, OutputStream out) {
|
public Suo5Struts2Action(InputStream in, OutputStream out) {
|
||||||
this.gInStream = in;
|
this.gInStream = in;
|
||||||
this.gOutStream = out;
|
this.gOutStream = out;
|
||||||
}
|
}
|
||||||
@@ -268,7 +268,7 @@ public class Suo5Struct2Action implements Runnable, HostnameVerifier, X509TrustM
|
|||||||
|
|
||||||
Thread t = null;
|
Thread t = null;
|
||||||
try {
|
try {
|
||||||
Suo5Struct2Action p = new Suo5Struct2Action(scInStream, respOutStream);
|
Suo5Struts2Action p = new Suo5Struts2Action(scInStream, respOutStream);
|
||||||
t = new Thread(p);
|
t = new Thread(p);
|
||||||
t.start();
|
t.start();
|
||||||
readReq(reqInputStream, scOutStream);
|
readReq(reqInputStream, scOutStream);
|
||||||
+2
-2
@@ -14,11 +14,11 @@ import java.util.zip.GZIPInputStream;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2025/12/9
|
* @since 2025/12/9
|
||||||
*/
|
*/
|
||||||
public class Suo5v2Struct2Action {
|
public class Suo5v2Struts2Action {
|
||||||
private static Class<?> suo5V2Class;
|
private static Class<?> suo5V2Class;
|
||||||
private static String suo5V2GZipBase64;
|
private static String suo5V2GZipBase64;
|
||||||
|
|
||||||
public Suo5v2Struct2Action() {
|
public Suo5v2Struts2Action() {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void execute() throws Exception {
|
public void execute() throws Exception {
|
||||||
+2
-2
@@ -106,8 +106,8 @@ public class ResponseBodyGenerator extends ByteBuddyShellGenerator<ResponseBodyC
|
|||||||
return WebLogicWriter.class;
|
return WebLogicWriter.class;
|
||||||
case Server.Apusic:
|
case Server.Apusic:
|
||||||
return ApusicWriter.class;
|
return ApusicWriter.class;
|
||||||
case Server.Struct2:
|
case Server.Struts2:
|
||||||
return Struct2Writer.class;
|
return Struts2Writer.class;
|
||||||
default:
|
default:
|
||||||
throw new GenerationException("responseBody not supported for server: " + probeContentConfig.getServer());
|
throw new GenerationException("responseBody not supported for server: " + probeContentConfig.getServer());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import java.util.Set;
|
|||||||
* HTTP 服务类型识别,主要识别 Servlet 容器实现,例如 WildFly 识别为 Undertow,Payara 识别为 GlassFish
|
* HTTP 服务类型识别,主要识别 Servlet 容器实现,例如 WildFly 识别为 Undertow,Payara 识别为 GlassFish
|
||||||
* 很多国产中间件都是基于 GlassFish 改的,都会识别为 GlassFish
|
* 很多国产中间件都是基于 GlassFish 改的,都会识别为 GlassFish
|
||||||
* 额外需要注意:
|
* 额外需要注意:
|
||||||
* 1. 不会识别 SpringWebMVC Struct2 这种框架,只识别其提供 HTTP 服务的 Servlet 容器类型
|
* 1. 不会识别 SpringWebMVC Struts2 这种框架,只识别其提供 HTTP 服务的 Servlet 容器类型
|
||||||
* 2. 识别的顺序很重要,部分类型的识别单独拿出来是不准确的,没有测试的情况下,不要以下的 if 判断顺序
|
* 2. 识别的顺序很重要,部分类型的识别单独拿出来是不准确的,没有测试的情况下,不要以下的 if 判断顺序
|
||||||
*
|
*
|
||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
|
|||||||
+2
-2
@@ -11,10 +11,10 @@ import java.lang.reflect.Method;
|
|||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2025/12/8
|
* @since 2025/12/8
|
||||||
*/
|
*/
|
||||||
public class Struct2Writer {
|
public class Struts2Writer {
|
||||||
private static boolean ok = false;
|
private static boolean ok = false;
|
||||||
|
|
||||||
public Struct2Writer() {
|
public Struts2Writer() {
|
||||||
if (ok) {
|
if (ok) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -16,7 +16,7 @@ public class ContainerTool {
|
|||||||
public static final MountableFile warExpressionFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-webapp-expression", "build", "libs", "vul-webapp-expression.war").toAbsolutePath());
|
public static final MountableFile warExpressionFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-webapp-expression", "build", "libs", "vul-webapp-expression.war").toAbsolutePath());
|
||||||
public static final MountableFile warDeserializeFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-webapp-deserialize", "build", "libs", "vul-webapp-deserialize.war").toAbsolutePath());
|
public static final MountableFile warDeserializeFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-webapp-deserialize", "build", "libs", "vul-webapp-deserialize.war").toAbsolutePath());
|
||||||
public static final MountableFile warFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-webapp", "build", "libs", "vul-webapp.war").toAbsolutePath(), 0666);
|
public static final MountableFile warFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-webapp", "build", "libs", "vul-webapp.war").toAbsolutePath(), 0666);
|
||||||
public static final MountableFile struct2WarFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-struct2", "build", "libs", "vul-struct2.war").toAbsolutePath());
|
public static final MountableFile struts2WarFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-struts2", "build", "libs", "vul-struts2.war").toAbsolutePath());
|
||||||
public static final MountableFile springBoot2WarFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-springboot2", "build", "libs", "vul-springboot2.war").toAbsolutePath());
|
public static final MountableFile springBoot2WarFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-springboot2", "build", "libs", "vul-springboot2.war").toAbsolutePath());
|
||||||
|
|
||||||
public static final MountableFile springBoot1JarFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-springboot1", "build", "libs", "vul-springboot1.jar").toAbsolutePath());
|
public static final MountableFile springBoot1JarFile = MountableFile.forHostPath(Path.of("..", "vul", "vul-springboot1", "build", "libs", "vul-springboot1.jar").toAbsolutePath());
|
||||||
|
|||||||
+4
-4
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.integration.memshell.struct2;
|
package com.reajason.javaweb.integration.memshell.struts2;
|
||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.AbstractContainerTest;
|
import com.reajason.javaweb.integration.AbstractContainerTest;
|
||||||
@@ -19,11 +19,11 @@ import java.util.List;
|
|||||||
* @since 2024/12/4
|
* @since 2024/12/4
|
||||||
*/
|
*/
|
||||||
@Testcontainers
|
@Testcontainers
|
||||||
public class Struct2ContainerTest extends AbstractContainerTest {
|
public class Struts2ContainerTest extends AbstractContainerTest {
|
||||||
private static final ContainerTestConfig CONFIG = ContainerTestConfig.builder()
|
private static final ContainerTestConfig CONFIG = ContainerTestConfig.builder()
|
||||||
.imageName("tomcat:8-jre8")
|
.imageName("tomcat:8-jre8")
|
||||||
.server(Server.Struct2)
|
.server(Server.Struts2)
|
||||||
.warFile(ContainerTool.struct2WarFile)
|
.warFile(ContainerTool.struts2WarFile)
|
||||||
.warDeployPath("/usr/local/tomcat/webapps/app.war")
|
.warDeployPath("/usr/local/tomcat/webapps/app.war")
|
||||||
.pidScript(ContainerTool.tomcatPid)
|
.pidScript(ContainerTool.tomcatPid)
|
||||||
.enableJspPackerTest(false)
|
.enableJspPackerTest(false)
|
||||||
+6
-6
@@ -1,4 +1,4 @@
|
|||||||
package com.reajason.javaweb.integration.probe.struct2;
|
package com.reajason.javaweb.integration.probe.struts2;
|
||||||
|
|
||||||
import com.reajason.javaweb.Server;
|
import com.reajason.javaweb.Server;
|
||||||
import com.reajason.javaweb.integration.ProbeAssertion;
|
import com.reajason.javaweb.integration.ProbeAssertion;
|
||||||
@@ -11,17 +11,17 @@ import org.testcontainers.containers.GenericContainer;
|
|||||||
import org.testcontainers.junit.jupiter.Container;
|
import org.testcontainers.junit.jupiter.Container;
|
||||||
import org.testcontainers.junit.jupiter.Testcontainers;
|
import org.testcontainers.junit.jupiter.Testcontainers;
|
||||||
|
|
||||||
import static com.reajason.javaweb.integration.ContainerTool.struct2WarFile;
|
import static com.reajason.javaweb.integration.ContainerTool.struts2WarFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author ReaJason
|
* @author ReaJason
|
||||||
* @since 2024/12/4
|
* @since 2024/12/4
|
||||||
*/
|
*/
|
||||||
@Testcontainers
|
@Testcontainers
|
||||||
public class Struct2ContainerTest extends AbstractProbeContainerTest {
|
public class Struts2ContainerTest extends AbstractProbeContainerTest {
|
||||||
|
|
||||||
private static final ProbeTestConfig CONFIG = ProbeTestConfig.tomcat("tomcat:8-jre8")
|
private static final ProbeTestConfig CONFIG = ProbeTestConfig.tomcat("tomcat:8-jre8")
|
||||||
.warFile(struct2WarFile)
|
.warFile(struts2WarFile)
|
||||||
.expectedJdkVersion("JRE|1.8.0_402|52")
|
.expectedJdkVersion("JRE|1.8.0_402|52")
|
||||||
.targetJdkVersion(Opcodes.V1_8)
|
.targetJdkVersion(Opcodes.V1_8)
|
||||||
.supportsBytecode(false)
|
.supportsBytecode(false)
|
||||||
@@ -47,7 +47,7 @@ public class Struct2ContainerTest extends AbstractProbeContainerTest {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
protected void testCommandReqHeaderResponseBody() {
|
protected void testCommandReqHeaderResponseBody() {
|
||||||
String url = getUrl();
|
String url = getUrl();
|
||||||
ProbeAssertion.responseCommandIsOk(url, Server.Struct2, Opcodes.V1_8);
|
ProbeAssertion.responseCommandIsOk(url, Server.Struts2, Opcodes.V1_8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -55,6 +55,6 @@ public class Struct2ContainerTest extends AbstractProbeContainerTest {
|
|||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
protected void testScriptEngineReqHeaderResponseBody() {
|
protected void testScriptEngineReqHeaderResponseBody() {
|
||||||
String url = getUrl();
|
String url = getUrl();
|
||||||
ProbeAssertion.responseScriptEngineIsOk(url, Server.Struct2, Opcodes.V1_8);
|
ProbeAssertion.responseScriptEngineIsOk(url, Server.Struts2, Opcodes.V1_8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,475 +0,0 @@
|
|||||||
# Generated At 2025-12-08 15:18:17
|
|
||||||
SystemProps:
|
|
||||||
java.vendor: Temurin
|
|
||||||
sun.java.launcher: SUN_STANDARD
|
|
||||||
catalina.base: /usr/local/tomcat
|
|
||||||
sun.management.compiler: HotSpot 64-Bit Tiered Compilers
|
|
||||||
catalina.useNaming: true
|
|
||||||
os.name: Linux
|
|
||||||
sun.boot.class.path: /opt/java/openjdk/lib/resources.jar:/opt/java/openjdk/lib/rt.jar:/opt/java/openjdk/lib/sunrsasign.jar:/opt/java/openjdk/lib/jsse.jar:/opt/java/openjdk/lib/jce.jar:/opt/java/openjdk/lib/charsets.jar:/opt/java/openjdk/lib/jfr.jar:/opt/java/openjdk/classes
|
|
||||||
java.util.logging.config.file: /usr/local/tomcat/conf/logging.properties
|
|
||||||
org.apache.el.GET_CLASSLOADER_USE_PRIVILEGED: false
|
|
||||||
java.vm.specification.vendor: Oracle Corporation
|
|
||||||
java.runtime.version: 1.8.0_402-b06
|
|
||||||
user.name: root
|
|
||||||
tomcat.util.scan.StandardJarScanFilter.jarsToScan: log4j-taglib*.jar,log4j-web*.jar,log4javascript*.jar,slf4j-taglib*.jar
|
|
||||||
shared.loader:
|
|
||||||
tomcat.util.buf.StringCache.byte.enabled: true
|
|
||||||
java.naming.factory.initial: org.apache.naming.java.javaURLContextFactory
|
|
||||||
user.language: en
|
|
||||||
sun.boot.library.path: /opt/java/openjdk/lib/aarch64
|
|
||||||
jdk.tls.ephemeralDHKeySize: 2048
|
|
||||||
java.version: 1.8.0_402
|
|
||||||
java.util.logging.manager: org.apache.juli.ClassLoaderLogManager
|
|
||||||
user.timezone: Etc/UTC
|
|
||||||
sun.arch.data.model: 64
|
|
||||||
java.util.concurrent.ForkJoinPool.common.threadFactory: org.apache.catalina.startup.SafeForkJoinWorkerThreadFactory
|
|
||||||
java.endorsed.dirs: /opt/java/openjdk/lib/endorsed
|
|
||||||
sun.cpu.isalist:
|
|
||||||
sun.jnu.encoding: UTF-8
|
|
||||||
file.encoding.pkg: sun.io
|
|
||||||
package.access: sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat.
|
|
||||||
file.separator: /
|
|
||||||
java.specification.name: Java Platform API Specification
|
|
||||||
java.class.version: 52.0
|
|
||||||
user.country: US
|
|
||||||
java.home: /opt/java/openjdk
|
|
||||||
java.vm.info: mixed mode
|
|
||||||
os.version: 6.17.8-orbstack-00308-g8f9c941121b1
|
|
||||||
path.separator: :
|
|
||||||
java.vm.version: 25.402-b06
|
|
||||||
java.protocol.handler.pkgs: org.apache.catalina.webresources
|
|
||||||
java.awt.printerjob: sun.print.PSPrinterJob
|
|
||||||
sun.io.unicode.encoding: UnicodeLittle
|
|
||||||
java.specification.maintenance.version: 5
|
|
||||||
awt.toolkit: sun.awt.X11.XToolkit
|
|
||||||
package.definition: sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.naming.,org.apache.tomcat.
|
|
||||||
java.naming.factory.url.pkgs: org.apache.naming
|
|
||||||
user.home: /root
|
|
||||||
org.apache.catalina.security.SecurityListener.UMASK: 0027
|
|
||||||
java.specification.vendor: Oracle Corporation
|
|
||||||
tomcat.util.scan.StandardJarScanFilter.jarsToSkip: annotations-api.jar,ant-junit*.jar,ant-launcher*.jar,ant*.jar,asm-*.jar,aspectj*.jar,bcel*.jar,biz.aQute.bnd*.jar,bootstrap.jar,catalina-ant.jar,catalina-ha.jar,catalina-storeconfig.jar,catalina-tribes.jar,catalina-ws.jar,catalina.jar,cglib-*.jar,cobertura-*.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,commons-compress*.jar,commons-daemon.jar,commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,commons-math*.jar,commons-pool*.jar,derby-*.jar,dom4j-*.jar,easymock-*.jar,ecj-*.jar,el-api.jar,geronimo-spec-jaxrpc*.jar,h2*.jar,ha-api-*.jar,hamcrest-*.jar,hibernate*.jar,httpclient*.jar,icu4j-*.jar,jasper-el.jar,jasper.jar,jaspic-api.jar,jaxb-*.jar,jaxen-*.jar,jaxws-rt-*.jar,jdom-*.jar,jetty-*.jar,jmx-tools.jar,jmx.jar,jsp-api.jar,jstl.jar,jta*.jar,junit-*.jar,junit.jar,log4j*.jar,mail*.jar,objenesis-*.jar,oraclepki.jar,org.hamcrest.core_*.jar,org.junit_*.jar,oro-*.jar,servlet-api-*.jar,servlet-api.jar,slf4j*.jar,taglibs-standard-spec-*.jar,tagsoup-*.jar,tomcat-api.jar,tomcat-coyote.jar,tomcat-dbcp.jar,tomcat-i18n-*.jar,tomcat-jdbc.jar,tomcat-jni.jar,tomcat-juli-adapters.jar,tomcat-juli.jar,tomcat-util-scan.jar,tomcat-util.jar,tomcat-websocket.jar,tools.jar,unboundid-ldapsdk-*.jar,websocket-api.jar,wsdl4j*.jar,xercesImpl.jar,xml-apis.jar,xmlParserAPIs-*.jar,xmlParserAPIs.jar,xom-*.jar
|
|
||||||
java.library.path: /usr/local/tomcat/native-jni-lib:/usr/java/packages/lib/aarch64:/lib:/usr/lib
|
|
||||||
java.vendor.url: https://adoptium.net/
|
|
||||||
java.vm.vendor: Temurin
|
|
||||||
common.loader: "${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
|
|
||||||
java.runtime.name: OpenJDK Runtime Environment
|
|
||||||
sun.java.command: org.apache.catalina.startup.Bootstrap start
|
|
||||||
java.class.path: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
|
|
||||||
java.vm.specification.name: Java Virtual Machine Specification
|
|
||||||
java.vm.specification.version: 1.8
|
|
||||||
catalina.home: /usr/local/tomcat
|
|
||||||
sun.cpu.endian: little
|
|
||||||
sun.os.patch.level: unknown
|
|
||||||
java.io.tmpdir: /usr/local/tomcat/temp
|
|
||||||
java.vendor.url.bug: https://github.com/adoptium/adoptium-support/issues
|
|
||||||
server.loader:
|
|
||||||
os.arch: aarch64
|
|
||||||
java.awt.graphicsenv: sun.awt.X11GraphicsEnvironment
|
|
||||||
java.ext.dirs: /opt/java/openjdk/lib/ext:/usr/java/packages/lib/ext
|
|
||||||
user.dir: /usr/local/tomcat
|
|
||||||
line.separator:
|
|
||||||
|
|
||||||
java.vm.name: OpenJDK 64-Bit Server VM
|
|
||||||
ignore.endorsed.dirs:
|
|
||||||
file.encoding: UTF-8
|
|
||||||
java.specification.version: 1.8
|
|
||||||
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
ThreadStacks:
|
|
||||||
"Signal Dispatcher" #4 daemon [RUNNABLE]
|
|
||||||
java.lang.Thread.State: RUNNABLE
|
|
||||||
|
|
||||||
"http-nio-8080-exec-8" #24 daemon [RUNNABLE]
|
|
||||||
java.lang.Thread.State: RUNNABLE
|
|
||||||
at java.lang.Thread.dumpThreads(Native Method)
|
|
||||||
at java.lang.Thread.getAllStackTraces(Thread.java:1615)
|
|
||||||
at com.fasterxml.jackson.ZsoNQ.ErrorHandler.toString(BasicInfoPrinter.java:26)
|
|
||||||
at java.lang.String.valueOf(String.java:2994)
|
|
||||||
at org.apache.catalina.connector.CoyoteWriter.print(CoyoteWriter.java:243)
|
|
||||||
at Base64ClassLoaderAction.execute(Base64ClassLoaderAction.java:38)
|
|
||||||
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
|
||||||
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
|
||||||
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
|
||||||
at java.lang.reflect.Method.invoke(Method.java:498)
|
|
||||||
at ognl.OgnlRuntime.invokeMethodInsideSandbox(OgnlRuntime.java:1266)
|
|
||||||
at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:1251)
|
|
||||||
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1969)
|
|
||||||
at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
|
|
||||||
at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:98)
|
|
||||||
at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:90)
|
|
||||||
at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:2045)
|
|
||||||
at ognl.ASTMethod.getValueBody(ASTMethod.java:97)
|
|
||||||
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
|
|
||||||
at ognl.SimpleNode.getValue(SimpleNode.java:258)
|
|
||||||
at ognl.Ognl.getValue(Ognl.java:537)
|
|
||||||
at ognl.Ognl.getValue(Ognl.java:501)
|
|
||||||
at com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:492)
|
|
||||||
at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecuteMethod(OgnlUtil.java:544)
|
|
||||||
at com.opensymphony.xwork2.ognl.OgnlUtil.callMethod(OgnlUtil.java:490)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:438)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:293)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254)
|
|
||||||
at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:250)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179)
|
|
||||||
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
|
|
||||||
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49)
|
|
||||||
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:142)
|
|
||||||
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:140)
|
|
||||||
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:140)
|
|
||||||
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:201)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:133)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:101)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:142)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:160)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
|
|
||||||
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:121)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:167)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:228)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196)
|
|
||||||
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249)
|
|
||||||
at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48)
|
|
||||||
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:574)
|
|
||||||
at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
|
|
||||||
at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141)
|
|
||||||
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:181)
|
|
||||||
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:156)
|
|
||||||
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
|
|
||||||
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
|
|
||||||
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
|
|
||||||
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
|
|
||||||
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
|
|
||||||
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:679)
|
|
||||||
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
|
|
||||||
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
|
|
||||||
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:617)
|
|
||||||
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
|
|
||||||
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:934)
|
|
||||||
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1690)
|
|
||||||
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-6" #22 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"AsyncFileHandlerWriter-1" #12 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@44aea3d6
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingDeque.takeFirst(LinkedBlockingDeque.java:492)
|
|
||||||
at java.util.concurrent.LinkedBlockingDeque.take(LinkedBlockingDeque.java:680)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-AsyncTimeout" #29 daemon [TIMED_WAITING]
|
|
||||||
java.lang.Thread.State: TIMED_WAITING
|
|
||||||
at java.lang.Thread.sleep(Native Method)
|
|
||||||
at org.apache.coyote.AbstractProtocol$AsyncTimeout.run(AbstractProtocol.java:1291)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-10" #26 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"Catalina-startStop-1" #14 daemon [TIMED_WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@259b735f
|
|
||||||
java.lang.Thread.State: TIMED_WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"localhost-startStop-1" #15 daemon [TIMED_WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@42ede5b2
|
|
||||||
java.lang.Thread.State: TIMED_WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
|
|
||||||
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-5" #21 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-2" #18 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"GC Daemon" #13 daemon [TIMED_WAITING] on sun.misc.GC$LatencyLock@6e2b855c
|
|
||||||
java.lang.Thread.State: TIMED_WAITING
|
|
||||||
at java.lang.Object.wait(Native Method)
|
|
||||||
at sun.misc.GC$Daemon.run(GC.java:117)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-9" #25 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-4" #20 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-7" #23 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"Reference Handler" #2 daemon [WAITING] on java.lang.ref.Reference$Lock@5faa2b5c
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at java.lang.Object.wait(Native Method)
|
|
||||||
at java.lang.Object.wait(Object.java:502)
|
|
||||||
at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
|
|
||||||
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
|
|
||||||
|
|
||||||
"http-nio-8080-Acceptor" #28 daemon [RUNNABLE]
|
|
||||||
java.lang.Thread.State: RUNNABLE
|
|
||||||
at sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)
|
|
||||||
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:421)
|
|
||||||
at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:249)
|
|
||||||
at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:449)
|
|
||||||
at org.apache.tomcat.util.net.NioEndpoint.serverSocketAccept(NioEndpoint.java:63)
|
|
||||||
at org.apache.tomcat.util.net.Acceptor.run(Acceptor.java:129)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"ContainerBackgroundProcessor[StandardEngine[Catalina]]" #16 daemon [TIMED_WAITING]
|
|
||||||
java.lang.Thread.State: TIMED_WAITING
|
|
||||||
at java.lang.Thread.sleep(Native Method)
|
|
||||||
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1300)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"main" #1 [RUNNABLE]
|
|
||||||
java.lang.Thread.State: RUNNABLE
|
|
||||||
at java.net.PlainSocketImpl.socketAccept(Native Method)
|
|
||||||
at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
|
|
||||||
at java.net.ServerSocket.implAccept(ServerSocket.java:560)
|
|
||||||
at java.net.ServerSocket.accept(ServerSocket.java:528)
|
|
||||||
at org.apache.catalina.core.StandardServer.await(StandardServer.java:468)
|
|
||||||
at org.apache.catalina.startup.Catalina.await(Catalina.java:730)
|
|
||||||
at org.apache.catalina.startup.Catalina.start(Catalina.java:678)
|
|
||||||
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
|
|
||||||
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
|
|
||||||
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
|
|
||||||
at java.lang.reflect.Method.invoke(Method.java:498)
|
|
||||||
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
|
|
||||||
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-3" #19 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"http-nio-8080-exec-1" #17 daemon [WAITING] on java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject@74bb0a31
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at sun.misc.Unsafe.park(Native Method)
|
|
||||||
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
|
|
||||||
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
|
|
||||||
at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:141)
|
|
||||||
at org.apache.tomcat.util.threads.TaskQueue.take(TaskQueue.java:33)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1114)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1176)
|
|
||||||
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
|
|
||||||
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
"Finalizer" #3 daemon [WAITING] on java.lang.ref.ReferenceQueue$Lock@21d5aa7d
|
|
||||||
java.lang.Thread.State: WAITING
|
|
||||||
at java.lang.Object.wait(Native Method)
|
|
||||||
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
|
|
||||||
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:165)
|
|
||||||
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:188)
|
|
||||||
|
|
||||||
"http-nio-8080-Poller" #27 daemon [RUNNABLE]
|
|
||||||
java.lang.Thread.State: RUNNABLE
|
|
||||||
at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
|
|
||||||
at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:269)
|
|
||||||
at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:93)
|
|
||||||
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
|
|
||||||
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
|
|
||||||
at org.apache.tomcat.util.net.NioEndpoint$Poller.run(NioEndpoint.java:713)
|
|
||||||
at java.lang.Thread.run(Thread.java:750)
|
|
||||||
|
|
||||||
|
|
||||||
===========================================
|
|
||||||
|
|
||||||
StackClassNames:
|
|
||||||
Base64ClassLoaderAction
|
|
||||||
com.fasterxml.jackson.ZsoNQ.ErrorHandler
|
|
||||||
com.opensymphony.xwork2.DefaultActionInvocation
|
|
||||||
com.opensymphony.xwork2.interceptor.AliasInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.ChainingInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.ParametersInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.PrepareInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor
|
|
||||||
com.opensymphony.xwork2.interceptor.StaticParametersInterceptor
|
|
||||||
com.opensymphony.xwork2.ognl.OgnlUtil
|
|
||||||
com.opensymphony.xwork2.ognl.OgnlUtil$3
|
|
||||||
com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor
|
|
||||||
com.opensymphony.xwork2.validator.ValidationInterceptor
|
|
||||||
ognl.ASTMethod
|
|
||||||
ognl.ObjectMethodAccessor
|
|
||||||
ognl.Ognl
|
|
||||||
ognl.OgnlRuntime
|
|
||||||
ognl.SimpleNode
|
|
||||||
org.apache.catalina.authenticator.AuthenticatorBase
|
|
||||||
org.apache.catalina.connector.CoyoteAdapter
|
|
||||||
org.apache.catalina.connector.CoyoteWriter
|
|
||||||
org.apache.catalina.core.ApplicationFilterChain
|
|
||||||
org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor
|
|
||||||
org.apache.catalina.core.StandardContextValve
|
|
||||||
org.apache.catalina.core.StandardEngineValve
|
|
||||||
org.apache.catalina.core.StandardHostValve
|
|
||||||
org.apache.catalina.core.StandardServer
|
|
||||||
org.apache.catalina.core.StandardWrapperValve
|
|
||||||
org.apache.catalina.startup.Bootstrap
|
|
||||||
org.apache.catalina.startup.Catalina
|
|
||||||
org.apache.catalina.valves.AbstractAccessLogValve
|
|
||||||
org.apache.catalina.valves.ErrorReportValve
|
|
||||||
org.apache.coyote.AbstractProcessorLight
|
|
||||||
org.apache.coyote.AbstractProtocol$AsyncTimeout
|
|
||||||
org.apache.coyote.AbstractProtocol$ConnectionHandler
|
|
||||||
org.apache.coyote.http11.Http11Processor
|
|
||||||
org.apache.struts2.dispatcher.Dispatcher
|
|
||||||
org.apache.struts2.dispatcher.ExecuteOperations
|
|
||||||
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
|
|
||||||
org.apache.struts2.factory.StrutsActionProxy
|
|
||||||
org.apache.struts2.interceptor.CheckboxInterceptor
|
|
||||||
org.apache.struts2.interceptor.DateTextFieldInterceptor
|
|
||||||
org.apache.struts2.interceptor.FileUploadInterceptor
|
|
||||||
org.apache.struts2.interceptor.I18nInterceptor
|
|
||||||
org.apache.struts2.interceptor.MultiselectInterceptor
|
|
||||||
org.apache.struts2.interceptor.ServletConfigInterceptor
|
|
||||||
org.apache.struts2.interceptor.debugging.DebuggingInterceptor
|
|
||||||
org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor
|
|
||||||
org.apache.tomcat.util.net.Acceptor
|
|
||||||
org.apache.tomcat.util.net.NioEndpoint
|
|
||||||
org.apache.tomcat.util.net.NioEndpoint$Poller
|
|
||||||
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor
|
|
||||||
org.apache.tomcat.util.net.SocketProcessorBase
|
|
||||||
org.apache.tomcat.util.threads.TaskQueue
|
|
||||||
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable
|
|
||||||
org.apache.tomcat.util.threads.ThreadPoolExecutor
|
|
||||||
org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker
|
|
||||||
+1
-1
@@ -37,7 +37,7 @@ include("vul:vul-webapp")
|
|||||||
include("vul:vul-webapp-jakarta")
|
include("vul:vul-webapp-jakarta")
|
||||||
include("vul:vul-webapp-expression")
|
include("vul:vul-webapp-expression")
|
||||||
include("vul:vul-webapp-deserialize")
|
include("vul:vul-webapp-deserialize")
|
||||||
include("vul:vul-struct2")
|
include("vul:vul-struts2")
|
||||||
include("vul:vul-springboot1")
|
include("vul:vul-springboot1")
|
||||||
include("vul:vul-springboot2")
|
include("vul:vul-springboot2")
|
||||||
include("vul:vul-springboot2-jetty")
|
include("vul:vul-springboot2-jetty")
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
### Added
|
### Added
|
||||||
|
|
||||||
1. 支持 Suo5 V2 版本内存马生成([#118](https://github.com/ReaJason/MemShellParty/issues/118) By @ReaJason Thanks @zema1)
|
1. 支持 Suo5 V2 版本内存马生成([#118](https://github.com/ReaJason/MemShellParty/issues/118) By @ReaJason Thanks @zema1)
|
||||||
2. 支持 Struct2 Action 内存马与回显马生成
|
2. 支持 Struts2 Action 内存马与回显马生成
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ inject(context, shell);
|
|||||||
| (Undertow)AgentServletHandler | [GodzillaUndertowServletHandler](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaUndertowServletHandler.java) |
|
| (Undertow)AgentServletHandler | [GodzillaUndertowServletHandler](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaUndertowServletHandler.java) |
|
||||||
| (Jetty)Handler | [GodzillaJettyHandler](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyHandler.java) |
|
| (Jetty)Handler | [GodzillaJettyHandler](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyHandler.java) |
|
||||||
| (Jetty)Customizer | [GodzillaJettyCustomizer](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyCustomizer.java) |
|
| (Jetty)Customizer | [GodzillaJettyCustomizer](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaJettyCustomizer.java) |
|
||||||
| (Struct2)Action | [GodzillaStruct2Action](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaStruct2Action.java) |
|
| (Struts2)Action | [GodzillaStruts2Action](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/godzilla/GodzillaStruts2Action.java) |
|
||||||
| (Tomcat)Upgrade | [CommandUpgrade](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandUpgrade.java) |
|
| (Tomcat)Upgrade | [CommandUpgrade](https://github.com/ReaJason/MemShellParty/blob/master/generator/src/main/java/com/reajason/javaweb/memshell/shelltool/command/CommandUpgrade.java) |
|
||||||
|
|
||||||
### 参考步骤
|
### 参考步骤
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ description: 了解和使用那些可能用到的一键开关
|
|||||||
- [x] SpringWebMvc
|
- [x] SpringWebMvc
|
||||||
- [x] SpringWebFlux
|
- [x] SpringWebFlux
|
||||||
- [x] XXLJOB
|
- [x] XXLJOB
|
||||||
- [x] Struct2
|
- [x] Struts2
|
||||||
|
|
||||||
### 服务版本
|
### 服务版本
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"memshell-core-config",
|
"memshell-core-config",
|
||||||
"servlet",
|
"servlet",
|
||||||
"springweb",
|
"springweb",
|
||||||
"struct2-shell",
|
"struts2-shell",
|
||||||
"middleware",
|
"middleware",
|
||||||
"shelltool",
|
"shelltool",
|
||||||
"agent-shell",
|
"agent-shell",
|
||||||
|
|||||||
@@ -11,6 +11,6 @@
|
|||||||
"tongweb",
|
"tongweb",
|
||||||
"apusic",
|
"apusic",
|
||||||
"springwebmvc",
|
"springwebmvc",
|
||||||
"struct2"
|
"struts2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: Struct2
|
|
||||||
---
|
|
||||||
|
|
||||||
WIP
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: Struts2
|
||||||
|
---
|
||||||
|
|
||||||
|
WIP
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
title: Struct2 框架内存马
|
|
||||||
---
|
|
||||||
|
|
||||||
## Action 内存马
|
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
title: Struts2 框架内存马
|
||||||
|
---
|
||||||
|
|
||||||
|
## Action 内存马
|
||||||
Reference in New Issue
Block a user