(转)Weblogic之反序列化高危漏洞

转自:http://www.sohu.com/a/154670296_99890213?qq-pf-to=pcqq.c2c

我选择的是第五种方法解决的。

一、WebLogic Server Security Alert

安全问题描述

WebLogic Server反序列化安全漏洞补丁:CVE-2015-4852;

Apache Commons Collections 3和4,Groovy,Spring,只要目标应用的Class Path中包含这些库,可让readObject()实现任意命令执行。影响比较广泛的就是Apache Commons Collections这个库,中间件基本都会涉及使用此库。

受影响的WLS版本

Oracle WebLogic Server, 版本9及10.0.1mp,10.0.2mp,10.3.2,10.3.3,10.3.4.X10.3.5.X,10.3.6.X, 12.1.1.X,12.1.2.X, 12.1.3.X, 12.2.1.X;

已发布补丁的WLS版本

Oracle WebLogic Server, 版本10.0.1mp,10.0.2mp,10.3.2,10.3.3,10.3.4.X10.3.5.X,10.3.6.X, 12.1.1.X, 12.1.2.X, 12.1.3.X, 12.2.1.X;

Oracle支持weblogic版本补丁

January 2016 CPU Update:

CVE-2015-4852现在修复包括在下面的weblogic补丁集更新(PSU)和更高PSU:

12.2.1.0.1

12.1.3.0.6

12.1.2.0.8

10.3.6.0.13

WLS Release

Required Patches

12.2.1.0

12.2.1.0.0 Patch 22248372 for CVE-2015-4852

12.1.3.0

PSU 12.1.3.0.5 (Patch 21370953) + 12.1.3.0.5 Patch 22248372 for CVE-2015-4852

12.1.2.0

PSU 12.1.2.0.7 (Patch 21364493) + 12.1.2.0.7 Patch 22248372 for CVE-2015-4852

10.3.6.0

PSU 10.3.6.0.12 (Patch 20780171) + 10.3.6.0.12 Patch 22248372 for CVE-2015-4852

参考:CVE-2015-4852 Patch Availability Document for Oracle WebLogic Server Component of Oracle Fusion Middleware (文档 ID 2075927.1)

Oracle提供补丁列表

补丁程序名

说明

发行版

平台 (语言)

22248372

SU Patch [RMW6]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

10.3.3

Generic Platform (American English)

22248372

SU Patch [JQNK] :10.3.4.0.5 Overlay: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

10.3.4.0.5

Generic Platform (American English)

22248372

SU Patch [JF2L] :10.3.5.0.7 Overlay: MERGE REQUEST ON TOP OF WLS PSU 10.3.5.0.7 FOR BUGS 21495475 22175246 22200449 (补丁程序)

10.3.5.0.7

Generic Platform (American English)

22248372

SU Patch [L9CG]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

10.3.2.0

Generic Platform (American English)

22248372

SU Patch [YWAF]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

10.3

Generic Platform (American English)

22248372

SU Patch [JH3R]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

10.0.1MP

Generic Platform (American English)

22248372

SU Patch [2H6C] :12.1.1.0.12 Overlay: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

12.1.1.0.12

Generic Platform (American English)

22248372

SU Patch [VUMR]: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (补丁程序)

10.0.2MP

Generic Platform (American English)

22248372

WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

12.2.1.0.0

Generic Platform (American English)

22248372

WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

12.1.3.0.5

Generic Platform (American English)

22248372

WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

12.1.2.0.7

Generic Platform (American English)

22248372

SU Patch [ZLNA] :10.3.6.0.12 Overlay: WEBLOGIC SERVER CVE-2015-4852 SECURITY ALERT PATCH (NOV 2015) (补丁程序)

10.3.6.0.12

Generic Platform (American English)

根据自己所打的PSU版本,升级相应对应的补丁。

二、备份weblogic及domain

首先将对应的域文件和中间件安装目录打包备份。

tar{WL_HOME}yyyymmdd.tar{WL_HOME}

tar{MW_HOME}yyyymmdd.tar{MW_HOME}

三、Oracle官方解决方案

查出weblogic的版本号之后,根据补丁列表找到对应的补丁包。

需要执行语句修补的步骤如下:

  • 用Linux主机的weblogic软件安装用户在{MW_HOME}/utils/bsu下执行第一步中查询版本的语句,这时在{MW_HOME}/utils/bsu会生成一个cache_dir文件夹

向这个文件夹上传对应的补丁包并解压

  • 将解压后的patch-catalog_*.xml文件重命名为patch-catalog.xml这个标准文件名,否则系统会出现不自动读取的问题。

  • 回到上一级目录,即{MW_HOME}/utils/bsu下,执行语句vi bsu.sh ,将其中的内存大小改为1G,即MEM_ARGS=”-Xms1521m –Xmx1521m”

修改增加内存:

vi/Oracle/Middleware/utils/bsu/bsu.sh

#!/bin/sh

JAVA_HOME="/Oracle/Middleware/jrockit_160_22_D1.1.1-3"

"$JAVA_HOME/bin/java"-Xms1521m-Xmx1512m-jar patch-client.jar$*

命令行方式

  • 查看版本语句:

/Oracle/Middleware/utils/bsu/bsu.sh-prod_dir=/Oracle/Middleware/wlserver_10.3-status=applied-verbose–view

如果有老补丁已经安装请确认补丁是否被包含此补丁内,卸载补丁后再安装最新补丁,防止冲突

  • 在{MW_HOME}/utils/bsu下,执行补丁安装命令

./bsu.sh-install-patch_download_dir={MW_HOME}/utils/bsu/cache_dir-patchlist={PATCH_ID}-prod_dir={MW_HOME}/{WL_HOME}

为了防止主机连接断开导致安装失败,可以使用后台安装命令

nohup./bsu.sh-install-patch_download_dir={MW_HOME}/utils/bsu/cache_dir-patchlist={PATCH_ID}-prod_dir={MW_HOME}/{WL_HOME}&tail-fnohup.out

例如:

/Oracle/Middleware/utils/bsu/bsu.sh-install-patch_download_dir=/Oracle/Middleware/utils/bsu/cache_dir-patchlist=K25M-prod_dir=/Oracle/Middleware/wlserver_10.3

  • 安装后查看版本:

/Oracle/Middleware/utils/bsu/bsu.sh-prod_dir=/Oracle/Middleware/wlserver_10.3-status=applied-verbose–view

gui方式

设置环境变量:export DISPLAY=192.168.1.2:0.0

执行:

/Oracle/Middleware/utils/bsu/bsu.sh

图形界面

如果没有找不到,补丁程序->刷新 ,弹出验证窗口

检测补丁是否冲突,时间较长

然后点击’应用’

安装完成后

四、Oracle官方建议临时解决方案

不在Oracle 生命周期的weblogic产品建议采用MOS建议的T3协议过滤来缓解漏洞带来的危害

登入weblogic console控制台:

点击base_domain,-> ” 安全 “->” 筛选器 ”

修改连接筛选器,填入weblogic.security.net.ConnectionFilterImp

填入筛选规则:

当前测试规则为:

10.64.158.0/255.255.254.0 * 7001 allow t3 t3s

0.0.0.0/0 * * deny t3 t3s

规则解释为:只允许10.64.158网段的服务器可以通过7001端口使用T3协议访问该weblogic服务

引用文档:

http://docs.oracle.com/middleware/1221/wls/SCPRG/con_filtr.htm#SCPRG377

五、非Oracle官方临时解决方案一

在非Oracle官方的修复方法中,包含以下两种方法:

  • 调整应用程序,使用SerialKiller类包替换进行反序列化操作的ObjectInputStream类。

下载jar包和实施步骤请参考链接:https://github.com/ikkisoft/SerialKiller

  • Apache官方最近发布了commons-collections的新版本,修复方法为替换有漏洞的commons-collections组件

下载地址:http://commons.apache.org/proper/commons-collections/download_collections.cgi

建议:原来是3.2.x就替换为3.2.2,原来是4.x就替换为4.4.1,若出现不兼容,请尝试替换另一个版本。

具体方法:

  • 先停止weblogic,在中间件modules目录下存在名为

com.bea.core.apache.commons.collections_x.x.x.jar的文件

以及在应用目录下查找相关jar包:

find/{WL_HOME}-name'*commons.collections*'

find/{domain_home}-name'*commons.collections*'

  • 下载最新的commons-collections(bin包,不是源码包),如:

  • 用压缩包中的commons-collections-3.2.2.jar替换掉有漏洞的jar包,保持原jar包的名字,即名字不变换掉jar包

  • 启动weblogic

六、非Oracle官方临时解决方案二

按照oracle官网所说8和9版本没有反序列漏洞,但是实际中,如果在应用中包含’*commons.collections*’的jar包,还是会在安全软件中扫描出反序列化漏洞。所以下面有对应版本的不同处理方式

weblogic8和weblogic9版本的反序列化漏洞修补

这两个系列版本的weblogic扫描出反序列化漏洞后,可以通过测试机先行测试,避免操作影响生产运行。可以直接克隆一台虚拟机进行测试,在主机上执行以下语句来查找导致漏洞的jar包

find/{WL_HOME}-name'*commons.collections*'

find/{domain_home}-name'*commons.collections*'

然后有两种处理方式:

  • 使用 SerialKiller 替换进行序列化操作的 ObjectInputStream 类;

  • 在不影响业务的情况下,临时删除掉项目里的

“org/apache/commons/collections/functors/InvokerTransformer.class” 文件;

这样就可以解决这两个系列版本的weblogic反序列化漏洞。

七、总结

上述的解决方案,提出如下建议:

  • 首先掌握一种正确的测试方法,并在测试环境中进行验证测试。可参考github网站上老外提供的工具ysoserial-0.0.2,生成应用中间件脚步测试。

  • 优先选择Oracle官方提供的打补丁的方式,影响范围比较小,不涉及应用程序。

  • 在打补丁不能解决的情况下,再考虑非Oracle官方的方式,替换类包或删除相关类,但涉及应用程序,需要由应用维护人员进行测试、评估和实施。

  • 反序列漏洞具体分析网上很多都已经分析透彻,如下:

http://www.tuicool.com/articles/ZvMbIne

http://www.2cto.com/article/201604/497315.html

https://github.com/frohoff/ysoserial.gitfrohoff/ysoseria



猜你喜欢

转载自blog.csdn.net/w2363075992/article/details/80402762