AWS - Cognito Privesc
Cognito
Для отримання додаткової інформації про Cognito перегляньте:
pageAWS - Cognito EnumЗбір облікових даних з пулу ідентифікаторів
Оскільки Cognito може надавати облікові дані ролі IAM як аутентифікованим, так і неаутентифікованим користувачам, якщо ви знаходите ідентифікатор пулу додатка (його має бути захардкоджено в ньому), ви можете отримати нові облікові дані і, отже, підвищити привілеї (в межах облікового запису AWS, де ви, ймовірно, навіть не мали жодних облікових даних раніше).
Для отримання додаткової інформації перегляньте цю сторінку.
Потенційний вплив: Пряме підвищення привілеїв до ролі служб, прикріпленої до неаутентифікованих користувачів (і, ймовірно, до тієї, яка прикріплена до аутентифікованих користувачів).
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
cognito-identity:SetIdentityPoolRoles
, iam:PassRole
З цим дозволом ви можете надавати будь-яку роль Cognito аутентифікованим/неаутентифікованим користувачам додатка Cognito.
Якщо додаток Cognito не має ввімкнених неавтентифікованих користувачів, вам може знадобитися також дозвіл cognito-identity:UpdateIdentityPool
, щоб ввімкнути його.
Потенційний вплив: Прямий підйом привілеїв до будь-якої ролі Cognito.
cognito-identity:update-identity-pool
cognito-identity:update-identity-pool
Зловмисник з цим дозволом може, наприклад, встановити Cognito User Pool під своїм контролем або будь-який інший постачальник ідентичності, де він може увійти як спосіб доступу до цього пулу ідентичності Cognito. Потім, просто увійшовши на той постачальник користувачів, він зможе отримати доступ до налаштованої аутентифікованої ролі в пулі ідентичності.
Також можливо зловживати цим дозволом, щоб дозволити базову автентифікацію:
Потенційний вплив: Компрометація налаштованої перевіреної IAM-ролі всередині пула ідентифікації.
cognito-idp:AdminAddUserToGroup
cognito-idp:AdminAddUserToGroup
Ця дозвіл дозволяє додавати користувача Cognito до групи Cognito, тому зловмисник може використовувати цей дозвіл, щоб додати користувача під своїм контролем до інших груп з кращими привілеями або різними IAM-ролями:
Потенційний вплив: Підвищення привілеїв до інших груп Cognito та ролей IAM, прикріплених до груп користувачів User Pool.
(cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
cognito-idp:CreateGroup
| cognito-idp:UpdateGroup
), iam:PassRole
Зловмисник з цими дозволами може створювати/оновлювати групи з кожною роллю IAM, яку можна використовувати компрометованим постачальником ідентичності Cognito та робити компрометованого користувача частиною групи, отримуючи доступ до всіх цих ролей:
Потенційний вплив: Підвищення привілеїв до інших ролей IAM Cognito.
cognito-idp:AdminConfirmSignUp
cognito-idp:AdminConfirmSignUp
Ця дозвіл дозволяє підтверджувати реєстрацію. За замовчуванням будь-хто може увійти до додатків Cognito, якщо це залишено, користувач може створити обліковий запис з будь-якими даними та підтвердити його за допомогою цього дозволу.
Потенційний вплив: Непряме підвищення привілеїв до ролі IAM басейну ідентичності для автентифікованих користувачів, якщо ви можете зареєструвати нового користувача. Непряме підвищення привілеїв до інших функцій додатку, можливість підтвердження будь-якого облікового запису.
cognito-idp:AdminCreateUser
cognito-idp:AdminCreateUser
Ця дозвіл дозволить атакуючому створити нового користувача всередині басейну користувачів. Новий користувач створюється як увімкнений, але йому потрібно буде змінити свій пароль.
Потенційний вплив: Пряме підвищення привілеїв до ролі IAM басейну ідентичності для автентифікованих користувачів. Непряме підвищення привілеїв до інших функцій додатку, здатних створювати будь-якого користувача
cognito-idp:AdminEnableUser
cognito-idp:AdminEnableUser
Ці дозволи можуть допомогти в дуже рідкісному випадку, коли зловмисник знайшов облікові дані вимкненого користувача і йому потрібно знову ввімкнути його.
Потенційний вплив: Непряме підвищення привілеїв до ролі IAM пула ідентифікації для автентифікованих користувачів та дозволів користувача, якщо зловмисник має облікові дані для вимкненого користувача.
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
cognito-idp:AdminInitiateAuth
, cognito-idp:AdminRespondToAuthChallenge
Ця дозвіл дозволяє увійти за допомогою методу ADMIN_USER_PASSWORD_AUTH. Для отримання додаткової інформації перейдіть за посиланням.
cognito-idp:AdminSetUserPassword
cognito-idp:AdminSetUserPassword
Цей дозвіл дозволить зловмиснику змінити пароль будь-якого користувача, що дозволить йому уособлювати будь-якого користувача (якщо у нього немає увімкненого MFA).
Потенційний вплив: Пряме підвищення привілеїв до можливо будь-якого користувача, тобто доступ до всіх груп, до яких належить кожен користувач, та доступ до ролі IAM, яка була аутентифікована в басейні ідентичності.
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
cognito-idp:AdminSetUserSettings
| cognito-idp:SetUserMFAPreference
| cognito-idp:SetUserPoolMfaConfig
| cognito-idp:UpdateUserPool
AdminSetUserSettings: Зловмисник може потенційно використовувати це дозвіл для встановлення мобільного телефону під своїм керуванням як SMS MFA користувача.
SetUserMFAPreference: Подібно до попередньої ця дозвіл може бути використаний для встановлення уподобань MFA користувача для обхідної захисту MFA.
SetUserPoolMfaConfig: Подібно до попередньої ця дозвіл може бути використаний для встановлення налаштувань MFA для пулу користувачів для обхіду захисту MFA.
Оновлення пулу користувачів: Також можливо оновити пул користувачів, щоб змінити політику багатофакторної автентифікації. Перевірте cli тут.
Потенційний вплив: Непряме підвищення привілеїв для потенційно будь-якого користувача, у якого зловмисник знає облікові дані, це може дозволити обійти захист багатофакторної автентифікації.
cognito-idp:AdminUpdateUserAttributes
cognito-idp:AdminUpdateUserAttributes
Зловмисник з цим дозволом може змінити електронну адресу або номер телефону або будь-який інший атрибут користувача під своїм контролем, щоб спробувати отримати більше привілеїв у базовій програмі. Це дозволяє змінювати електронну адресу або номер телефону та встановлювати їх як підтверджені.
Потенційний вплив: Потенційний опосередкований підвищення привілеїв в базовій програмі за допомогою Cognito User Pool, яка надає привілеї на основі атрибутів користувача.
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
cognito-idp:CreateUserPoolClient
| cognito-idp:UpdateUserPoolClient
Зловмисник з цим дозволом може створити нового клієнта пулу користувачів менш обмеженого, ніж вже існуючі клієнти пулу. Наприклад, новий клієнт може дозволяти будь-який метод аутентифікації, не мати жодного секрету, мати вимкнену відкликання токенів, дозволяти токенам бути дійсними протягом тривалішого періоду...
Те ж саме може бути зроблено, якщо замість створення нового клієнта, змінюється існуючий.
У командному рядку (або в оновленні) ви можете побачити всі параметри, перевірте це!.
Потенційний вплив: Потенційний опосередкований підвищення привілеїв до користувача, авторизованого в Ідентифікаційному пулі, який використовується Користувацьким пулом, створивши нового клієнта, який послаблює заходи безпеки і дозволяє зловмиснику увійти як користувач, якого він зміг створити.
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
cognito-idp:CreateUserImportJob
| cognito-idp:StartUserImportJob
Зловмисник може скористатися цим дозволом для створення користувачів, завантаживши csv-файл з новими користувачами.
(У випадку створення нової роботи з імпорту вам може знадобитися дозвіл iam passrole, я ще не тестував це).
Потенційний вплив: Прямий підвищення привілеїв до ролі IAM для пулу ідентифікації для автентифікованих користувачів. Непряме підвищення привілеїв до інших функцій додатку, здатних створювати будь-якого користувача.
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
cognito-idp:CreateIdentityProvider
| cognito-idp:UpdateIdentityProvider
Атакувальник може створити нового постачальника ідентифікації, щоб потім мати можливість увійти через цього постачальника.
Потенційний вплив: Пряме підвищення привілеїв до ролі IAM пула ідентифікації для автентифікованих користувачів. Непряме підвищення привілеїв до інших функцій додатку, дозволяючи створювати будь-якого користувача.
Аналіз cognito-sync:*
Це дуже поширене дозвіл за замовчуванням в ролях пулів ідентифікації Cognito. Навіть якщо дозвіл зі зірочкою в завжди виглядає погано (особливо від AWS), надані дозволи не є дуже корисними з точки зору атакуючого.
Цей дозвіл дозволяє читати інформацію про користувачів пулів ідентифікації та ідентифікатори ідентичності всередині пулів ідентифікації (що не є чутливою інформацією). Ідентифікатори ідентичності можуть мати Набори даних, призначені для них, які є інформацією про сесії (AWS визначає це як збережену гру). Можливо, що вони містять якусь чутливу інформацію (але ймовірність цього досить низька). Ви можете знайти на сторінці переліку як отримати доступ до цієї інформації.
Атакуючий також може використовувати ці дозволи для запису себе до потоку Cognito, який публікує зміни в цих наборах даних або лямбди, яка спрацьовує на події Cognito. Я не бачив, щоб це використовувалося, і не очікував би тут чутливої інформації, але це не є неможливим.
Автоматичні Інструменти
Pacu, фреймворк експлуатації AWS, тепер включає модулі "cognito__enum" та "cognito__attack", які автоматизують перелік всіх активів Cognito в обліковому записі та позначають слабкі конфігурації, атрибути користувачів, використовані для контролю доступу тощо, а також автоматизують створення користувачів (включаючи підтримку MFA) та підвищення привілеїв на основі змінюваних користувацьких атрибутів, використовуваних облікових даних пулу ідентичності, ролей, які можна припустити в ідентифікаційних токенах тощо.
Для опису функцій модулів див. частину 2 посту в блозі. Інструкції щодо установки див. на головній сторінці Pacu.
Використання
Приклад використання атаки cognito__attack для спроби створення користувача та всіх векторів підвищення привілеїв проти заданого пула ідентичності та клієнта пула користувачів:
Приклад використання cognito__enum для збору всіх пулів користувачів, клієнтів пулів користувачів, пулів ідентичності, користувачів тощо, які видно в поточному обліковому записі AWS:
Cognito Scanner - це інструмент командного рядка на python, який реалізує різні атаки на Cognito, включаючи підвищення привілеїв.
Установка
Використання
Для отримання додаткової інформації перевірте https://github.com/padok-team/cognito-scanner
Last updated