pen4uin / java-memshell-generator

一款支持自定义的 Java 内存马生成工具|A customizable Java in-memory webshell generation tool.
1.69k stars 187 forks source link

跨线程问题 #29

Open steverpm890 opened 1 month ago

steverpm890 commented 1 month ago

在非Undertow线程,注入不成功。 调试了,发现,是在getContext,这里获取失败

pen4uin commented 1 month ago

你贴一下 undertow 版本 和 jdk 版本吧

steverpm890 commented 1 month ago

starting server: Undertow - 2.2.10.Final jdk11 我调了下,发现不是版本的问题 Object requestContext = invokeMethod(threads[i].getContextClassLoader().loadClass("io.undertow.servlet.handlers.ServletRequestContext"), "current"); Object servletContext = invokeMethod(requestContext, "getCurrentServletContext");

这2句,在非undertow线程执行,是有问题,如果当前,没有请求,是获取不到servletContext的 因为在io.undertow.servlet.handlers.ServletRequestContext setCurrentRequestContext,一个request完成后,这里会被置空,也就是ThreadLocal,会被清掉