一些常用的内存马整理

admin 2023年9月21日10:12:32评论16 views字数 9410阅读31分22秒阅读模式

免责声明:由于传播、利用本公众号李白你好所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号李白你好及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!


1

介绍

一些中间件的内存马

Middleware: Tomcat、Weblogic、Jetty、JBoss、Glassfish、Resin、TongWebFramework: SpringMemShell: Listener、Filter、Servlet、Agent
Version:Tomcat: 8.5.61Weblogic: 12.2.1.3.0Resin: 4.0.65Jetty: 9.4.44.v20210927JBoss: 6.1.0.FinalGlassfish: 4.1.11TongWeb: 6.1

2

各种内存马

Tomcat

代码结构

org.apache.catalina.core.StandardContext  (Listener)  ——applicationListeners("com.test.MyListener")  ——applicationEventListenersList(MyListener@2995)  (Filter)  ——filterConfigs("MyFilter"->{ApplicationFilterConfig@3869}"ApplicationFilterConfig[name=MyFilter,filterClass=com.test.MyFilter]")    ——"MyFilter"      ——value        ——filterDef->{FilterDef@3883}"FilterDef[filterName=MyFilter,filiterClass=com.test.MyFilter]"  ——filterDefs("MyFilter"->{FilterDef@3877}"FilterDef[filterName=Myfilter,filterClass=com.test.MyFilter]")  ——filterMaps    ——array(Tomcat 7,8,9; no array in Tomcat 6)      ——0("FilterMap[filterName=MyFilter,urlPattern=/mem]")  (Servlet)  ——servletMappings    ——"/my"->"MyServlet"  ——children    ——"MyServlet"->{StandardWrapper@3903}"StandardEngine[Catalina].StandardHost[localhost].StandardContext[/xxx]"

版本之间的差异

// Filter// Tomcat 8org.apache.tomcat.util.descriptor.web.FilterMaporg.apache.tomcat.util.descriptor.web.FilterDef// Tomcat 7org.apache.catalina.deploy.FilterMaporg.apache.catalina.deploy.FilterDef

获取上下文的方法

ThreadGroup.threads ->  http-nio-8088-Acceptor-0 ->    NioEndpoint$Acceptor ->      NioEndpoint ->        AbstractProtocol$ConnectionHandler ->          Http11NioProtocol ->            CoyoteAdapter ->              Connector ->                StandardService ->                  StandardEngine ->                    StandardHost ->                      StandardContext


Weblogic

代码结构

WebAppServletContext  (Listener)  ——eventsManager    ——requestListeners(type of ServletRequestListener)    ——ctxListeners(type of WebLoigcServletContextListener)  (Filter)  ——filterManager    ——filters      ——key="MyFilter"      ——value={FilterWrapper@24882}        ——filterName="MyFilter"        ——filterClassName="com.test.MyFilter"        ——filter={MyFilter@24899}    ——filterPatternList       ——0        ——filterName="MyFilter"        ——map={ServletMapping@24888}          ——matchMap            ——"/mem"  (Servlet)  ——servletMapping    ——matchMap      ——"/test"->{StandardURLMapping$FullMatchNode@18313}        ——key="/test"        ——value={StandardURLMapping$FullMatchNode@26097}          ——exactValue={URLMatchHelper@26114}            ——pattern="/test"            ——servletStub={ServletStubImpl}    ——extensionMap  ——servletStubs    ——"MyServlet"->{ServletStubImpl@18288}      ——key="MyServlet"      ——value={ServletStubImpl@26064}        ——name="MyServlet"        ——className="com.test.MyServlet"  ——classLoader    ——cachedClasses      ——"com.test.MyServlet"      ——"com.test.MyFilter"      ——"com.test.MyListener"        ——key="com.test.MyListener"        ——value={Class@17035}          ——name="com.test.MyListener"          ——classLoader

获取上下文的方法

ThreadGroup.threads ->  ExecuteThread.workEntry ->    ContainerSupportProviderImpl$WlsRequestExecutor ->      HttpConnectionHandler ->        ServletRequestImpl ->          WebAppServletContext

Thread(weblogic.timers.internal.TimerThread) -> TimerManagerImpl -> ServerTimeImpl -> AsyncContextTimer -> WebAppServletContext some threads:weblogic.server.channels.ServerListenThreadweblogic.work.ExecuteThreadweblogic.kernel.ServerExecuteThreadweblogic.timers.internal.TimerThread$Threadcom.oracle.common.internal.util.TimerThreadcom.octetstring.vde.DoSManagercom.octetstring.vde.backend.standard.TransactionProcessor...


Resin

