内容简介:该漏洞是在4月份
漏洞分析
该漏洞是 CVE-2019-2725 的绕过,因此前面的流程都是一样的,经过21个 handler 处理,最终进入 WorkAreaHeader
在4月份 oracle 对2725紧急补丁中,过滤了 class 元素,因此不能再通过 class 创建对象
这次的绕过实际上就是找到另外的元素代替 class 进而绕过补丁。
在 jdk7 中解析 xml 时获取 element 元素的相关类为 com.sun.beans.decoder.DocumentHandler
当传入 array 标签,进入 ArrayElementHandler ,为 array 元素添加属性时,只能从 length , class , id 中选择,唯一能创建类的 class 已经加入了黑名单,所以在 jdk1.7 下不受此漏洞影响,这次的绕过出现在低于 jdk1.7 的 java 版本上。
weblogic 10.3.6.0 自带的 jdk 版本为1.6, jdk1.6 中解析xml时有很大的不同,相关处理方法在 com.sun.beans.ObjectHandler
解析时首先进入的是 startElement 方法
该方法首先获取元素的属性并创建一个 hashmap ,当元素含有属性时,会根据属性值进行类/属性/方法的相关操作,当元素没有属性时,调用的是 new 方法,例如解析 <java> 、 <void> 时。而此时如果传入了 method 值就会把方法名设置为该值。
随后把方法名设置为我们传入的值,最终通过 forName 找到指定的类
之后的流程就和2725一样的了
进入 WorkContextXmlInputAdapter:readUTF() 后的调用栈
补丁分析
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 过滤,过滤方法如下
这回终于是采用了白名单方式, allowedName 如下
可以看到 allowedName 严格限制了可以使用的标签,并且也限制了标签可以拥有的属性,值得注意的是 allowedName 不再允许 field 标签了,emmm…
总结
这个漏洞是当时应急时简单分析的,后续有时间会详细整理一下。
从整个 XMLDecoder 反序列化漏洞的来看(CVE-2017-3506 -> CVE-2017-10271(10352) -> CVE-2019-2725 -> CVE-2019-2729),使用黑名单修补漏洞是不靠谱的,永远不知道下一次绕过是在什么时候,而这次的白名单修复方式会不会还存在缺陷呢?此处还得打一个问号。
以上所述就是小编给大家介绍的《CVE-2019-2729 Weblogic XMLDecoder反序列化漏洞分析》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Weblogic IIOP反序列化漏洞(CVE-2020-2551) 漏洞分析
- Liferay portal java反序列化漏洞分析
- Apache Commons Fileupload 反序列化漏洞分析
- WebLogic | CVE-2019-2725反序列化漏洞分析
- 一处反序列化任意文件写入的漏洞分析
- Oracle Coherence 反序列化漏洞分析(CVE-2020-2555)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
风口上的汽车新商业
郭桂山 / 人民邮电出版社 / 59
本书从互联网+汽车趋势解析、汽车电商困局突围策略、汽车后市场溃败求解等三个篇章详细阐述了作者的观察与思考,当然更多的还是作者在汽车电商行业的实践中得出的解决诸多问题的战略策略,作者站在行业之巅既有战略策略的解决方案,同时也有战术上的实施细则,更有实操案例解析与行业大咖访谈等不可多得的干货。当然,作者一向追崇的宗旨是,书中观点的对错不是最重要的,重在与行业同仁探讨,以书会友,希望作者的这块破砖头,能......一起来看看 《风口上的汽车新商业》 这本书的介绍吧!