AWS - API Gateway Unauthenticated Enum

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Ominięcie wywołania API

Zgodnie z prezentacją Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, Autoryzatory Lambda można skonfigurować za pomocą składni IAM w celu udzielenia uprawnień do wywoływania punktów końcowych interfejsu API. To zostało zaczerpnięte z dokumentacji:

{
"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"
]
}
]
}

Problem z tym sposobem nadawania uprawnień do wywoływania punktów końcowych polega na tym, że "*" oznacza "cokolwiek" i nie ma już obsługi składni regex.

Przykłady:

  • Reguła taka jak arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/* w celu umożliwienia każdemu użytkownikowi dostępu do /dashboard/user/{username} umożliwi im dostęp do innych tras, takich jak /admin/dashboard/createAdmin na przykład.

Zauważ, że "*" nie zatrzymuje się na ukośnikach, dlatego jeśli użyjesz "*" w api-id na przykład, może on również wskazywać "dowolny etap" lub "dowolną metodę", o ile końcowe wyrażenie regularne jest wciąż poprawne. Więc arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/* Może zatwierdzić żądanie POST do etapu testowego na ścieżkę /prod/GET/dashboard/admin na przykład.

Zawsze powinieneś jasno określić, do czego chcesz zezwolić na dostęp, a następnie sprawdzić, czy inne scenariusze są możliwe z udzielonymi uprawnieniami.

Aby uzyskać więcej informacji, oprócz dokumentacji, możesz znaleźć kod do implementacji autoryzatorów w tym oficjalnym githubie aws.

Wstrzykiwanie polityki IAM

W tej samej prezentacji ujawniono fakt, że jeśli kod używa wejścia użytkownika do generowania polityk IAM, symbole wieloznaczne (i inne, takie jak "." lub konkretne ciągi znaków) mogą być włączone w celu ominięcia ograniczeń.

Szablon publicznego adresu URL

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

Uzyskaj identyfikator konta z publicznego adresu URL bramy API

Podobnie jak w przypadku kubełków S3, wymiany danych i adresów URL funkcji Lambda, możliwe jest znalezienie identyfikatora konta nadużywając aws:ResourceAccount Klucza Warunku Polityki z publicznego adresu URL bramy API. Można to zrobić, znajdując identyfikator konta po jednym znaku, nadużywając symboli wieloznacznych w sekcji aws:ResourceAccount polityki. Ta technika pozwala również uzyskać wartości tagów, jeśli znasz klucz tagu (istnieje kilka domyślnie interesujących).

Więcej informacji można znaleźć w oryginalnym badaniu oraz narzędziu conditional-love do zautomatyzowania tego wykorzystania.

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated