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