AWS - API Gateway Unauthenticated Enum
Обхід виклику API
Згідно з виступом Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, авторизатори Lambda можуть бути налаштовані за допомогою синтаксису IAM для надання дозволів на виклик кінцевих точок API. Це взято з документації:
Проблема цього способу надання дозволу на виклик ендпоінтів полягає в тому, що "*" позначає "будь-що", і більше не підтримується синтаксис регулярних виразів.
Деякі приклади:
Правило, таке як
arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
для надання кожному користувачеві доступу до/dashboard/user/{username}
дозволить їм отримати доступ до інших шляхів, таких як/admin/dashboard/createAdmin
, наприклад.
Зверніть увагу, що "*" не зупиняється на розширенні з косою рисою, тому, якщо ви використовуєте "*" у api-id, наприклад, він також може вказувати "будь-який етап" або "будь-який метод", поки остаточний регулярний вираз все ще є дійсним.
Таким чином, arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Може підтвердити запит на відправлення на тестовий етап до шляху /prod/GET/dashboard/admin
, наприклад.
Ви завжди повинні чітко розуміти, що ви хочете дозволити доступ, а потім перевірити, чи можливі інші сценарії з наданими дозволами.
Для отримання додаткової інформації, крім документації, ви можете знайти код для реалізації авторизаторів у цьому офіційному репозиторії aws на github.
Впровадження політики IAM
У тому ж виступі вказано, що якщо код використовує введення користувача для генерації політик IAM, символи-джокери (і інші, такі як "." або конкретні рядки) можуть бути включені туди з метою обхід обмежень.
Шаблон публічного URL
Отримання ідентифікатора облікового запису з публічного URL шлюзу API
Так само, як і з відрахуванням S3, обміном даними та URL-адресами шлюзів Lambda, можна знайти ідентифікатор облікового запису облікового запису, зловживаючи aws:ResourceAccount
Умовним ключем політики з публічного URL шлюзу API. Це робиться шляхом знаходження ідентифікатора облікового запису по одному символу, зловживаючи шаблонами в розділі aws:ResourceAccount
політики.
Ця техніка також дозволяє отримувати значення тегів, якщо ви знаєте ключ тегу (є деякі типові цікаві).
Ви можете знайти більше інформації в оригінальному дослідженні та у програмі conditional-love для автоматизації цього використання.
Last updated