缝缝补补的WebLogic:绕过的艺术
前言
目前Weblogic在全球的使用量占居前列,据统计,在全球范围内对互联网开放Weblogic服务的资产数量多达35382台,其中归属中国地区的资产数量为10562台。如果爆发一个Weblogic高危漏洞,那将会给中国的大量用户带来巨大的灾难。
本文主要介绍了近五年爆发的Weblogic反序列化的高危漏洞,一次又一次的修补,一次又一次的绕过,漏洞挖掘者和漏洞防御者之间的博弈从未停止过,而且这种博弈在今后的生活中也将会愈演愈烈。
0×01 Weblogic简介
Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和 数据库应用的Java应用服务器。
Weblogic将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,是商业市场上主要的Java(Java EE)应用服务器软件之一,也是世界上第一个成功商业化的Java EE应用服务器,具有可扩展性、快速开发、灵活、可靠等优势。
在功能性上,Weblogic是Java EE的全能应用服务器,包括EJB 、JSP、servlet、JMS等,是商业软件里排名第一的容器(JSP、servlet、EJB等),并提供其他工具(例如Java编辑器),因此也是一个综合的开发及运行环境。
在扩展性上,Weblogic Server凭借其出色的群集技术,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。Weblogic Server既实现了网页群集,也实现了EJB组件群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错。无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。
目前Weblogic在全球的使用量也占居前列,据统计,在全球范围内对互联网开放Weblogic服务的资产数量多达35382台,美国和中国的Weblogic的使用量接近Weblogic总使用量的70%,其中归属中国地区的资产数量为10562台。
这样的话,如果爆发一个Weblogic高危漏洞,那将会给中国的大量用户带来巨大的灾难。
0×02 高危漏洞介绍
Weblogic漏洞有很多,但是五年之前的大多数漏洞只是小打小闹,对服务器并不能造成巨大的影响。然而,自从2015年11月6日,FoxGlove Security 安全团队的 @breenmachine 在博客中介绍了如何利用Java反序列化和 Apache Commons Collections 这一基础类库来攻击最新版的 Weblogic、WebSphere、JBoss等主流的Java服务器,并且都可以实现远程代码执行,Weblogic变得不再安全。
道高一尺魔高一丈,伴随着Weblogic补丁的不断发布,各种的绕过方法也是不断地更新。下面介绍一下近5年来让Oracle头痛不已的Weblogic反序列化漏洞。
高危漏洞主要涉及到两个种类:
利用xml decoded反序列化进行远程代码执行的漏洞,例如:CVE-2017-10271,CVE-2017-3506。
利用java反序列化进行远程代码执行的漏洞,例如:CVE-2015-4852、CVE-2016-0638、CVE-2016-3510、CVE-2017-3248、CVE-2018-2628、CVE-2018-2894。
xml decoded反序列化RCE漏洞
1. CVE-2017-3506
此漏洞主要是由于wls组件使用了webservice来处理soap请求,在weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest方法中,当localHeader1和localHeader2都不为null时,将会把所包含的数据传入weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld方法。在此方法中,对WorkContextXmlInputAdapter类进行了实例化,并调用WorkContextXmlInputAdapter类的构造方法,通过XMLDecoder()进行反序列化操作。
weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest代码如下图所示:
weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld代码如下图所示:
weblogic.wsee.workarea.WorkContextXmlInputAdapter代码如下图所示:
CVE-2017-3506 POC
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
在上方8个路径中任意选择一个路径,将content-type改成text/xml类型,传入payload,即可利用漏洞。
在上方的POC中,闭合的中可以构造任何我们想要执行的命令。在先后引用java.beans.XMLDecoder、java.lang.ProcessBuilder、java.lang.String之后,便可以在index中设定参数序号,并在string标签中传入想要远程执行的命令。
2. CVE-2017-10271漏洞
CVE-2017-10271是基于CVE-2017-3506漏洞原理基础上,对CVE-2017-3506修复补丁的一次绕过。下图是CVE-2017-3506修复补丁的部分代码:
前言
目前Weblogic在全球的使用量占居前列,据统计,在全球范围内对互联网开放Weblogic服务的资产数量多达35382台,其中归属中国地区的资产数量为10562台。如果爆发一个Weblogic高危漏洞,那将会给中国的大量用户带来巨大的灾难。
本文主要介绍了近五年爆发的Weblogic反序列化的高危漏洞,一次又一次的修补,一次又一次的绕过,漏洞挖掘者和漏洞防御者之间的博弈从未停止过,而且这种博弈在今后的生活中也将会愈演愈烈。
0×01 Weblogic简介
Weblogic是美国Oracle公司出品的一个应用服务器(application server),确切的说是一个基于Java EE架构的中间件,是用于开发、集成、部署和管理大型分布式Web应用、网络应用和 数据库应用的Java应用服务器。
Weblogic将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中,是商业市场上主要的Java(Java EE)应用服务器软件之一,也是世界上第一个成功商业化的Java EE应用服务器,具有可扩展性、快速开发、灵活、可靠等优势。
在功能性上,Weblogic是Java EE的全能应用服务器,包括EJB 、JSP、servlet、JMS等,是商业软件里排名第一的容器(JSP、servlet、EJB等),并提供其他工具(例如Java编辑器),因此也是一个综合的开发及运行环境。 本文来自无奈人生安全网
在扩展性上,Weblogic Server凭借其出色的群集技术,拥有处理关键Web应用系统问题所需的性能、可扩展性和高可用性。Weblogic Server既实现了网页群集,也实现了EJB组件群集,而且不需要任何专门的硬件或操作系统支持。网页群集可以实现透明的复制、负载平衡以及表示内容容错。无论是网页群集,还是组件群集,对于电子商务解决方案所要求的可扩展性和可用性都是至关重要的。
目前Weblogic在全球的使用量也占居前列,据统计,在全球范围内对互联网开放Weblogic服务的资产数量多达35382台,美国和中国的Weblogic的使用量接近Weblogic总使用量的70%,其中归属中国地区的资产数量为10562台。
这样的话,如果爆发一个Weblogic高危漏洞,那将会给中国的大量用户带来巨大的灾难。
0×02 高危漏洞介绍
Weblogic漏洞有很多,但是五年之前的大多数漏洞只是小打小闹,对服务器并不能造成巨大的影响。然而,自从2015年11月6日,FoxGlove Security 安全团队的 @breenmachine 在博客中介绍了如何利用Java反序列化和 Apache Commons Collections 这一基础类库来攻击最新版的 Weblogic、WebSphere、JBoss等主流的Java服务器,并且都可以实现远程代码执行,Weblogic变得不再安全。
无奈人生安全网
道高一尺魔高一丈,伴随着Weblogic补丁的不断发布,各种的绕过方法也是不断地更新。下面介绍一下近5年来让Oracle头痛不已的Weblogic反序列化漏洞。
高危漏洞主要涉及到两个种类:
利用xml decoded反序列化进行远程代码执行的漏洞,例如:CVE-2017-10271,CVE-2017-3506。
利用java反序列化进行远程代码执行的漏洞,例如:CVE-2015-4852、CVE-2016-0638、CVE-2016-3510、CVE-2017-3248、CVE-2018-2628、CVE-2018-2894。
xml decoded反序列化RCE漏洞
1. CVE-2017-3506
此漏洞主要是由于wls组件使用了webservice来处理soap请求,在weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest方法中,当localHeader1和localHeader2都不为null时,将会把所包含的数据传入weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld方法。在此方法中,对WorkContextXmlInputAdapter类进行了实例化,并调用WorkContextXmlInputAdapter类的构造方法,通过XMLDecoder()进行反序列化操作。
weblogic.wsee.jaxws.workcontext.WorkContextServerTube.processRequest代码如下图所示:
无奈人生安全网
weblogic.wsee.jaxws.workcontext.WorkContextTube.readHeaderOld代码如下图所示:
weblogic.wsee.workarea.WorkContextXmlInputAdapter代码如下图所示:
CVE-2017-3506 POC
/wls-wsat/CoordinatorPortType
/wls-wsat/RegistrationPortTypeRPC
/wls-wsat/ParticipantPortType
/wls-wsat/RegistrationRequesterPortType
/wls-wsat/CoordinatorPortType11
/wls-wsat/RegistrationPortTypeRPC11
/wls-wsat/ParticipantPortType11
/wls-wsat/RegistrationRequesterPortType11
在上方8个路径中任意选择一个路径,将content-type改成text/xml类型,传入payload,即可利用漏洞。
在上方的POC中,闭合的中可以构造任何我们想要执行的命令。在先后引用java.beans.XMLDecoder、java.lang.ProcessBuilder、java.lang.String之后,便可以在index中设定参数序号,并在string标签中传入想要远程执行的命令。 copyright 无奈人生
2. CVE-2017-10271漏洞
CVE-2017-10271是基于CVE-2017-3506漏洞原理基础上,对CVE-2017-3506修复补丁的一次绕过。下图是CVE-2017-3506修复补丁的部分代码:
copyright 无奈人生