# CVE-2019-2725反序列化漏洞补丁绕过分析

一、CVE-2019-2725几种poc构造

CVE-2019-2725几种poc构造看我博客链接,解压密码都是afanti_
CVE-2019-2725 二次反序列化jdk7u21 gadgets
CVE-2019-2725 二次反序列化jndi注入分析
CVE-2019-2725 二次反序列化FileSystemXmlApplicationContext Gadget POC
CVE-2019-2725二次反序列化EventData Gadget POC/JdbcRowSetImpl POC构造

二、补丁信息

看下CVE-2019-2725补丁信息,与上次补丁过滤了class标签,主要的目标是找个标签代替class标签绕过补丁
# CVE-2019-2725反序列化漏洞补丁绕过分析_第1张图片

三、复现分析

复现环境:jdk1.6.0_31+weblogic 10.3.6

通过 ,Class.forName(classname) 反射方法获取类,先把回显的poc怼出来,回显参考我写的这篇文章https://www.cnblogs.com/afanti/p/10887381.html,使用jdk7u21 gadgets,具体poc直接贴在最下方。
直接定位到处理xml标签的类:com.sun.beans.ObjectHandler类的startElement方法:
在处理array标签时跟入,this.isString为false来到else分支。
# CVE-2019-2725反序列化漏洞补丁绕过分析_第2张图片
194行会实例化MutableExpression,看下这个类的方法,
# CVE-2019-2725反序列化漏洞补丁绕过分析_第3张图片
查阅java手册
,可以用表达式的形式来调用构造方法、实例化对象、调用方法
Alt text
这里方法名赋值为forName
# CVE-2019-2725反序列化漏洞补丁绕过分析_第4张图片
跟到具体处理array标签的代码,因为array标签没有设置length属性,来到else分支,Expression的Target设置为一个Object对象
# CVE-2019-2725反序列化漏洞补丁绕过分析_第5张图片
最终本函数会将调用Class.forName的Expression对象压入表达式栈中
# CVE-2019-2725反序列化漏洞补丁绕过分析_第6张图片
再看一下endElement实例化恶意类的地方,将Class.forName从栈顶弹出,调用getValue的方法实例化UnitOfWorkChangeSet类
# CVE-2019-2725反序列化漏洞补丁绕过分析_第7张图片
最终来到漏洞触发点,传入jdk7u21的gadgets触发漏洞。
# CVE-2019-2725反序列化漏洞补丁绕过分析_第8张图片
调用栈信息:
# CVE-2019-2725反序列化漏洞补丁绕过分析_第9张图片
复现情况:
# CVE-2019-2725反序列化漏洞补丁绕过分析_第10张图片

复现环境:jdk1.7.0_21+weblogic 10.3.6

当jdk版本改为jdk1.7.0_21发现之前的payload不能用了,下断跟下原因,这里发现jdk1.7版本处理xml时跟jdk1.6不一样,是由一个一个Handler来处理。
# CVE-2019-2725反序列化漏洞补丁绕过分析_第11张图片
来到处理array的Handler,这个类的成员变量只有length属性,没有method属性
# CVE-2019-2725反序列化漏洞补丁绕过分析_第12张图片
看其父类的属性,有class属性,在向上找的话也没发现method属性,知道报错的原因了,具体跟一下
# CVE-2019-2725反序列化漏洞补丁绕过分析_第13张图片
跟入父类的addAttribute
# CVE-2019-2725反序列化漏洞补丁绕过分析_第14张图片
这里'method'!=class返回false
# CVE-2019-2725反序列化漏洞补丁绕过分析_第15张图片
这里抛出异常
# CVE-2019-2725反序列化漏洞补丁绕过分析_第16张图片
Alt text

复现环境:jdk1.6.0_31+weblogic 12.1.3

在jdk1.6.0_31版本Weblogic 12服务器都不能启动,查阅资料要求weblogic 12.1.3要求jdk需要1.7以上,所以weblogic12不存在绕过。

总结

利用环境jdk1.6以下,weblogic版本10.3.6。
通过绕过。
POC:链接:https://pan.baidu.com/s/1Pa8_Bpl7XpDC6U12r1IWUw
提取码:rpkb

转载于:https://www.cnblogs.com/afanti/p/11079638.html

你可能感兴趣的:(数据库,java,运维)