爱吃面条
作者爱吃面条2018-04-25 11:55
系统工程师, 银行

WebLogic CVE-2018-2628漏洞 修复说明手册

字数 3854阅读 4872评论 2赞 8

事件概要:
北京时间4月18日凌晨,Oracle官方发布了4月份的关键补丁更新CPU(CriticalPatchUpdate),其中包含一个高危的Weblogic反序列化漏洞(CVE-2018-2628),通过该漏洞,攻击者可以在未授权的情况下远程执行代码。攻击者只需要发送精心构造的T3协议数据,就可以获取目标服务器的权限。攻击者可利用该漏洞控制组件,影响数据的可用性、保密性和完整性。

BUG 描述

此漏洞产生于Weblogic T3服务,所有开放Weblogic控制台端口的应用,均会默认开启T3服务,因此会造成较大范围的影响。根据绿盟态势感知平台查询的结果,在全球范围内对互联网开放Weblogic服务的资产数量多达19,229,其中归属中国地区的受影响资产数量为1,787。

BUG 影响

此BUG为高危级!
由于此漏洞产生于Weblogic T3服务,当开放Weblogic控制台端口(默认为7001端口)时,T3服务会默认开启,因此会造成较大影响,结合曾经爆出的WeblogicWLS 组件漏洞(CVE-2017-10271),不排除会有攻击者利用挖矿的可能,因此,建议受影响企业用户尽快部署防护措施。

受影响的版本
1.Weblogic 官方还在支持的版本
Weblogic Server 10.3.6.0
Weblogic Server 12.1.3.0
Weblogic Server 12.2.1.2
Weblogic Server 12.2.1.3
2.Weblogic 官方不在支持的版本
Weblogic Server 9
WeblogicServer 10
WeblogicServer 10.3
WeblogicServer 11g(除上述版本外)
Weblogic Server 12c(除上述版本外)

BUG 补丁

Oracle官方发布补丁,见下表:
WLS Release
Required Patches
12.2.1.3
PSU 12.2.1.3.20171017 (Patch 27342434)
12.2.1.2
PSU 12.2.1.2.20171017 (Patch 27338939)
12.1.3.0
PSU 12.1.3.0.20171017 (Patch 27419391)
10.3.6.0
PSU 10.3.6.0.20171017 (Patch 27395085)

临时方案

方案一:

注:此方案会禁止所有t3协议访问,会导致无法使用命令行停止weblogic。
1.进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
微信图片_20180425114112.jpg
2.在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:* * 7001 deny t3 t3s
微信图片_20180425114146.jpg
3.保存后规则即可生效,需要重新启动。
微信图片_20180425114532.jpg
使用检测脚本,可看到防护效果已经生效:
微信图片_20180425114559.png

方案二:

注:此方案可以添加允许的t3协议访问,会禁止其他的未添加的t3协议访问,添加允许访问的ip后不会导致无法使用命令行停止weblogic。(推荐使用此方案)
1. 进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
微信图片_20180425114647.jpg
2. 在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中
输入:ip * * allow t3 (ip为允许的ip)
0.0.0.0/0 * deny t3 t3s
注:如果受管节点与管理节点不在同一ip上时,需要把受管节点ip添加为允许ip。
微信图片_20180425114725.jpg
3.保存后规则即可生效,需要重新启动。
微信图片_20180425114748.jpg
使用检测脚本,可看到防护效果已经生效:
注:连接筛选器规则格式如:target localAddress localPort action protocols,其中:
target 指定一个或多个要筛选的服务器。
localAddress 可定义服务器的主机地址。(如果指定为一个星号 (
),则返回的匹配结果将是所有本地 IP 地址。)
localPort 定义服务器正在监听的端口。(如果指定了星号,则匹配返回的结果将是服务器上所有可用的端口)。
action 指定要执行的操作。(值必须为“allow”或“deny”。)
protocols 是要进行匹配的协议名列表。(必须指定下列其中一个协议:http、https、t3、t3s、giop、giops、dcom 或 ftp。) 如果未定义协议,则所有协议都将与一个规则匹配。

解决方案(安装补丁PSU20180417)

10.3.6补丁安装(目前无效)

