Hazelcast是一套可扩展的开源数据分发平台。在上一篇文章中:
CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞
QCyber,公众号:且听安全【最新漏洞预警】CVE-2022-26133 Atlassian Bitbucket Data Center反序列化漏洞
利用Hazelcast接口反序列化漏洞实现了Bitbucket Data Center RCE。分析完漏洞之后,我对Hazelcast分发平台产生了兴趣,通过进一步研究,顺手复现了今年爆出的一个XXE漏洞,通报如下:
引入`5.1-BETA-1`版本jar包。漏洞触发点位于`AbstractXmlConfigRootTagRecognizer`:
构造函数通过`SAXParserFactory`实例化xml解析对象`saxParser`,然后在函数`isRecognized`中调用`parse`完成xml解析,没有任何限制,这是一个非常典型的XXE漏洞。
搜索`AbstractXmlConfigRootTagRecognizer#isRecognized`函数被调用情况,发现在Hazelcast配置类`com.hazelcast.config.Config`中用于加载配置的函数`loadFromStream`存在对`isRecognized`的调用:
当我们通过`loadFromString`函数加载Hazelcast配置,并且配置内容可控时,将导致出现XXE漏洞。
构造如下Hazelcast启动代码:
启动:
触发XXE:
调用栈如下:
修改`SAXParserFactory`对象实例化方式为`XmlUtil.getSAXParserFactory`:
添加了安全配置:
setFeature(dbf, "http://apache.org/xml/features/disallow-doctype-decl");
由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,且听安全团队及文章作者不为此承担任何责任。
点关注,不迷路!
原文始发于微信公众号(且听安全):【开源组件系列】CVE-2022-0265 Java开源组件安全之Hazelcast XXE漏洞