WebLogic漏洞分析——利用华为云WAF实现防御

Mr_OY 发表于 2017/12/24 18:15:51 2017/12/24
【摘要】 0x00 漏洞背景近期,WebLogic爆出相关安全漏洞和漏洞的exploit,并在网络中广泛流传。由于此次漏洞利用方式简单,通过构造HTTP请求就能直接获取目标服务器的控制权限,进行远程命令执行,因此影响范围很广。比如最近大量部署了WebLogic服务的主机被植入挖矿恶意程序,就是此漏洞的利用方式之一。此次漏洞产生的原因在于WebLogic的WLS组件直接使用XMLDecoder来解析XML数据

0x00 漏洞背景

近期,WebLogic爆出相关安全漏洞和漏洞的exploit,并在网络中广泛流传。由于此次漏洞利用方式简单,通过构造HTTP请求就能直接获取目标服务器的控制权限,进行远程命令执行,因此影响范围很广。比如最近大量部署了WebLogic服务的主机被植入挖矿恶意程序,就是此漏洞的利用方式之一。

此次漏洞产生的原因在于WebLogicWLS组件直接使用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

 

1.png

此次漏洞出现两处CVE编号(CVE-2017-3506CVE-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请求)

post http.png

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

imin.png

0x03 华为云WAF防御WebLogic漏洞

1222日晚,华为云安全团队紧急下发了防御WebLogic漏洞的虚拟补丁。

 

下面将介绍如何使用华为云WAF防御WebLogic漏洞:

1.       使用华为云WAF的内置规则,一键开启防护。(对WAF实例开启防护后,在防护策略界面选择拦截并保存策略,如下图所示)

waf-set.png

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

waf-log1.png

2.       使用华为云WAF的精准防护策略,配置自定义规则。

进入WAF实例->防护策略->精准防护界面,点击添加规则,按下图所示添加自定义规则。(规则内容为/wls-wsat/CoordinatorPortType

2.png

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

    waflog-selfrule.png

 

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

waf-block.png

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://www.oracle.com/technetwork/security-advisory/cpuoct2017-3236626.html?spm=5176.bbsr572695.0.0.BQBD5O

参考

http://blog.diniscruz.com/2013/08/using-xmldecoder-to-execute-server-side.html

https://github.com/pwntester/XMLDecoder

https://www.cvedetails.com


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。