AWS - API Gateway Unauthenticated Enum
API Invoke bypass
Zgodnie z prezentacją Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, Lambda Authorizers mogą być konfigurowane przy użyciu składni IAM w celu nadania uprawnień do wywoływania punktów końcowych API. To jest wzięte z dokumentacji:
Problem z tym sposobem nadawania uprawnień do wywoływania punktów końcowych polega na tym, że "*" oznacza "cokolwiek" i nie obsługuje więcej składni regex.
Kilka przykładów:
Reguła taka jak
arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
, aby dać każdemu użytkownikowi dostęp do/dashboard/user/{username}
, da im dostęp do innych tras, takich jak/admin/dashboard/createAdmin
, na przykład.
Zauważ, że "*" nie przestaje się rozwijać z ukośnikami, dlatego, jeśli użyjesz "*" w api-id, na przykład, może to również oznaczać "dowolny etap" lub "dowolną metodę", o ile końcowy regex jest nadal ważny.
Więc arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Może zwalidować żądanie POST do etapu testowego do ścieżki /prod/GET/dashboard/admin
, na przykład.
Zawsze powinieneś mieć jasno określone, co chcesz zezwolić na dostęp, a następnie sprawdzić, czy inne scenariusze są możliwe z przyznanymi 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 danych wejściowych użytkownika do generowania polityk IAM, dzikie znaki (i inne, takie jak "." lub konkretne ciągi) mogą być tam zawarte w celu obejścia ograniczeń.
Szablon publicznego URL
Uzyskaj identyfikator konta z publicznego adresu URL API Gateway
Podobnie jak w przypadku koszyków S3, Data Exchange i adresów URL bramek Lambda, możliwe jest znalezienie identyfikatora konta, wykorzystując aws:ResourceAccount
Policy Condition Key z publicznego adresu URL API Gateway. Robi się to, znajdując identyfikator konta jeden znak na raz, wykorzystując znaki wieloznaczne w sekcji aws:ResourceAccount
polityki.
Ta technika pozwala również uzyskać wartości tagów, jeśli znasz klucz tagu (jest kilka domyślnych, interesujących).
Możesz znaleźć więcej informacji w oryginalnych badaniach oraz w narzędziu conditional-love, aby zautomatyzować tę eksploitację.
Last updated