Windows应急响应和系统加固(11)——Weblogic各类漏洞的日志分析和调查取证
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应用服务市场份额占比):
2.weblogic漏洞介绍:
<1>.漏洞介绍:
近年来,缝缝补补的weblogic,深受java反序列、ssrf、组件getshell、弱口令等高危漏洞影响,如图(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: 协议的版本号