红队视角出发的k8s敏感信息收集——Kubernetes API 扩展与未授权访问

针对 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"
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值