Содержание статьи
Сначала рассмотрим «базу» — перечисление и повышение привилегий в IAM и EC2. В дальнейшем мы научимся закрепляться в этих сервисах, окунемся в волшебство Lambda и SecretManager, найдем пароль в S3, выберемся из контейнера, вытащим данные из EBS, RDS и даже пробросимся в другой VPC!
Теория
Amazon Web Services — облачное решение, предоставляющее своим клиентам множество полезных сервисов. Их можно разделить на три типа.
- IAS (infrastructure as a service) — к этой категории относится только сервис Virtual Private Cloud, который дает возможность пользователю создавать приватные изолированные сети прямо в облаке.
- PAS (platform as a service) позволяет арендовать один виртуальный сервер (инстанс).
- SAS (software as a service) — предоставление ПО и услуг.
Сервисы
Identity and access management (IAM) — один из основополагающих сервисов облачной инфраструктуры Amazon. Он позволяет управлять доступом к ресурсам AWS. Администрируют пользователей, группы, роли и их доступ именно здесь. Структура этого сервиса показана на следующей иллюстрации.
Политика
Политика содержит информацию о том, что может делать пользователь, а что нет, какие у него имеются права. Политику можно применять к группам, пользователям или ролям. Например, если политика разрешает действие GetUser
, то пользователь с такой политикой может получить информацию о других пользователях.
Внутри политики — три важных компонента:
- Effect — используется для предоставления доступа или отказа в нем.
- Action — включает список действий, которые политика разрешает или запрещает.
- Resource — список ресурсов, к которым применяется политика.
Пользователь
Пользователь IAM — сущность, которая создается в AWS для представления использующего его человека либо приложения. У пользователей есть так называемое User ARN (Amazon resource name), выглядит оно следующим образом:
arn:partition:service:region:account:resource
где
-
arn
— идентификатор строки; -
partition
идентифицирует раздел для ресурса. Для стандартных регионов AWS используется разделaws
. Для Пекина, допустим, будетaws-cn
; -
service
идентифицирует продукт AWS. Ресурсы IAM всегда используютiam
; -
region
определяет регион ресурса. Для ресурсов IAM это поле всегда остается пустым; -
account
указывает идентификатор учетной записи AWS без дефисов; -
resource
идентифицирует конкретный ресурс по имени.
Вот некоторые примеры ARN:
arn:aws:iam::123456789012:root
arn:aws:iam::123456789012:user/JohnDoe
arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe
arn:aws:iam::123456789012:group/Developers
arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers
arn:aws:iam::123456789012:role/S3Access
Группа
Группа IAM — это совокупность пользователей. Группы облегчают управление ими. Группа может содержать множество пользователей, а пользователь может принадлежать к нескольким группам. Кроме того, группы не могут быть вложенными: они должны содержать только пользователей, но не другие группы.
Роль
Роль IAM — это сущность, которая определяет набор разрешений для выполнения запросов к сервисам AWS. Использование ролей — безопасный способ предоставить разрешения определенным объектам. Так, пентестер может попробовать взять на себя определенную роль, если у него есть на это права, и получить привилегии этой роли.
Роли создаются для того, чтобы не пришлось регистрировать дополнительную учетную запись ради каких‑нибудь автоматических задач. Роль зачастую привязывается к какому‑либо сервису.
EC2
Он же Elastic Compute Cloud. Это виртуальный сервер (инстанс), на котором пользователь может запускать любые приложения, чтобы решать собственные задачи. Инстанс состоит из следующих компонентов.
Рассмотрим все эти составляющие по порядку.
- Операционная система — на EC2 можно установить практически любую ОС.
- Доступ — способы, с помощью которых можно получить доступ к EC2 через интернет.
- Адрес — IP-адрес, по которому откликается инстанс.
- Хранилище — место, где хранятся данные инстанса.
- Группы безопасности — набор правил, которые применяются к EC2, они позволяют контролировать входящий и исходящий трафик.
- VPC (virtual private cloud) — изолированная облачная сеть, в которой может находиться наш инстанс.
Initial Access
Есть множество способов проникнуть в облако заказчика пентеста. Мы будем действовать через AWS CLI — командную строку для работы с AWS. Нам потребуются специальный идентификатор секретного ключа и сам секретный ключ, после предоставления которых мы получим возможность работать с облаком. В качестве точки входа будем использовать IAM и EC2.
Сбор информации
На компьютерах, взаимодействующих с облачными сервисами Amazon, обычно присутствует файл credentials
, в котором находится идентификатор секретного ключа доступа и сам этот ключ. Стандартные пути расположения файла следующие. В Linux:
/root/.aws/credentials
/home/user/.aws/credentials
В Windows:
%userprofile%\.aws\credentials
Идентификатор секретного ключа и сам секретный ключ можно обнаружить в публичных репозиториях.
Очень часто нужные нам ключи могут лежать в переменных окружения. Обязательно проверяй и их:
setdir env:
Get-ChildItem Env: | ft Key,Value
Возможно, у тебя не получится обнаружить столь чувствительные данные такими простыми методами. Перед тестированием ты, скорее всего, успел обнаружить принадлежащие заказчику поддомены, репозитории, файлы. В таком случае попробуй поискать во всех этих источниках следующие характерные строки:
aws_access_key_id
aws_secret_access_key
aws_session_token
bucket_name
aws_access_key
aws_secret_key
S3_BUCKET
S3_ACCESS_KEY_ID
S3_SECRET_ACCESS_KEY
S3_SECRET_KEY
S3_ENDPOINT
list_aws_accounts
metadata_service_timeout
metadata_service_num_attempts
Подключение
После того как ты нашел идентификатор и сам секретный ключ, настало время подключаться к AWS CLI. Для этого используем PowerShell:
aws configure
Чтобы узнать, под какой учетной записью ты подключился к системе, в Linux используется команда whoami
, но в AWS такой команды нет. Чтобы узнать свое имя пользователя, нужно ввести в консоль PowerShell следующую команду:
aws sts get-caller-identity# Дополнительно можно указать конфигурационный профиль (если, допустим, получили данные не от профиля default)aws sts get-caller-identity --profile demo
Enumeration
В начале любого тестирования на проникновение следует хорошенько осмотреться и понять, насколько большое облако предстоит пропентестить. Сначала столь скрупулезная разведка может показаться бесполезной, но, переходя к следующим этапам, мы уже будем располагать достаточным объемом информации. В начале каждого раздела я указал, для чего нам потребуются те или иные данные.
Не переживай, механизм работы с политиками и ролями будет поначалу не совсем ясен. Постарайся удержать в голове команды. Когда дойдем до этапа повышения привилегий, все встанет на свои места само собой.
IAM
Пользователи
Пользователи — самая популярная точка входа в облако AWS. Именно пользовательскую учетную запись можно обнаружить в файле .
, а также в публичных репозиториях.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»