AWS - API Gateway Unauthenticated Enum
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:
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
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.
Last updated