g0thamRabb1t/cve-2026-48282-coldfusion-rds-detection

GitHub: g0thamRabb1t/cve-2026-48282-coldfusion-rds-detection

该仓库在实验室环境中验证了 Adobe ColdFusion RDS 的 CVE-2026-48282 漏洞,并提供了详细的攻击证据重建、检测策略和 SOC 分诊指南。

Stars: 0 | Forks: 0

# CVE-2026-48282 — Adobe ColdFusion RDS 验证与检测 在 Adobe ColdFusion Remote Development Services (RDS) 中对 **CVE-2026-48282** 进行的实验室验证,重点关注技术证据、事件重建和防御性检测机会。 该仓库记录了一次受控测试,其中易受攻击的 RDS FILEIO 功能被用于将一个 CFM 文件写入 ColdFusion 应用程序目录。通过 HTTP 调用该文件导致 ColdFusion 启动系统 shell 并建立出站连接。产生的进程和网络活动使用 Linux `auditd`、`tcpdump`、Docker telemetry、ColdFusion 日志和 Windows Event ID 4688 进行了捕获。 ## 报告 - [英文验证报告](reports/CVE-2026-48282_ColdFusion_RDS_detection_EN.pdf) - [波兰语验证报告](reports/CVE-2026-48282_ColdFusion_RDS_detection_PL.pdf) 两份报告均包含完整的测试方法、证据摘录、时间线、进程链、网络指标、缓解指南、审计建议以及示例 SIEM 逻辑。 ## 仓库结构 ``` . ├── README.md ├── SHA256SUMS.txt ├── reports/ │ ├── CVE-2026-48282_ColdFusion_RDS_detection_EN.pdf │ └── CVE-2026-48282_ColdFusion_RDS_detection_PL.pdf └── screenshots/ ├── 01_rds_authentication_no_authentication.png ├── 02_vulnerability_check.png ├── 03_rds_file_write_validation.png ├── 04_reverse_shell_session.png └── 05_connect_cfm_on_ubuntu_host.png ``` 不包含任何漏洞利用源码、payload 源码、CFM payload、原始 PCAP 或原始主机证据包。 ## 测试环境 | 角色 | 系统 | |---|---| | 受害者主机 | Ubuntu 24.04.4 LTS,内核 6.17.0-35-generic,Docker Engine 29.5.3 | | 目标应用程序 | Adobe ColdFusion 2025 Update 9,镜像 `adobecoldfusion/coldfusion2025:2025.0.9` | | 容器 | `coldfusion-2025-u9` | | 攻击者工作站 | Microsoft Windows 11 Home 10.0.26200 | | ColdFusion 服务 | `http://172.20.10.3:8500` | | Windows 测试地址 | `172.20.10.2` | | 容器地址 | `172.19.0.2` | | 测试日期 | 2026 年 7 月 7 日 | ColdFusion 应用程序目录 `/app` 通过 Docker bind mount 从 Ubuntu 主机路径 `/home/user/coldfusion-u9/app` 映射而来。 ## 验证内容 测试在隔离且经授权的实验室环境中进行。验证涵盖以下顺序: 1. Adobe ColdFusion 2025 Update 9 部署在 Docker 中。 2. 为实验室测试启用 RDS,并将身份验证模式设置为 **No authentication needed**。 3. 使用 [参考资料](#references) 中列出的公开项目确认 RDS endpoint 可达,且测试的实例似乎存在漏洞。 4. 使用仅限实验室使用的上传器,通过 RDS FILEIO 操作将一个 CFM 文件提交至 `/app/connect.cfm`。 5. 该文件通过 `GET /connect.cfm` 被调用。 6. ColdFusion 通过 Java 进程执行路径启动了 `/bin/bash`。 7. shell 建立了到 Windows 工作站的出站 TCP 连接。 8. 执行了非破坏性的发现命令,以确认有效用户、操作系统和工作目录。 9. 来自攻击者和受害者系统的证据被关联到一个统一的 UTC 时间线中。 报告有意记录了证据和检测逻辑,但没有分发定制的上传器或 payload 实现。 ## 确认结果 实验室测试确认: - 在测试配置中,通过 RDS FILEIO endpoint 进行任意 CFM 文件写入; - 在 HTTP 请求后,ColdFusion 执行了写入的 CFM 文件; - 创建了以下进程链: ``` ColdFusion Java └── jspawnhelper └── /bin/bash -c ... └── bash -i ├── whoami ├── uname └── id ``` - 从 ColdFusion 容器到 Windows 主机的出站 shell 连接; - 在 ColdFusion 服务用户上下文中执行,而非 root。 在容器内部,有效身份为: ``` uid=999(cfuser) gid=999(cfuser) groups=999(cfuser) ``` 在 Ubuntu 主机上,UID 999 使用主机账户数据库解析为 `dnsmasq`,这解释了在主机级别的 `auditd` 记录和文件所有权输出中显示不同用户名的原因。 ## 关键证据 ### RDS 配置 测试使用的管理配置如下所示。**No authentication needed** 选项仅为了受控的实验室验证而启用。 ![RDS 身份验证配置](https://static.pigsec.cn/wp-content/uploads/repos/cas/6b/6b491801e7233560d38b68d335d2ece018aabc96745eadc64ffa55641f1072ff.png) ### 初始漏洞检查 初步检查确认 RDS endpoint 可达,并通过路径遍历报告了任意文件读/写行为。 ![漏洞检查](https://static.pigsec.cn/wp-content/uploads/repos/cas/1c/1c2fcae7810cc76b37eb8394f2cccdc7f324da9ee5b8e8792e03db5d9d21d83d.png) ### CFM 文件写入 实验室上传器将本地 CFM 测试文件提交至 `/app/connect.cfm`。服务器返回 RDS 响应 `1:2:XX`,随后写入的资源可通过 HTTP 访问。 ![RDS 文件写入验证](https://static.pigsec.cn/wp-content/uploads/repos/cas/05/058e56331053ba501935a1151e6d59fccf79c1d60d2d15194ba9486d6f5fd96c.png) ### 代码执行与服务账户上下文 生成的 shell 会话确认以 ColdFusion 服务账户身份执行。截图中显示的命令仅限于环境识别。 ![Reverse shell 会话](https://static.pigsec.cn/wp-content/uploads/repos/cas/37/37f583ada35174c224fb1742af65b5a0ad32afcbf656f2b62f644448add951a4.png) ### Ubuntu bind mount 上的文件 该文件出现在 `/home/user/coldfusion-u9/app` 中,这是作为 `/app` 挂载到容器中的主机路径。 ![Ubuntu 主机上的 connect.cfm](https://static.pigsec.cn/wp-content/uploads/repos/cas/c6/c6447b4a842baa4b2f875d937c3be01576c0b0f3d7d0433f399a89b2c2424829.png) ## 重建的时间线 完整的时间线可在两份 PDF 报告中找到。最重要的事件包括: | UTC | 事件 | |---|---| | 20:55:17 | 管理员登录 CFADMIN | | 20:55:32 | 启用 RDS 安全性并将身份验证设置为 `No authentication needed` | | 21:13:22 | Linux 审计、数据包捕获和 Docker 收集器已启动 | | 21:14:25 | 从 Windows 执行漏洞检查脚本 | | 21:14:40.940 | `POST /CFIDE/main/ide.cfm?ACTION=FILEIO` 并带有针对 `/app/connect.cfm` 的 `WRITE` 操作 | | 21:14:40.944 | RDS 返回 `1:2:XX` | | 21:14:40.950 | 浏览器请求 `/connect.cfm` | | 21:14:41.321 | ColdFusion Java 启动了 `jspawnhelper` | | 21:14:41.324 | ColdFusion 启动了 `/bin/bash` | | 21:14:56 | `ncat.exe -lv 4444` 在 Windows 上启动 | | 21:15:00.726 | 到 `172.20.10.2:4444` 的出站连接成功 | | 21:15:07–21:15:15 | `whoami`、`uname`、`id` 和 `pwd` 确认了执行上下文 | | 21:15:20 | 会话已关闭 | ## 证据收集方法 ### Linux 和 Docker 受害者主机收集了: - 有效 UID 为 999 的 `execve`、`execveat` 和 `connect` 的 `auditd` 事件; - 对 ColdFusion webroot 和日志目录的监控; - 针对 HTTP 和回调端口的 `tcpdump` 流量; - 周期性的进程和 socket 快照; - Docker 容器元数据、日志、事件、进程列表和文件系统差异; - ColdFusion 应用程序和管理日志; - SHA-256 哈希值和元数据基线。 最终的 `auditd` 状态报告 `lost=0`,表明内核审计子系统在捕获的测试窗口期间没有报告丢弃的事件。 ### Windows 攻击者工作站的收集被刻意限制为与报告相关的工件: - 操作系统和网络详细信息; - Event ID 4688 进程创建记录; - 与 Python 和 Ncat 相关的进程; - 相关的 TCP 连接数据; - 实验室文件的哈希值; - Microsoft Defender 状态和检测结果; - 工具版本。 ## 最重要的检测机会 ### 1. RDS FILEIO 请求 监控 HTTP、反向代理、WAF 或网络 telemetry 以查找以下组合: ``` POST /CFIDE/main/ide.cfm?ACTION=FILEIO User-Agent: Dreamweaver-RDS-SCM1.00 request body contains: WRITE request body references: .cfm, .cfc, or .jsp ``` 这种组合明显强于任何单一指标。 ### 2. 文件写入随后执行 关联: 1. 对服务器可执行扩展名的 FILEIO `WRITE` 请求; 2. 随后对新写入资源的 `GET` 请求; 3. 在短时间窗口内 ColdFusion Java 或 `jspawnhelper` 的新子进程。 ### 3. 可疑的 ColdFusion 子进程 高价值进程指标包括: ``` parent process: java or jspawnhelper child process: bash, sh, dash, cmd.exe, powershell.exe, or pwsh ``` 其他命令行指标包括 `/dev/tcp`、交互式 shell 标志、重定向操作符、编码命令以及意外使用 `cfexecute`。 ### 4. 来自应用程序服务账户的出站连接 当 ColdFusion 启动的 shell 或解释器向工作站或不寻常的目标端口发起出站连接时触发警报。实验室事件使用的是 TCP 端口 4444,但生产环境的检测不应仅依赖于单一端口。 ### 5. RDS 配置更改 监控 ColdFusion 管理日志中包含以下内容的消息: ``` enabled RDS security RDS authentication type No authentication needed ``` 生产环境中的任何 RDS 配置更改都应进行审查,特别是当身份验证被削弱或服务可从其他网络访问时。 ### 6. 应用程序目录文件监控 测试发现了一个重要的容器监控限制:`/app` 是一个 bind mount。`docker diff` 显示了 `/app`,但无法完整查看主机挂载目录内创建的单个文件。 因此,文件完整性监控 (FIM)、`auditd`、eBPF 或 EDR 覆盖范围应监控支持该挂载的**真实主机路径**,例如: ``` /home/user/coldfusion-u9/app ``` 仅监控容器 overlay 或 `/opt/coldfusion/cfusion/wwwroot` 将无法捕获此测试的完整文件创建证据。 ## SOC 分诊指南 当检测到 HTTP 指标时,SOC 应立即将其与以下各项进行关联: - 源 IP 和 user agent; - RDS 身份验证和暴露配置; - FILEIO body 中包含的目标路径; - 新建或修改的 `.cfm`、`.cfc`、`.jsp` 或归档文件; - 创建后不久对同一文件的 HTTP 访问; - ColdFusion Java 子进程; - 来自服务账户的出站连接; - 随后的发现命令,如 `whoami`、`id`、`uname`、`hostname`、`pwd`、`ip`、`ifconfig`、`netstat` 或 `ss`; - 在初始进程执行后的持久化尝试、凭据访问或横向移动。 对 CFM 文件的单个 `GET` 请求本身是不够的。最强的警报结合了同一短时间窗口内的文件写入、文件访问、进程创建和网络连接 telemetry。 ## 推荐的缓解措施 1. 应用 APSB26-68 中提到的 Adobe ColdFusion 安全更新。 2. 在不需要 RDS 时将其禁用。 3. 如果必须保持启用 RDS,请强制执行身份验证,并限制只有明确授权的管理系统才能访问。 4. 防止 RDS 和 CFIDE 管理 endpoint 暴露给不受信任的网络。 5. 监控并限制对 ColdFusion 可执行服务器端内容的目录的写入。 6. 在业务功能不需要的情况下,限制 ColdFusion 服务账户启动操作系统进程的能力。 7. 监控 Docker bind mount 背后的主机路径,而不仅仅是容器 overlay 文件系统。 8. 检查环境是否存在意外的 CFM/CFC/JSP 文件和 ColdFusion 启动的 shell。 ## 范围和限制 - 验证是针对一个 ColdFusion 2025 Update 9 Docker 实例进行的。 - RDS 被特意配置为 **No authentication needed** 以进行受控测试。 - 观察到的影响是以 ColdFusion 服务账户身份执行代码;未观察到提权至 root 的情况。 - 结果确认了测试的路径和配置。这并不能证明每个部署、身份验证模式、反向代理或操作系统的行为都是相同的。 - 本仓库不分发原始漏洞利用代码、定制上传器和 CFM payload。 - 报告包含精选的证据摘录,而不是完整的原始日志,以保持材料的可读性并专注于检测。 ## 参考资料 - [Adobe 安全公告 APSB26-68](https://helpx.adobe.com/security/products/coldfusion/apsb26-68.html) - [NVD — CVE-2026-48282](https://nvd.nist.gov/vuln/detail/CVE-2026-48282) - [CVE.org — CVE-2026-48282](https://www.cve.org/CVERecord?id=CVE-2026-48282) - [用作初步验证参考的公开项目](https://github.com/imbas007/CVE-2026-48282-POC) ## 负责任使用声明 本材料仅供防御性安全研究、漏洞管理、检测工程、事件响应准备和授权测试使用。未经明确许可,请勿将其用于攻击系统。
标签:AMSI绕过, CISA项目, Maven, SOC检测, 威胁检测, 子域枚举, 安全报告, 库, 应急响应, 漏洞验证, 请求拦截