Huaihai
作者Huaihai2017-07-06 12:53
系统架构师, 银行

Weblogic之反序列化高危漏洞

字数 4195阅读 3886评论 0赞 4

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
QQ截图20170706115833.png

QQ截图20170706115833.png

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

Oracle提供补丁列表

QQ截图20170706115912.png

QQ截图20170706115912.png

QQ截图20170706115929.png
QQ截图20170706115929.png

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

备份WebLogic及domain

首先将对应的域文件和中间件安装目录打包备份。
QQ截图20170706120010.png

QQ截图20170706120010.png

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”

修改增加内存:
QQ截图20170706120101.png

QQ截图20170706120101.png

命令行方式

  • 查看版本语句:

/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 -f nohup.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

  • 安装后查看版本:

    gui方式

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

执行:

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

图形界面
QQ截图20170706120229.png

QQ截图20170706120229.png

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

检测补丁是否冲突,时间较长、
QQ截图20170706120332.png

QQ截图20170706120332.png

然后点击’应用’

安装完成后
QQ截图20170706120349.png

QQ截图20170706120349.png

Oracle官方建议临时解决方案

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

登入weblogic console控制台:
QQ截图20170706120425.png

QQ截图20170706120425.png

点击base_domain,-> ” 安全 “->”筛选器 ”
QQ截图20170706120452.png
QQ截图20170706120452.png

修改连接筛选器,填入weblogic.security.net.ConnectionFilterImp
QQ截图20170706120517.png
QQ截图20170706120517.png

填入筛选规则:
QQ截图20170706120539.png
QQ截图20170706120539.png

当前测试规则为:

10.64.158.0/255.255.254.0 * 7001 allow t3 t3s

0.0.0.0/0 deny t3 t3s
QQ截图20170706120601.png

QQ截图20170706120601.png

规则解释为:只允许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包:
QQ截图20170706124959.png

QQ截图20170706124959.png

  • 下载最新的commons-collections(bin包,不是源码包),如:
    QQ截图20170706125035.png

    QQ截图20170706125035.png

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

  • 启动weblogic

非Oracle官方临时解决方案二

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

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

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

QQ截图20170706125220.png

然后有两种处理方式:

  • 使用 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/ysoserial

作者: 王德富
文章转自微信公众号:Oracle一体机用户组

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论0 条评论

Ctrl+Enter 发表

关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
© 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30