前语
现在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缝隙有许多,可是五年之前的大多数缝隙仅仅小打小闹,对服务器并不能形成巨大的影响。但是,自从2019年11月6日,FoxGlove Security 安全团队的 @breenmachine 在博客中介绍了怎么使用Java反序列化和 Apache Commons Collections 这一根底类库来进犯最新版的 Weblogic、WebSphere、JBoss等干流的Java服务器,而且都能够完成长途代码履行,Weblogic变得不再安全。
道高一尺魔高一丈,伴随着Weblogic补丁的不断发布,各种的绕过办法也是不断地更新。下面介绍一下近5年来让Oracle头痛不已的Weblogic反序列化缝隙。
高危缝隙首要涉及到两个品种:
使用xml decoded反序列化进行长途代码履行的缝隙,例如:CVE-2019-10271,CVE-2019-3506。
使用java反序列化进行长途代码履行的缝隙,例如:CVE-2019-4852、CVE-2019-0638、CVE-2019-3510、CVE-2019-3248、CVE-2019-2628、CVE-2019-2894。
xml decoded反序列化RCE缝隙
1. CVE-2019-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-2019-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-2019-10271缝隙
CVE-2019-10271是根据CVE-2019-3506缝隙原理根底上,对CVE-2019-3506修正补丁的一次绕过。下图是CVE-2019-3506修正补丁的部分代码:
[1] [2] [3] 黑客接单网