AWS - Cognito Privesc
Cognito
Для отримання додаткової інформації про Cognito перегляньте:
AWS - 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, прикріплених до груп користувачів басейну.
(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 пула ідентичностей для автентифікованих користувачів. Непряме підвищення привілеїв до інших функцій додатку, здатних створювати будь-якого користувача.
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 Scanner - це інструмент командного рядка на Python, який реалізує різні атаки на Cognito, включаючи підвищення привілеїв.
Встановлення
Використання
Для отримання додаткової інформації перевірте https://github.com/padok-team/cognito-scanner
Last updated