com.caucho.server.webapp.WebApp  (Listener)  ——_listeners    ——0      ——_listenerClass={Class@3501}        ——name="com.test.MyListener"      ——_object={MyListener@3557}    (Filter)  ——_filterManager    ——_filters      ——"MyFilter"        ——key="MyFilter"        ——vlaue={FilterConfigImpl}          ——_filterName="MyFilter"          ——_filterClassName="com.test.MyFilter"          ——_filterClass={Class@3480}"com.test.MyFilter"          ——_filterManager  ——_filterMapper    ——_filterMap      ——0        ——_urlPattern="/mem"        ——_filterName="MyFilter"  (Servlet)  ——_servletManager    ——_servlets      ——"MyServlet"(ServletConfigImpl@5758)  ——_servletMapper    ——_urlPatterns      ——"MyServlet"        ——key="MyServlet"        ——value={HashSet@5800}          ——0="/test"

不同版本得差异

// filter// Resin 4_webApp.getClass().getDeclaredMethod("addFilter",FilterConfigImpl.class)_webApp.getClass().getDeclaredField("_filterMapper")_webApp.getClass().getDeclaredField("_loginFilterMapper")
// Resin 3_webApp.getClass().getSuperClass().getDeclaredMethod("addFilter",FilterConfigImpl.class)_webApp.getClass().getSuperClass().getDeclaredField("_loginFilterMapper")
//Listener// Resin 4com.caucho.server.webapp.ListenerConfig_webApp.getClass().getDeclaredMethod("addListener",ListenerConfig.class)
// Resin 3com.caucho.server.webapp.Listener_webApp.getClass().getSuperClass().getDeclaredMethod("addListener",Listener.class)

获取上下文的方法

com.caucho.server.dispatch.ServletInvocation ->  HttpServletRequestImpl ->    WebApp


Jetty

代码结构

org.eclipse.jetty.webapp.WebAppContext  (Listener)  ——_eventListeners(WebAppContext->ServletContextHandler->ContextHandler)    ——0={IntrospectorCleaner@3941}    ——1={MyListener@3341}  ——_servletRequestListeners    ——0={MyListener@3341}  ——_servletHandler    (Filter)    ——_filters      ——0={FilterHolder@3970}        ——_filter={MyFilter@3974}        ——_name="MyFilter"        ——_class={Class@3152}"class com.test.MyFilter"        ——_className="com.test.MyFilter"    ——_filterMappings      ——0={FilterMapping@3987}"[/filter]/[]/[REQUEST]=>MyFilter"         ——_filterName="MyFilter"         ——_holder={FilterHolder@3970} "MyFilter==test.MyFilter@7f2f9ebc{inst=true,async=false,src=DESCRIPTOR:file:///xxx/WEB-INF/web.xml}"         ——_pathSpecs={String[1]@3995}["/filter"]    ——_filterNameMap      ——"MyFilter" -> {FilterHolder@3970}        ——key="MyFilter"        ——value={FilterHolder@3970}    (Servlet)    ——_servlets      ——0={ServletHolder@4073}        ——_name="MyServlet"        ——_class={Class@3152}"class com.test.MyServlet"        ——_className="com.test.MyServlet"    ——_servletMappings      ——0={ServletMapping@4085}[/servlet]=>MyServlet        ——_servletname="MyServlet"        ——_pathSpecs={String[1]@3995}["/servlet"]

获取上下文的方法

java.lang.ThreadLocal$ThreadLocalMap$Entry ->  org.eclipse.jetty.webapp.WebAppContext$Context ->    WebAppContext


JBoss

代码结构

org.apache.catalina.core.StandardContext  (Listener)  ——applicationListeners("com.test.MyListener")  ——applicationEventListenersInstances(Object[1]@12599)    ——0={MyListener@11482}  ——listenersInstances(Object[1]@12599)    ——0={MyListener@11482}  (Filter)  ——filterConfigs("MyFilter"->{ApplicationFilterConfig@3869}"ApplicationFilterConfig[name=MyFilter,filterClass=com.test.MyFilter]")    ——"MyFilter"      ——value        ——filterDef->{FilterDef@3883}"FilterDef[filterName=MyFilter,filiterClass=com.test.MyFilter]"        ——filter={MyFilter@12685}  ——filterDefs("MyFilter"->{FilterDef@3877}"FilterDef[filterName=Myfilter,filterClass=com.test.MyFilter]")  ——filterMaps    ——0={FilterMap@12703}"FilterMap[filterName=MyFilter,urlPattern=/filter]"  (Servlet)  ——servletMappings    ——"/my"->"MyServlet"  ——children    ——"MyServlet"->{StandardWrapper@3903}"StandardEngine[Catalina].StandardHost[localhost].StandardContext[/xxx]"

不同版本得差异

// FilterFilterMap: addURLPattern in JBoss 6; setURLPattern in JBoss 4

