事件概要:
北京时间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.180417 (Patch 27342434)
12.2.1.2
PSU 12.2.1.2.180417 (Patch 27338939)
12.1.3.0
PSU 12.1.3.0.180417 (Patch 27419391)
10.3.6.0
PSU 10.3.6.0.180417 (Patch 27395085)
临时方案
方案一:
注:此方案会禁止所有t3协议访问,会导致无法使用命令行停止weblogic。
1.进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
2.在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中输入:* * 7001 deny t3 t3s
3.保存后需要重新启动,规则方可生效。
使用检测脚本,可看到防护效果已经生效:
方案二:
注:此方案可以添加允许的t3协议访问,会禁止其他的未添加的t3协议访问,添加允许访问的ip后不会导致无法使用命令行停止weblogic。(推荐使用此方案)
1. 进入Weblogic控制台,在base_domain的配置页面中,进入“安全”选项卡页面,点击“筛选器”,进入连接筛选器配置。
2. 在连接筛选器中输入:weblogic.security.net.ConnectionFilterImpl,在连接筛选器规则中
输入:ip * * allow t3 (ip为允许的ip)
0.0.0.0/0 * *deny t3 t3s
注:如果受管节点与管理节点不在同一ip上时,需要把受管节点ip添加为允许ip。
3.保存后需要重新启动,规则方可生效。
使用检测脚本,可看到防护效果已经生效:
注:连接筛选器规则格式如: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 p27395085_1036_Generic.zip”
7、进入bsu目录执行上述配置好的命令:
8、验证安装:
(1)通过bsu命令验证检查;
(2)通过启动日志验证:启动weblogic服务,在后台的输出信息中看到 “10.3.6.0.180417”版本字样,表示安装成功;
(3)通过console页面验证:登录weblogic的控制台,进入左侧 “环境”-> 服务器 ,选择其中任意一个服务器,之后进入“监视”->“一般信息”可查看指定server的详细版本号,验证补丁安装成功;
9、补丁回退, 执行命令
检查回退结果:
10、注意事项:
执行bsu.sh报错java.lang.OutOfMemoryError: Java heap space
解决办法:
修改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/ p27419391_121300_Generic.zip
5.进入解压目录并执行opatch,执行 opatch安装命令
cd tmp_dir/27419391
$ORACLE_HOME/OPatch/opatchapply-jdk$JAVA_HOME
6.验证补丁是否安装
$ORACLE_HOME/OPatch/opatchlsinventory
已打补丁的输出中可以看到如下字样
卸载补丁
若在安装该补丁程序时遇到任何问题,请将该补丁删除
1.停止所有的服务器(AdminServer和所有Managed服务器)
2.运行opacth卸载该补丁程序
$ORACLE_HOME/OPatch/opatchrollback -id 27419391
3.重新启动所有服务器(AdminServer和所有托管服务器)
漏洞验证
使用python脚本检查漏洞是否存在
先决条件
客户机安装python2.7以上版本,并且安装python的requests组件
执行脚本
链接如下:https://github.com/shengqi158/CVE-2018-2628
注:脚本源自网络
测试结果
在没有打补丁时,执行脚本,结果为:
打补丁后,执行脚本,结果为:
使用临时方法后,执行脚本,结果为:
如果服务器端weblogic没有启动,会返回False的错误:
-
扫码下载安卓APP
-
微信扫一扫关注我们
微信扫一扫打开小程序
手Q扫一扫打开小程序
-
返回顶部
发表评论