【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞

渗透技巧 2年前 (2022) admin
926 0 0
漏洞信息


Hazelcast是一套可扩展的开源数据分发平台。在上一篇文章中:


CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞

QCyber,公众号:且听安全【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞


利用Hazelcast接口反序列化漏洞实现了Bitbucket Data Center RCE。分析完漏洞之后,我对Hazelcast分发平台产生了兴趣,通过进一步研究,顺手复现了今年爆出的一个XXE漏洞,通报如下:



【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


漏洞分析



引入`5.1-BETA-1`版本jar包。漏洞触发点位于`AbstractXmlConfigRootTagRecognizer`:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


构造函数通过`SAXParserFactory`实例化xml解析对象`saxParser`,然后在函数`isRecognized`中调用`parse`完成xml解析,没有任何限制,这是一个非常典型的XXE漏洞。


搜索`AbstractXmlConfigRootTagRecognizer#isRecognized`函数被调用情况,发现在Hazelcast配置类`com.hazelcast.config.Config`中用于加载配置的函数`loadFromStream`存在对`isRecognized`的调用:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


当我们通过`loadFromString`函数加载Hazelcast配置,并且配置内容可控时,将导致出现XXE漏洞。


漏洞复现


构造如下Hazelcast启动代码:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


启动:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


触发XXE:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


调用栈如下:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


修复方式


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


修改`SAXParserFactory`对象实例化方式为`XmlUtil.getSAXParserFactory`:


【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


添加了安全配置:


setFeature(dbf, "http://apache.org/xml/features/disallow-doctype-decl");



由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。



【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞


点关注,不迷路!

【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞

原文始发于微信公众号(且听安全):【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞

版权声明:admin 发表于 2022年4月20日 上午7:39。
转载请注明:【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...