weblogic 常见thread dump分析

weblogic空闲进程,weblogic.work.ExecuteThread.waitForRequest表示在等待请求。备用线程,这些线程不需要处理当前请求被放入standby池内,当活动的线程池内需要更多线程时,这些线程将被激活。
"[STANDBY] ExecuteThread: '31' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d802d000 nid=0xf38e in Object.wait() [0x00007ff154bca000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:503)
at weblogic.work.ExecuteThread.waitForRequest(ExecuteThread.java:248)
- locked <0x000000073eeb0338> (a weblogic.work.ExecuteThread)

at weblogic.work.ExecuteThread.run(ExecuteThread.java:281)


socketReader线程提高了weblogic处理客户端请求的速度和能力,12c默认会启动4个,进程是0,1,2,3。
"ExecuteThread: '0' for queue: 'weblogic.socket.Muxer'" daemon prio=10 tid=0x00007ff1dc0b3800 nid=0x34c8 runnable [0x00007ff1fdf6b000]
   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:79)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
- locked <0x000000070000ddf0> (a sun.nio.ch.Util$2)
- locked <0x000000070000de08> (a java.util.Collections$UnmodifiableSet)
- locked <0x000000070000d778> (a sun.nio.ch.EPollSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
at weblogic.socket.NIOSocketMuxer.selectFrom(NIOSocketMuxer.java:550)
at weblogic.socket.NIOSocketMuxer.processSockets(NIOSocketMuxer.java:479)
at weblogic.socket.SocketReaderRequest.run(SocketReaderRequest.java:30)
at weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:43)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:147)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:119)


RUNNABLE表示线程正在运行,java.net.SocketInputStream.socketRead0(Native Method)以下是表示线程调用的堆栈
"Connect thread 10.150.22.37 session" daemon prio=10 tid=0x00007ff1a424e000 nid=0xf377 runnable [0x00007feec79f7000]
   java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:152)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at com.jcraft.jsch.IO.getByte(IO.java:82)
at com.jcraft.jsch.Session.read(Session.java:918)
at com.jcraft.jsch.Session.run(Session.java:1388)
at java.lang.Thread.run(Thread.java:745)

下面两个线程,一个锁住了0x0000000734f85ab0,一个在等待,通常要关心这一类。
"[ACTIVE] ExecuteThread: '13' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d8014000 nid=0x34fa in Object.wait() [0x00007ff16fffc000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x0000000735a1b840> (a com.sun.star.lib.uno.environments.remote.JobQueue)
at com.sun.star.lib.uno.environments.remote.JobQueue.removeJob(JobQueue.java:221)
- locked <0x0000000735a1b840> (a com.sun.star.lib.uno.environments.remote.JobQueue)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:331)
at com.sun.star.lib.uno.environments.remote.JobQueue.enter(JobQueue.java:304)
at com.sun.star.lib.uno.environments.remote.JavaThreadPool.enter(JavaThreadPool.java:91)
at com.sun.star.lib.uno.bridges.java_remote.java_remote_bridge.sendRequest(java_remote_bridge.java:639)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.request(ProxyFactory.java:151)
at com.sun.star.lib.uno.bridges.java_remote.ProxyFactory$Handler.invoke(ProxyFactory.java:133)
at com.sun.proxy.$Proxy268.loadComponentFromURL(Unknown Source)
at gg.eic.core.fileconvertor.AbstractConversionTask.loadDocument(AbstractConversionTask.java:125)
at gg.eic.core.fileconvertor.AbstractConversionTask.execute(AbstractConversionTask.java:86)
at gg.eic.core.fileconvertor.ExternalOpenOfficeManager.execute(ExternalOpenOfficeManager.java:60)
- locked <0x0000000734f85ab0> (a gg.eic.core.fileconvertor.connection.OpenOfficeConnection)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:125)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:107)
at gg.eic.core.fileconvertor.FileConvertor.convertFile(FileConvertor.java:362)
at gg.eic.core.excelexport.parser.ExcelCreator.convertExcelVersion(ExcelCreator.java:552)
at gg.eic.core.excelexport.parser.ExcelCreator.createExcel(ExcelCreator.java:297)
at gg.eic.core.excelexport.processor.impl.ExcelExportBigDataProcessor.createExcel(ExcelExportBigDataProcessor.java:44)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3388)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3354)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2238)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2154)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2132)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:312)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:264)

