AWS - API Gateway Unauthenticated Enum

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Обхід виклику API

Згідно з виступом Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, авторизатори Lambda можуть бути налаштовані за допомогою синтаксису IAM для надання дозволів на виклик кінцевих точок API. Це взято з документації:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Permission",
"Action": [
"execute-api:Execution-operation"
],
"Resource": [
"arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path"
]
}
]
}

Проблема цього способу надання дозволу на виклик ендпоінтів полягає в тому, що "*" позначає "будь-що", і більше не підтримується синтаксис регулярних виразів.

Деякі приклади:

  • Правило, таке як 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

https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}

Отримання ідентифікатора облікового запису з публічного URL шлюзу API

Так само, як і з відрахуванням S3, обміном даними та URL-адресами шлюзів Lambda, можна знайти ідентифікатор облікового запису облікового запису, зловживаючи aws:ResourceAccount Умовним ключем політики з публічного URL шлюзу API. Це робиться шляхом знаходження ідентифікатора облікового запису по одному символу, зловживаючи шаблонами в розділі aws:ResourceAccount політики. Ця техніка також дозволяє отримувати значення тегів, якщо ви знаєте ключ тегу (є деякі типові цікаві).

Ви можете знайти більше інформації в оригінальному дослідженні та у програмі conditional-love для автоматизації цього використання.

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Last updated