WebLogic漏洞分析——利用华为云WAF实现防御
0x00 漏洞背景
近期,WebLogic爆出相关安全漏洞和漏洞的exploit,并在网络中广泛流传。由于此次漏洞利用方式简单,通过构造HTTP请求就能直接获取目标服务器的控制权限,进行远程命令执行,因此影响范围很广。比如最近大量部署了WebLogic服务的主机被植入挖矿恶意程序,就是此漏洞的利用方式之一。
此次漏洞产生的原因在于WebLogic的WLS组件直接使用XMLDecoder来解析XML数据。而Oracle官方在今年四月份提供的补丁检查能力较弱,很容易被bypass。因此,建议使用WebLogic服务的用户下载安装Oracle官方在今年十月份提供的补丁程序。
0x01 漏洞分析
此次漏洞形成的原因在于,WLS组件wls-wast.war中使用了WebLogic自带的webservice服务,通过WLSServeletAdapter处理SOAP请求。其中,WorkContextServerTube类中的相关函数负责处理POST请求中的XML数据,readHeaderOld方法负责处理<work:WorkContext>所包含的数据,最终由XMLDecoder来解析(反序列化),从而产生了反序列化漏洞。关于XMLDecoder安全性及利用可参考:http://blog.diniscruz.com/2013/08/using-xmldecoder-to-execute-server-side.html

此次漏洞出现两处CVE编号(CVE-2017-3506,CVE-2017-10271)是由于Oracle官方在今年四月份的补丁中只对XML中存在<Object>节点的情况做了检查,但是很容易被bypass(如改为<void>即可)。因此,Oracle在十月份对该补丁又进行了一次更新。
0x02漏洞复现
测试环境 Docker 1.12.6 / WebLogic 10.3.6.0 / JDK 1.6 / CentOS
构造一个恶意HTTP POST请求,使得目标主机主动对控制端服务器发起连接请求,从而实现shell反弹。
WebLogic漏洞利用POC(利用postman向目标站点发送恶意HTTP请求)

Shell反弹效果(通过nc在7777端口发送ls命令,可看到图中上方控制台打印出了目标主机的文件目录)

0x03 华为云WAF防御WebLogic漏洞
12月22日晚,华为云安全团队紧急下发了防御WebLogic漏洞的虚拟补丁。
下面将介绍如何使用华为云WAF防御WebLogic漏洞:
1. 使用华为云WAF的内置规则,一键开启防护。(对WAF实例开启防护后,在防护策略界面选择拦截并保存策略,如下图所示)

对目标站点发送payload,进入安全总览页面,可以看到通过华为云WAF的内置规则,此次漏洞利用的请求行为被成功拦截。

2. 使用华为云WAF的精准防护策略,配置自定义规则。
进入WAF实例->防护策略->精准防护界面,点击添加规则,按下图所示添加自定义规则。(规则内容为/wls-wsat/CoordinatorPortType)

对目标站点发送payload,再次进入华为云WAF控制台,进入安全总览界面,可以看到华为云WAF成功拦截了此次WebLogic漏洞利用攻击。

攻击请求被华为云WAF拦截的界面

0x04 防御策略与建议
1. 华为云WAF针对此次WebLogic的相关漏洞,已经在第一时间更新了内置规则。可以将站点接入华为云WAF,一键开启防护。(华为云WAF正在免费公测,仅剩一个月!)
申请链接(需注册/登录华为云):https://console.huaweicloud.com/scc/#/safe/cloudWAF/WAFPointList
2.若您的业务接入了其他WAF产品,可通过添加自定义规则实现漏洞防御,参考上文中配置华为云WAF精准防护的规则。
3.临时防护建议:若WebLogic服务集群未使用WLS组件,可在临时备份后,根据实际环境路径将此组件删除。待具备此漏洞的防护能力后再进行恢复。
· 删除wlls-wsat组件:
rm –f /home/WebLogic/Oracle/Middleware/wlserver_10.3/server/lib/wls-wsat.war
rm –f /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
rm - rf /home/WebLogic/Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
· 重启WebLogic域控制器服务:
DOMAIN_NAME /bin/stopWeblogic.sh
DOMAIN_NAME /bin/startManagedWebLogic.sh
4.官方补丁更新:
Oracle官方对于WebLogic WLS 组件漏洞(CVE-2017-10271)在10月份的更新补丁中已经进行了修复,建议及时下载安装,并升级WebLogic。
参考
http://blog.diniscruz.com/2013/08/using-xmldecoder-to-execute-server-side.html
https://github.com/pwntester/XMLDecoder
- 点赞
- 收藏
- 关注作者
评论(0)