Weblogic CVE-2019-2647等相关XXE漏洞分析

背景

按照惯例,Oracle发布了4月份的补丁,详情见链接(https://www.oracle.com/technetwork/security-advisory/cpuapr2019-5072813.html#AppendixFMW )一看就是一堆漏洞,高危的还好几个。

CVSS 评分为9.8的暂且不分析,我们先来看看wsee模块下的几个XXE漏洞,都是给的7.5的评分,个人觉得这分给的少,毕竟可以泄露weblogic的加密密钥和密码文件,破解之后就可以获取用户名和密码。在这些漏洞中要数@Matthias Kaiser的贡献最大,高危的都是他提交的。

简单分析

从补丁对比文件来看,在wsee模块下有5个都加了xxe的防护,那我们就从xxe漏洞入手。有一个新增的文件WSATStreamHelper.java,核心代码如下:

稍微懂点xxe漏洞的人都知道这是xxe的防护代码,这个文件新加到了ForeignRecoveryContext.java和WSATXAResource.java中,就拿 ForeignRecoveryContext来入手。其修复后的代码如下:

仔细对比下来就是EndpointReference.readFrom(WSATStreamHelper.convert(new ByteArrayInputStream(eprBytes)));WSATStreamHelper.convert是新加的,从前面代码中也可以看到在convert的过程中启用了xxe防护。再一看这个函数还是readExternal,这不就是典型的反序列化漏洞的入口吗?看官看到这就知道payload怎么来了,最典型的就是通过T3协议。

分析过程

分析过程还是有些弯路的,最典型的就是为什么拿ForeignRecoveryContext.java入手,其实看官可以尝试些其他漏洞点,构造的时候会遇到一些问题,有些问题不好一时解决所以就转到ForeignRecoveryContext.java。

test.xml的内容可以是任意的xxe的payload:比如说如下,
xxe,测试payload

关键点都展示完了,秀一下成果。

成果

可以看到调用栈如下:

关于天机实验室

天机实验室专注于漏洞挖掘与利用技术研究。 研究方向主要包括漏洞挖掘技术研究、漏洞分析技术研究、漏洞利用技术研究、安全防御机制及对抗技术研究等。研究目标涵盖主流操作系统、流行的应用系统及软件、重要的基础组件库以及新兴的技术方向。

 

 

发表评论