获取上下文的方法

ThreadGroup.threads ->  http-8088-Acceptor-0 ->    JioEndpoint$Acceptor ->      JioEndpoint ->        Http11NioProtocol$Http11ConnectionHandler ->          RequestGroupInfo ->            Request ->              StandardContext


Glassfish

代码结构

com.sun.enterprise.web.WebModule(.Superclass.Superclass-> org.apache.catalina.core.StandardContext)  (Listener)  ——eventListeners(ArrayList@8376)    ——0={MyListener@7079}  (Filter)  ——filterConfigs("MyFilter"->{ApplicationFilterConfig@3869}"ApplicationFilterConfig[name=MyFilter,filterClass=com.test.MyFilter]")    ——"MyFilter"      ——key="MyFilter"      ——value        ——filterDef->{FilterDef@3883}"FilterDef[filterName=MyFilter,filiterClass=com.test.MyFilter]"        ——filter={MyFilter@12685}  ——filterDefs("MyFilter"->{FilterDef@3877}"FilterDef[filterName=Myfilter,filterClass=com.test.MyFilter]")  ——filterMaps    ——0={FilterMap@12703}"FilterMap[filterName=MyFilter,urlPattern=/filter]"      ——filterName="MyFilter"      ——urlPattern="/filter"  (Servlet)  ——servletMappings    ——"/my"->"MyServlet"  ——children    ——"MyServlet"->{StandardWrapper@3903}"StandardEngine[Catalina].StandardHost[localhost].StandardContext[/xxx]"  ——servletRegisMap={ConcurrentHashMap@7141}    ——"MyServlet"->{WebServletRegistrationImpl@7222}

获取上下文的方法

ThreadGroup.threads ->  Thread[ContainerBackgroundProcessor] ->    ContainerBase$ContainerBackgroundProcessor ->      WebModule


TongWeb

代码结构

com.tongweb.web.thor.core.ThorStandardContext(.Superclass-> com.tongweb.web.thor.core.StandardContext)  (Listener)  ——applicationListeners  (Filter)  ——filterConfigs={HaashMap@11475}    ——table      ——0        ——key="MyFilter"        ——value={ApplicationFilterConfig@11543}          ——filter={MyFilter@12685}          ——filterDef->{FilterDef@3883}"FilterDef[filterName=MyFilter,filiterClass=com.test.MyFilter]"            ——filterClass="com.test.MyFilter"            ——filterName="MyFilter"  ——filterDefs={HaashMap@11476}    ——table      ——0       ——key="MyFilter"       ——value={FilterDef@11547}        ——filterClass="com.test.MyFilter"        ——filterName="MyFilter"  ——filterMaps    ——array={FilterMap[2]@11558}      ——0={FilterMap@11559}"FilterMap[filterName=MyFilter,urlPattern=/filter]"        ——filterName="MyFilter"        ——urlPatterns={String[1]@11563}          ——0="/filter"  (Servlet)  ——servletMappings(HashMap@11490)    ——table={HashMap$Entry[16]@11566}      ——0={HashMap$Entry@11568}        ——key="/servlet"        ——value="MyServlet"  ——children(HashMap@11510)    ——table      ——0={HashMap$Entry@11583}        ——key="MyServlet"        ——value={ThorStandardWrapper@11452}          ——instance={MyFilter@11368}          ——servletClass="com.test.MyFilter"          ——mappings={ArrayList@11592}            ——elementData={Object[2]@11610}              ——0="/servlet"          ——name="MyFilter"

获取上下文的方法

ThreadGroup.threads ->  http-nio-8088-Acceptor-0 ->    NioEndpoint$Acceptor ->      NioEndpoint ->        ThorHttp11NioProtocol$ThorHttpConnectionHandler ->          RequestGroupInfo ->            ThorRequest ->              ThorStandardContext

3

注意

(1) web.xml中没有配置监听器/过滤器/servlet

(2)这个监听器/过滤器/servlet没有类文件

(3)这个监听器/过滤器/servlet的加载器是com. sun.org.apache.bcel.internal.uti.classloader /com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl$TransletClassLoader等等

https://github.com/ax1sX/MemShell

一些常用的内存马整理

4

关注我们


一些常用的内存马整理

最新通达OA漏洞利用工具


一些常用的内存马整理

攻防演习之三天拿下官网站群


一些常用的内存马整理

高危漏洞利用工具Apt_t00ls-v0.7

一些常用的内存马整理
一些常用的内存马整理
一些常用的内存马整理
一些常用的内存马整理

原文始发于微信公众号(李白你好):一些常用的内存马整理

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年9月21日10:12:32
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   一些常用的内存马整理http://cn-sec.com/archives/2054330.html

发表评论

匿名网友 填写信息