0x01 概述
近期,Adobe ColdFusion 发布了多个安全更新,引起了我们的关注。Adobe ColdFusion 是一款基于 Java 的商业应用程序服务器,2023 年 7 月 13 日,ProjectDiscovery 发布了分析文章,我们通过研究 CVE-2023-29300 发现这其实是一个未公开且非常有趣的漏洞,此时官方尚未发布安全补丁,因此我们立即开始寻找新的利用方式。不久之后,ProjectDiscovery 意识到自己公布了 0day 漏洞,紧急删除了分析文章,并等待官方发布安全补丁,具体的时间可参考下文的漏洞时间线。
ProjectDiscovery 公布的利用方式受 JDK 小于 9 的限制,经过测试,这条已公开的 JNDI 利用链成功利用率为 0.6%。其中提到了关于 commons-beanutils 的利用链,经过我们的分析,实际上并不需要使用它,并且还存在其它的利用链。**本文将从 ColdFusion 2023 发布版的 Update 1 安全更新内容入手,详细分析 CVE-2023-29300 的漏洞成因,并提出一些后续的研究方向。
我们在 Goby 中已经集成了 CVE-2023-29300 漏洞的 JNDI 利用链(CVE-2023-38204),实现了命令执行回显和自定义 ldap 服务器地址的功能。演示效果如下:**

0x02 漏洞环境
我们已经在 vulfocus 中集成了开箱即用的环境,版本为 Ubuntu 20.04 + JDK 8u60 + Apache Tomcat 9.0.78 + ColdFusion Release 2023.0.0.330468。
拉取镜像:
docker pull vulfocus/vcpe-1.0-a-adobe-coldfusion:2023.0.0.330468-openjdk-release
启动环境:
docker run -d -P vulfocus/vcpe-1.0-a-adobe-coldfusion:2023.0.0.330468-openjdk-release
0x03 漏洞分析
3.1 补丁分析
7 月 12 日,Adobe 发布了 ColdFusion (2023 release) Update 1 更新。
将 patch 包反编译后的代码与更新前的代码进行比对,可以发现coldfusion.wddx.DeserializerWorker#startElement()方法中的明显变化:
新增的validateWddxFilter()方法如下。
private void validateWddxFilter(AttributeList atts) throws InvalidWddxPacketException {
String attributeType = atts.getValue("type");
if (attributeType.endsWith(";")) {
attributeType = attributeType.replace(";", "");
}
if (attributeType.startsWith("L")) {
String attributeTypeCopy = attributeType;
validateBlockedClass(attributeTypeCopy.replaceFirst("L", ""));
}
validateBlockedClass(attributeType);
}
private void validateBlockedClass(String attributeType) throws InvalidWddxPacketException {
if (attributeType != null && !attributeType.toLowerCase().startsWith("coldfusion") && !attributeType.equalsIgnoreCase(StructTypes.ORDERED.getValue()) && !attributeType.equalsIgnoreCase(StructTypes.CASESENSITIVE.getValue()) && !attributeType.equalsIgnoreCase(StructTypes.ORDEREDCASESENSITIVE.getValue()) && WddxFilter.invoke(attributeType

文章详细描述了AdobeColdFusion的一个未公开漏洞CVE-2023-29300,涉及WDDX序列化和JNDI利用,通过分析漏洞成因、利用链及环境搭建,展示了漏洞利用的可能性。
最低0.47元/天 解锁文章
1162

被折叠的 条评论
为什么被折叠?



