针对 Kubernetes 第三方组件与 Operator 的详细攻击视角分析,涵盖 Service Mesh、Helm Releases 和 Database Operators 的潜在风险及利用方法。
攻击链示例
1. 攻击者通过未授权的 Tiller 服务部署恶意 Helm Chart →
2. 创建后门 Pod 并横向移动至 Istio 控制平面 →
3. 提取 Envoy 配置发现未加密的数据库服务 →
4. 通过 MySQL Operator 创建管理员账户导出数据。
Service Mesh(如 Istio、Linkerd)攻击场景
目标:通过 Service Mesh 的配置漏洞(如未加密通信、宽松路由规则),窃取流量或劫持服务间通信。
提取 Envoy Sidecar 配置
访问 Envoy 管理接口
在Istio服务网格中,Envoy作为sidecar代理被注入到每个Pod中,用于处理进出该Pod的所有网络流量。Envoy提供了管理接口,默认情况下,这些接口在15000端口(用于配置转储和其他调试信息)和15020端口(用于健康检查、统计信息等)上可用。这些接口对于调试和监控非常有用,但同时也需要谨慎对待,以避免敏感信息泄露给未授权的用户。
要在已控制的Pod中查询Envoy配置,可以使用以下命令:
curl http://localhost:15000/config_dump > envoy_config.json
此命令会从运行在本地(即同一Pod内)的Envoy实例获取其完整配置,并将其保存到envoy_config.json文件中。这对于了解Envoy如何路由请求、查看过滤器链或进行故障排查特别有用。
如果需要访问其他Pod中的Envoy配置(假设网络策略允许这样做),可以使用如下命令直接指定目标Pod的IP地址:
curl http://xx.xx.xx.xx:15000/config_dump
这里的xx.xx.xx.xx应替换为目标Pod的实际内部IP地址。
分析路由规则与 mTLS 配置
通过分析Envoy的配置文件(例如从/config_dump端点获取的envoy_config.json),可以检查关键的安全设置,包括是否启用了mTLS以及路由规则的严格程度。以下是具体步骤和示例:
在Envoy配置中查找 “tls_mode” 字段可以帮助你判断通信是否被加密。如果该字段值为 “DISABLE”,则表示通信未加密,即mTLS未启用。
{
// ... 其他配置 ...
"tls_context": {
"common_tls_context": {
// ... TLS 相关配置 ...
},
"tls_mode": "DISABLE" // 表示通信未加密
}
// ... 其他配置 ...
}
“tls_mode”: “DISABLE” 明确指出当前Envoy实例的连接并未使用TLS加密,这意味着数据传输是明文的,容易受到窃听或篡改攻击。
另一个重要的方面是检查Istio的路由规则是否过于宽松,比如允许所有流量通过通配符*。以下是一个可能表明存在宽松路由规则的例子:
{
"route_config": {
"name": "http.80",
"virtual_hosts": [
{
"name": "backend",
"domains": ["*"], // 允许来自任何域名的请求
"routes": [
{
"match": {
"prefix": "/" // 匹配所有路径
},
"route"

最低0.47元/天 解锁文章
957

被折叠的 条评论
为什么被折叠?