注:对于10.3.6版本,目前发现更新补丁后,使用漏洞验证脚本进行测试,发现该漏洞没有被修复,因此对于该版本,推荐使用临时方案进行漏洞修复。至于进一步的进展,我们也会随时关注Oracle官方的说明。
1、使用weblogic安装用户登录到中间件服务器;
2、关闭所有的weblogic节点;
3、在weblogic安装路径(如:weblogic/Oracle/middleware/wls1036/)下,进入bsu文件夹如:weblogic/Oracle /middleware/wls1036/utils/bsu
4、执行”./bsu.sh” 生成cache_dir文件夹
5、使用FTP以二进制方式将补丁包上传到cache_dir目录中
6、进入cache_dir目录,解压补丁包“unzip p27453773_1036_Generic.zip”
7、进入bsu目录执行上述配置好的命令:
微信图片_20180425114903.png
8、验证安装:
(1)通过bsu命令验证检查;
微信图片_20180425114928.png
(2)通过启动日志验证:启动weblogic服务,在后台的输出信息中看到 “10.3.6.0.180417”版本字样,表示安装成功;
(3)通过console页面验证:登录weblogic的控制台,进入左侧 “环境”-> 服务器 ,选择其中任意一个服务器,之后进入“监视”->“一般信息”可查看指定server的详细版本号,验证补丁安装成功;
9、补丁回退, 执行命令
微信图片_20180425114956.png
检查回退结果:
微信图片_20180425115019.png
10、注意事项:
执行bsu.sh报错java.lang.OutOfMemoryError: Java heap space
微信图片_20180425115043.png
解决办法:
修改bsu.sh将MEM_ARGS="-Xms4096m -Xmx4096m"

12.1.3补丁安装(目前无效)

注:对于12c版本,目前发现更新补丁后,使用漏洞验证脚本进行测试,发现该漏洞没有被修复,因此对于该版本,推荐使用临时方案进行漏洞修复。至于进一步的进展,我们也会随时关注Oracle官方的说明。

从WebLogic 12c版本开始,WebLogic 更新了更新补丁的方式,改由opatch执行更新。
以下步骤适用于所有12c版本。
1.检查ORACLE_HOME环境变量为已安装的ORACLE WEBLOGIC SERVER的目录
2.停止所有的服务器(AdminServer和所有Managed服务器)
3.设置环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_79
export JAVA_BIN=/usr/java/jdk1.7.0_79/bin
export PATH=$JAVA_HOME/bin:$PATH
exportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export ORACLE_HOME=/home/weblogic/Oracle/Middleware/Oracle_Home
注:斜体加粗部分需要针对定制环境修改

4.进入Opatch目录中将补丁程序zip文件压缩到tmp_dir中unzip –dtmp_dir/ p27342434_122130_Generic.zip
5.进入解压目录并执行opatch,执行 opatch安装命令
cd tmp_dir/27342434

$ORACLE_HOME/OPatch/opatchapply-jdk$JAVA_HOME
6.验证补丁是否安装
$ORACLE_HOME/OPatch/opatchlsinventory

已打补丁的输出中可以看到如下字样
微信图片_20180425115159.png
卸载补丁
若在安装该补丁程序时遇到任何问题,请将该补丁删除
1.停止所有的服务器(AdminServer和所有Managed服务器)
2.运行opacth卸载该补丁程序
$ORACLE_HOME/OPatch/opatchrollback -id 27342434
3.重新启动所有服务器(AdminServer和所有托管服务器)

漏洞验证

使用python脚本检查漏洞是否存在

先决条件

客户机安装python2.7以上版本,并且安装python的requests组件

执行脚本

链接如下:https://github.com/shengqi158/CVE-2018-2628
注:脚本源自网络

测试结果

在没有打补丁时,执行脚本,结果为:
微信图片_20180425115325.png
打补丁后,执行脚本,结果为:
微信图片_20180425115347.jpg
使用临时方法后,执行脚本,结果为:
微信图片_20180425115408.png
如果服务器端weblogic没有启动,会返回False的错误:
微信图片_20180425115447.jpg

转自微信公众号:中亦安图

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

8

添加新评论2 条评论

#winskygod系统运维工程师, 广东世纪宜通股份有限公司
2018-05-02 14:36
你好,能说下p27395085_1036_Generic和p27453773_1036_Generic的区别吗?按情况来看应该打哪个呢,前者发布时间是2个月前,后者是半个月前发布的。
#wuwenpin软件开发工程师, 南京
2018-04-28 07:39
感谢分享哟
Ctrl+Enter 发表

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