内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

WebLogic WLS-WebServices组件反序列化漏洞分析

2017-12-23 14:33 出处:清屏网 人气: 评论(0

最近由于数字货币的疯涨,大量机器被入侵后用来挖矿,其中存在不少部署了Weblogic服务的机器,因为Weblogic最近所爆出安全漏洞的exploit在地下广泛流传。回到这个漏洞本身,其原因在于WLS-WebServices这个组件中,因为它使用了XMLDecoder来解析XML数据。有安全研究人员在去年八月份就向官方报告了此漏洞,Oralce官方在今年四月份提供了补丁程序。但是,四月份提供的补丁感觉是在敷衍了事,因此很快就被绕过了。为此官方又只能新发补丁,不过十月份所提供的补丁,检查还是比较严格。下面具体来看看此次反序列漏洞

0x01漏洞复现

测试环境 Weblogic 10.3.6.0/jdk1.6.0_45/Linux

漏洞POC

POST /wls-wsat/CoordinatorPortType11 HTTP/1.1
Host: 127.0.0.1:7001
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,zh-TW;q=0.7
Connection: close
Content-Type: text/xml
Content-Length: 777

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">   
  <soapenv:Header> 
    <work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">  
      <java> 
        ·······
      </java> 
    </work:WorkContext> 
  </soapenv:Header>  
  <soapenv:Body/> 
</soapenv:Envelope>

 

在漏洞复现过程中,只需将恶意的XML数据包发送到wls-wsat此路径下的任意一个URL即可,因为后端处理流程都是一样的。

 

0x02漏洞分析

此次漏洞出现在wls-wsat.war中,此组件使用了weblogic自带的webservices处理程序来处理SOAP请求。首先在weblogic.wsee.jaxws.workcontext.WorkContextServerTube类中获取XML数据最终传递给XMLDecoder来解析,其解析XML的调用链为

weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest
weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld
weblogic.wsee.workarea.WorkContextXmlInputAdapter

首先看到weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest方法

获取到localHeader1后传递给readHeaderOld方法,其内容为<work:WorkContext>所包裹的数据,然后继续跟进weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld方法

在此方法中实例化了WorkContextXmlInputAdapter类,并且将获取到的XML格式的序列化数据传递到此类的构造方法中,最后通过XMLDecoder来进行反序列化操作。

关于XMLDecoder的反序化问题13年就已经被人发现,近期再次被利用到Weblogic中由此可见JAVA生态圈中的安全问题是多么糟糕。值得一提的是此次漏洞出现了两处CVE编号,因为在Oracle官方在修复CVE-2017-3506所提供的patch只是简单的检查了XML中是否包含了<object>节点,然后将<object>换为<void>即可绕过此补丁。因此在修复过程中用户一定要使用Oracle官方十月份所提供的patch。

 

0x03漏洞修复

1. 临时解决方案

根据业务所有需求,考虑是否删除WLS-WebServices组件。包含此组件路径为:

Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/wls-wsat
Middleware/user_projects/domains/base_domain/servers/AdminServer/tmp/.internal/wls-wsat.war
Middleware/wlserver_10.3/server/lib/wls-wsat.war

以上路径都在WebLogic安装处。删除以上文件之后,需重启WebLogic。确认 http:// weblogic_ip/wls-wsat/ 是否为404页面。

2. 官方补丁修复

前往oralce官网下载10月份所提供的安全补丁。如需帮助请咨询info@chaitin.com。

 

0x04 参考资料

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

pwntester/XMLDecoder

http://www. oracle.com/technetwork/ security-advisory/cpuoct2017-3236626.html

安全服务号

分享给小伙伴们:

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号