Bucket任意文件上传
# 腾讯云 COS 任意文件上传
# 1. 环境搭建
使用 TerraformGoat (opens new window) 搭建漏洞环境。
第一步,通过 docker 来运行工具 TerraformGoat :
- 获取 TerraformGoat 镜像;
- 运行 TerraformGoat 容器;
- 进入 TerraformGoat 容器。
docker pull registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_tencentcloud:0.0.7
docker run -itd --name terraformgoat_tencentcloud_0.0.7 registry.cn-hongkong.aliyuncs.com/huoxian_pub/terraformgoat_tencentcloud:0.0.7
docker exec -it terraformgoat_tencentcloud_0.0.7 /bin/bash
1
2
3
2
3

第二步,为相应的环境 配置腾讯云访问密钥:
cd /TerraformGoat/tencentcloud/cos/unrestricted_file_upload/
vim terraform.tfvars
1
2
2
进入对应的环境配置目录,打开配置文件。

配置文件如下:

填写你自己的腾讯云 AK 与 KEY :

第三步,初始化 并 部署环境:
terraform init
terraform apply
1
2
2
初始化(时间可能较长,需耐心等待)。

部署环境,需要输入 yes 确认操作:

部署完成之后,将会返回存储桶的域名:

存储桶页面:

# 2. 漏洞复现
抓取存储桶的 HTTP 请求数据包,尝试访问a.txt
文件,提示 404 不存在。

使用PUT
方法 向目标存储桶上传一个a.txt
文件。
PUT /a.txt HTTP/1.1
Host: hxlab-yyr41-1308708518.cos.ap-beijing.myqcloud.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Content-Length: 12
This is aaa.
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9

再次访问a.txt
,可以看到文件内容,说明上传成功,存在任意文件上传漏洞。

再次上传一个a.txt
文件,文件内容有所不同。

访问a.txt
,可以看到新的文件内容,说明原先存在的文件会被覆盖。

# 3. 漏洞修复
注:修复方式不唯一。
修复前,可以上传任意文件:

进入腾讯云控制台,选择对象存储 --> 存储桶列表 --> 配置管理
。

进入配置管理,修改配置项权限管理 --> Policy权限设置 --> 公有读写 --改为--> 公有读私有写
,修改完成后点击保存
。


再次上传文件,响应 403 拒绝访问,修复成功。

# 4. 销毁环境
练习完成之后,请立马销毁环境,防止:
- 环境一直运行,持续扣费;
- 环境是公网访问的,容易遭受攻击;
- ...等问题
# (1)销毁方式一
运行以下命令,并输入 yes 确认销毁:
terraform destroy
1

# (2)销毁方式二
通过控制台进行销毁:

再次访问存储桶页面,将会提示 NoSuchBucket(没有找到存储桶),说明销毁成功。

编辑 (opens new window)