AWS - IAM & STS Unauthenticated Enum
Перерахування ролей та імен користувачів в обліковому записі
Перебір ролей
Ця техніка більше не працює, оскільки незалежно від того, чи існує роль, ви завжди отримуєте цю помилку:
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas
Ви можете перевірити це, запустивши:
aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example
Спроба припустити роль без необхідних дозволів спричиняє повідомлення про помилку AWS. Наприклад, якщо не авторизовано, AWS може повернути:
Це повідомлення підтверджує існування ролі, але вказує, що політика assume role не дозволяє ваше припущення. Навпаки, спроба припустити неіснуючу роль призводить до іншої помилки:
Цей метод розрізнення між існуючими та неіснуючими ролями застосовний навіть для різних облікових записів AWS. За допомогою дійсного ідентифікатора облікового запису AWS та цільового словника можна перелічити ролі, присутні в обліковому записі, не зіткнувшись з жодними вбудованими обмеженнями.
Ви можете використовувати цей скрипт для переліку потенційних суб'єктів, використовуючи цю проблему.
Політика довіри: перебір ролей та користувачів між обліковими записами
Налаштування або оновлення політики довіри IAM-ролі передбачає визначення, які ресурси або служби AWS мають право припускати цю роль та отримувати тимчасові облікові дані. Якщо вказаний ресурс у політиці існує, політика довіри зберігається успішно. Однак, якщо ресурс не існує, генерується помилка, що вказує на те, що було надано недійсного суб'єкта.
Зверніть увагу, що в цьому ресурсі можна вказати роль або користувача між обліковими записами:
arn:aws:iam::acc_id:role/role_name
arn:aws:iam::acc_id:user/user_name
Ось приклад політики:
GUI
Це помилка, яку ви знайдете, якщо використовуєте роль, якої не існує. Якщо роль існує, політика буде збережена без будь-яких помилок. (Помилка виникає при оновленні, але також працює при створенні)
CLI
Ви можете автоматизувати цей процес за допомогою https://github.com/carlospolop/aws_tools
bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt
Наш використання Pacu:
run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
Роль
admin
, використана в прикладі, є роллю у вашому обліковому записі, яку можна імітувати за допомогою pacu для створення необхідних політик для переліку
Підвищення привілеїв
У випадку, якщо роль погано налаштована і дозволяє будь-кому її припускати:
Атакувальник може просто припустити це.
Федерація OIDC стороннього постачальника
Уявіть, що вам вдалося прочитати робочий процес Github Actions, який отримує доступ до ролі всередині AWS. Це довіра може надати доступ до ролі з наступною політикою довіри:
Ця політика довіри може бути правильною, але відсутність додаткових умов повинна викликати у вас недовіру. Це тому, що попередню роль може припустити БУДЬ-ХТО з Github Actions! Вам слід також вказати в умовах інші речі, такі як назва організації, назва репозиторію, середовище, гілка...
Ще одна потенційна помилкова конфігурація - додати умову наступного виду:
Зверніть увагу на джокер (*) перед двокрапкою (:). Ви можете створити організацію, таку як org_name1, і припустити роль з Github Action.
Посилання
Last updated