"[ACTIVE] ExecuteThread: '9' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d800b800 nid=0x34f6 waiting for monitor entry [0x00007ff1fc4e6000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at gg.eic.core.fileconvertor.ExternalOpenOfficeManager.execute(ExternalOpenOfficeManager.java:57)
- waiting to lock <0x0000000734f85ab0> (a gg.eic.core.fileconvertor.connection.OpenOfficeConnection)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:125)
at gg.eic.core.fileconvertor.OpenOfficeDocumentConverter.convert(OpenOfficeDocumentConverter.java:107)
at gg.eic.core.fileconvertor.FileConvertor.convertFile(FileConvertor.java:362)
at gg.eic.core.excelexport.parser.ExcelCreator.convertExcelVersion(ExcelCreator.java:552)
at gg.eic.core.excelexport.parser.ExcelCreator.createExcel(ExcelCreator.java:297)
at gg.eic.core.excelexport.processor.impl.ExcelExportBigDataProcessor.createExcel(ExcelExportBigDataProcessor.java:44)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:255)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:312)

at weblogic.work.ExecuteThread.run(ExecuteThread.java:264)


waiting on condition,这种等待通常是线程主动等待或正在进行IO操作,而并非等待其他线程释放资源,这里在代码里调用了sleep方法。还有wait(),join()方法也可以导致这种状态。

"[ACTIVE] ExecuteThread: '8' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon prio=10 tid=0x00007ff1d8009800 nid=0x34f5 waiting on condition [0x00007ff1fc5e7000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at gg.eic.view.excelimport.servlet.ExcelImportServlet.doImport(ExcelImportServlet.java:297)
at gg.eic.view.excelimport.servlet.ExcelImportServlet.doPost(ExcelImportServlet.java:168)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:751)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:844)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个比较复杂的问题,需要一定的专业知识和经验。我会尽可能详细地解释一下分析流程,希望能对你有所帮助。 1. 漏洞原理 首先,我们需要了解一下漏洞的原理。WebLogic反序列化漏洞是一种Java反序列化漏洞,攻击者通过构造恶意的序列化数据,可以在服务器上执行任意代码。具体的原理可以参考一些相关的文章和漏洞报告。 2. 检测漏洞 要想上传webshell,首先需要检测目标服务器是否存在WebLogic反序列化漏洞。可以使用一些工具,如ysoserial、Java反序列化漏洞检测工具等,对目标服务器进行漏洞检测。 3. 构造恶意的序列化数据 如果目标服务器存在漏洞,那么我们需要构造恶意的序列化数据,以执行任意代码。构造恶意的序列化数据需要一定的Java编程知识,需要知道一些Java反序列化的基本原理和相关的类库。 4. 上传webshell 在成功构造恶意的序列化数据后,我们可以将其发送到目标服务器。在发送过程中,可以使用一些工具,如Burp Suite、ncat等,来进行数据的传输和拦截。在成功上传序列化数据后,我们就可以在服务器上执行任意代码,包括上传webshell等操作。 5. 清理痕迹 上传webshell后,我们需要清理痕迹,以避免被发现。可以使用一些工具,如wpscan、nmap等,对服务器进行扫描,查找是否有异常的进程或文件存在。同时,也需要对上传的webshell进行一些加密、混淆等操作,以避免被检测到。 以上就是上传webshell的基本分析流程。需要注意的是,这是一种违法行为,应该遵守法律规定,不要进行非法攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值