本文详细介绍了使用Kube-Hunter工具对Kubernetes集群进行安全扫描的过程,展示了开放10255端口的风险,包括信息泄露、特权容器等漏洞,并提供了完整的扫描结果分析。
Kubernetes: Kube-Hunter 10255
以下是一些示例输出,主要用于查看开放10255端口会提供什么信息。最令人感兴趣的可能是 /pods
端点、/metrics
端点或 /stats
端点。
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
$ ./kube-hunter.py
选择以下选项之一:
1. 远程扫描(扫描一个或多个特定IP或DNS名称)
2. 子网扫描(扫描所有本地网络接口上的子网)
3. IP范围扫描(扫描给定的IP范围)
您的选择:1
远程地址(用逗号分隔):1.2.3.4
~ 已开始
~ 发现开放的Kubernetes服务...
|
| Etcd:
| 类型:开放服务
| 服务:Etcd
|_ 主机:1.2.3.4:2379
|
| API服务器:
| 类型:开放服务
| 服务:API服务器
|_ 主机:1.2.3.4:443
|
| API服务器:
| 类型:开放服务
| 服务:API服务器
|_ 主机:1.2.3.4:6443
|
| Etcd远程版本披露:
| 类型:漏洞
| 主机:1.2.3.4:2379
| 描述:
| 远程版本披露可能为攻击者提供
|_ 攻击集群的宝贵数据
|
| Etcd可通过不安全连接(HTTP)访问:
| 类型:漏洞
| 主机:1.2.3.4:2379
| 描述:
| Etcd可通过HTTP(无需
| 授权和认证)访问,这将允许
| 潜在攻击者获得对etcd的访问权限
|_
|
| Kubelet API(只读):
| 类型:开放服务
| 服务:Kubelet API(只读)
|_ 主机:1.2.3.4:10255
|
| Etcd远程读取访问事件:
| 类型:漏洞
| 主机:1.2.3.4:2379
| 描述:
| 远程读取访问可能向攻击者暴露
|_ 集群可能的漏洞、密钥等
|
| K8s版本披露:
| 类型:漏洞
| 主机:1.2.3.4:10255
| 描述:
| 可以从/metrics端点中的日志
|_ 获取Kubernetes版本
|
| 特权容器:
| 类型:漏洞
| 主机:1.2.3.4:10255
| 描述:
| 节点上存在特权容器。
| 可能将节点/集群暴露于不需要的root
|_ 操作
|
| 集群健康披露:
| 类型:漏洞
| 主机:1.2.3.4:10255
| 描述:
| 通过访问开放的/healthz处理程序,
| 攻击者可以在不进行身份验证的情况下
|_ 获取集群健康状态
|
| 暴露的Pods:
| 类型:漏洞
| 主机:1.2.3.4:10255
| 描述:
| 攻击者可以查看有关绑定到节点的
| pods的敏感信息,使用
|_ /pods端点
----------
节点
+-------------+---------------+
| 类型 | 位置 |
+-------------+---------------+
| 节点/主节点 | 1.2.3.4 |
+-------------+---------------+
检测到的服务
+----------------------+---------------------+----------------------+
| 服务 | 位置 | 描述 |
+----------------------+---------------------+----------------------+
| Kubelet API | 1.2.3.4:10255 | kubelet上的只读端口 |
| (只读) | | 提供健康探测端点, |
| | | 并被许多Kubernetes |
| | | 组件依赖 |
+----------------------+---------------------+----------------------+
| Etcd | 1.2.3.4:2379 | Etcd是一个存储集群 |
| | | 数据的数据库,包含 |
| | | 配置和当前状态信息, |
| | | 并可能包含密钥 |
+----------------------+---------------------+----------------------+
| API服务器 | 1.2.3.4:6443 | API服务器负责集群 |
| | | 上的所有操作 |
+----------------------+---------------------+----------------------+
| API服务器 | 1.2.3.4:443 | API服务器负责集群 |
| | | 上的所有操作 |
+----------------------+---------------------+----------------------+
漏洞
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 位置 | 类别 | 漏洞 | 描述 | 证据 |
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 1.2.3.4:2379 | 未认证访问 | Etcd可通过不安全 | Etcd可通过HTTP(无需 | {"etcdserver":"2.3.8 |
| | | 连接(HTTP)访问 | 授权和认证)访问, | ","etcdcluster":"2.3 |
| | | | 这将允许潜在攻击者 | ... |
| | | | 获得对etcd的访问权限 | |
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 1.2.3.4:2379 | 信息泄露 | Etcd远程版本披露 | 远程版本披露可能为 | {"etcdserver":"2.3.8 |
| | | | 攻击者提供攻击集群 | ","etcdcluster":"2.3 |
| | | | 的宝贵数据 | ... |
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 1.2.3.4:10255 | 信息泄露 | K8s版本披露 | 可以从/metrics端点 | v1.5.6-rc17 |
| | | | 中的日志获取 | |
| | | | Kubernetes版本 | |
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 1.2.3.4:10255 | 信息泄露 | 暴露的Pods | 攻击者可以查看有关 | count: 68 |
| | | | 绑定到节点的pods的 | |
| | | | 敏感信息,使用 | |
| | | | /pods端点 | |
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 1.2.3.4:10255 | 信息泄露 | 集群健康披露 | 通过访问开放的 | status: ok |
| | | | /healthz处理程序, | |
| | | | 攻击者可以在不进行 | |
| | | | 身份验证的情况下获取 | |
| | | | 集群健康状态 | |
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 1.2.3.4:2379 | 访问风险 | Etcd远程读取访问事件 | 远程读取访问可能向 | {"action":"get","nod |
| | | | 攻击者暴露集群可能 | e":{"dir":true,"node |
| | | | 的漏洞、密钥等 | ... |
+---------------------+----------------------+----------------------+----------------------+----------------------+
| 1.2.3.4:10255 | 访问风险 | 特权容器 | 节点上存在特权容器。 | pod: node-exporter- |
| | | | 可能将节点/集群暴露 | 1fmd9-z9685, |
| | | | 于不需要的root操作 | containe... |
+---------------------+----------------------+----------------------+----------------------+----------------------+
|