CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

栏目: Java · 发布时间: 5年前

内容简介:该漏洞是在4月份

漏洞分析

该漏洞是 CVE-2019-2725 的绕过,因此前面的流程都是一样的,经过21个 handler 处理,最终进入 WorkAreaHeader

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

在4月份 oracle 对2725紧急补丁中,过滤了 class 元素,因此不能再通过 class 创建对象

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

这次的绕过实际上就是找到另外的元素代替 class 进而绕过补丁。

jdk7 中解析 xml 时获取 element 元素的相关类为 com.sun.beans.decoder.DocumentHandler

当传入 array 标签,进入 ArrayElementHandler ,为 array 元素添加属性时,只能从 lengthclassid 中选择,唯一能创建类的 class 已经加入了黑名单,所以在 jdk1.7 下不受此漏洞影响,这次的绕过出现在低于 jdk1.7java 版本上。

weblogic 10.3.6.0 自带的 jdk 版本为1.6, jdk1.6 中解析xml时有很大的不同,相关处理方法在 com.sun.beans.ObjectHandler

解析时首先进入的是 startElement 方法

该方法首先获取元素的属性并创建一个 hashmap ,当元素含有属性时,会根据属性值进行类/属性/方法的相关操作,当元素没有属性时,调用的是 new 方法,例如解析 <java><void> 时。而此时如果传入了 method 值就会把方法名设置为该值。

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

随后把方法名设置为我们传入的值,最终通过 forName 找到指定的类

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

之后的流程就和2725一样的了

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

进入 WorkContextXmlInputAdapter:readUTF() 后的调用栈

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

补丁分析

6月19日, Oralce 官方放出了该漏洞的补丁,详情见 这里

分析一下补丁

this.validate(new ByteArrayInputStream(baos.toByteArray()));
this.validateFormat(new ByteArrayInputStream(baos.toByteArray()));
this.xmlDecoder = new XMLDecoder(new ByteArrayInputStream(baos.toByteArray()));

在原来 validate 过滤的基础上又增加了一次 validateFormat 过滤,过滤方法如下

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

这回终于是采用了白名单方式, allowedName 如下

CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析

可以看到 allowedName 严格限制了可以使用的标签,并且也限制了标签可以拥有的属性,值得注意的是 allowedName 不再允许 field 标签了,emmm…

总结

这个漏洞是当时应急时简单分析的,后续有时间会详细整理一下。

从整个 XMLDecoder 反序列化漏洞的来看(CVE-2017-3506 -> CVE-2017-10271(10352) -> CVE-2019-2725 -> CVE-2019-2729),使用黑名单修补漏洞是不靠谱的,永远不知道下一次绕过是在什么时候,而这次的白名单修复方式会不会还存在缺陷呢?此处还得打一个问号。

Back to posts


以上所述就是小编给大家介绍的《CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

着陆页:获取网络订单的关键

着陆页:获取网络订单的关键

谢松杰 / 电子工业出版社 / 2017-1-1 / CNY 55.00

着陆页是用户点击广告后看到的第一个页面,是相关产品和服务的商业模式与营销思想的载体,是实现客户转化的关键。本书从“宏观”和“微观”两个层面对着陆页的整体框架和局部细节进行了深入的讨论,既有理论和方法,又有技术与工具,为读者呈现了着陆页从策划到技术实现的完整知识体系,帮助读者用最低的成本实现网站最高的收益。 谢松杰老师作品《网站说服力》版权输出台湾,深受两岸读者喜爱。本书是《网站说服力》的姊妹......一起来看看 《着陆页:获取网络订单的关键》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具