欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

Windows应急响应和系统加固(11)——Weblogic各类漏洞的日志分析和调查取证

程序员文章站 2022-03-10 18:25:38
Weblogic各类漏洞的日志分析和调查取证 一、WebLogic简介: 1.WebLogic简介: WebLogic是著名的Oracle公司开发的Application Server,是第一个成功商业化的J2EE中间件、容器,用于开发、集成、部署、管理大型&分布式Web应用、网络应用和数据库应用等 ......

weblogic各类漏洞的日志分析和调查取证

一、weblogic简介:

  1.weblogic简介:

  weblogic是著名的oracle公司开发的application server,是第一个成功商业化的j2ee中间件、容器,用于开发、集成、部署、管理大型&分布式web应用、网络应用和数据库应用等;

  weblogic是基于标准化、模块化的组件,提供完整的服务,无需编程即可自动处理应用行为的很多细节;

  weblogic使用独有的t3协议(t3协议:weblogic最早由 weblogic inc. 开发,后并入bea公司,最终bea公司又并入oracle公司,t3协议为bea公司的内部协议);

  weblogic的市场份额还算比较稳定,主要在大型商用系统使用,高并发,与oracle的产品线联动配合,如图(2017年java应用服务市场份额占比):

 Windows应急响应和系统加固(11)——Weblogic各类漏洞的日志分析和调查取证Windows应急响应和系统加固(11)——Weblogic各类漏洞的日志分析和调查取证

   2.weblogic漏洞介绍:

  <1>.漏洞介绍:

    近年来,缝缝补补的weblogic,深受java反序列、ssrf、组件getshell、弱口令等高危漏洞影响,如图(weblogic反序列化漏洞历史):

Windows应急响应和系统加固(11)——Weblogic各类漏洞的日志分析和调查取证

漏洞影响:weblogic 10.3.x、weblogic 12.1.x、weblogic 12.2.x等系列产品

    序列化与反序列化技术:

      序列化和反序列化,是java引入的数据传输和存储接口技术;

      序列化:用于将对象(object)转换成二进制串数据存储,对应着writeobject方法;

      反序列化:洽好相反,将二进制串数据转换成对象(object),对应着readobject方法,

      序列化与反序列化,是让java对象脱离java运行环境的一种手段,可以有效的实现多平台之间的通信、对象持久化存储。

    反序列化使用场景:

      http:多平台之间的通信、管理等;

      rmi:java的一组拥护开发分布式应用程序的api,实现了不同os之间程序的方法调用(注:rmi传输,100%基于反序列化。java rmi的默认端口是1099端口;)。

      jmx:jmx是一套标准的代理和服务,用户可在任何java应用程序中使用这些代理和服务实现管理(注:weblogic管理页面是基于jmx开发的,jboss整个系统都基于jmx构架。)。

 

 

   <2>.漏洞分析:

    cve-2015-4852:

      apache commons-collections组件的反序列化漏洞,基于t3;

      存在漏洞的class:

        org.apache.commons.collections.functors* *;

        com.sun.org.apache.xalan.internal.xsltc.trax* *;

        javassist* *;

        org.codehaus.groovy.runtime.convertedclosure;

        org.codehaus.groovy.runtime.conversionhandler;

        org.codehaus.groovy.runtime.methodclosure;

    cve-2016-0638:

      readexternal存在反序列化漏洞;

    cve-2016-3510:

      反序列化对象,封装进weblogic.corba.utils.marshalledobject,可顺利对marshalledobject序列化;在反序列化时,marshalledobject对象调用readobject,对 marshalledobject封装的序列化对象再次反序列化,导致,逃过

黑名单的检查。

 

    cve-2017-3506:

      由于使用了存在反序列化缺陷xmldecoder导致的漏洞,基于http协议,挖矿主力军;

    cve-2017-10271:

      是3506的绕过;

    cve-2017-10352:

      xmldecoder库存在缺陷导致任意代码执行,poc被泄露,被用于黑产;

    cve-2017-3248:

      rmi机制的缺陷,通过jrmp协议,达到执行任意反序列化payload的目的;

      resolveclass和resolveproxyclass都存在漏洞,被用于黑产(挖门罗币等);

    cve-2018-2628:

      cve-2017-3248的绕过,基于streammessage封装,利用java.rmi.activation.activator绕过补丁中对java.rmi.registry.registry的限制。

    cve-2018-2893:

      如下的类被绕过,导致反序列化:

        java.rmi.activation.*;

        sun.rmi.server.*;

        java.rmi.server.remoteobjectinvocationhandler;

        java.rmi.server.unicastremoteobject;

    应急场景中常见的weblogic漏洞,还有:

      console弱口令(weblogic/weblogic);

      ssrf;

      wls组件命令执行漏洞。

二、日志分析(使用e.l.k处理日志):

  weblogic日志主要分为:server日志、http日志和domain日志;

  1.server日志:

    主要功能:记录weblogic server启动至关闭过程中的运行信息和错误信息

    日志结构:时间戳、严重程度、子系统、计算机名、服务器名、线程 id、用户 id、事务 id、诊断上下文 id、原始时间值、消息 id 和消息文本。

    例如:####<mar 4, 2019 9:42:07 am cst> <warning> <rmi> <localhost.localdomain> <adminserver> <[active]executethread: '4' for queue: 'weblogic.kernel.default (self-tuning)'> <<wls kernel>> <> <> 080003>

<runtimeexception thrown by rmi server:<1551663727980> <bea-weblogic.common.internal.rmibootserviceimpl.authenticate(lweblogic.security.acl.userinfo;)

  2.domain日志:

    主要功能:记录一个domain下的各个weblogic server的启动至关闭过程中的运行信息和错误信息。

    日志结构:####<oct 18, 2018 2:21:11 pm cst> <notice> <security> <win-l25pqajm1k1> <adminserver> <[active]executethread: '9' for queue: 'weblogic.kernel.default (self-tuning)'> <<wls kernel>> <> <> <1539843671288> <bea-090082> <security initializing using security realm myrealm.>

    注:domain日志中的日志记录不会按照其时间戳顺序写入;

      domain日志中记录的时间戳是发出消息的服务器的时间戳;

      有可能服务器在一段时间内无法与域服务器联系,此时,消息会被缓冲在本地并在重新连接服务器之后发送到管理服务器。

  3.http日志:  

    默认情况下,http日志记录处于启用状态;

    服务器会将 http 请求保存到单独的日志文件中;

    服务器不会将 http 请求存储在服务器日志文件或域日志文件中;

    默认按文件大小滚动和轮询,大小是5000kb;

    扩展日志记录格式字段:c-ip cs-username date cs-method cs-uri sc-status cs(user-agent) s-sitename s-port time-taken sc-substatus cs-host cs-version

      字段解释:

        c-ip: 客户端访问服务端的ip;

        cs-username: 客户端访问服务端使用的用户名,匿名访问则使用占位符(-)代替;

        date : 访问的日期;

        time : 访问的时间;

        cs-method : 客户端请求的方法;

        cs-uri: 客户端请求服务器的url;

        sc-status: 服务器响应的状态码;

        cs(user-agent) : 浏览器的信息;

        s-sitename: 互联网请求的名称,通常是一个占位符;

        s-port: 服务的端口号;

        time-taken: 完成整个访问请求所花费的时间(秒);

        sc-substatus: 子状态吗,通常是一个占位符;

        cs-host: 服务器的header头部;

        cs-version: 协议的版本号