AWS - API Gateway Unauthenticated Enum

Wspieraj HackTricks

API Invoke bypass

Według prezentacji Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, Lambda Authorizers mogą być skonfigurowane używając składni IAM do nadawania uprawnień do wywoływania punktów końcowych API. To jest 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 więcej obsługiwanej 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 również dostęp do innych tras, takich jak /admin/dashboard/createAdmin na przykład.

Należy zauważyć, że "*" nie przestaje się rozszerzać 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 zweryfikować żądanie post do etapu testowego na ścieżkę /prod/GET/dashboard/admin na przykład.

Zawsze powinieneś mieć jasność, co chcesz umożliwić do dostępu, a następnie sprawdzić, czy inne scenariusze są możliwe z nadanymi uprawnieniami.

Więcej informacji, oprócz dokumentacji, można znaleźć w kodzie do implementacji autoryzatorów w tym oficjalnym github aws.

Wstrzykiwanie Polityki IAM

W tej samej prezentacji jest przedstawiony fakt, że jeśli kod używa danych wejściowych użytkownika do generowania polityk IAM, mogą być tam zawarte wildcardy (i inne, takie jak "." lub specyficzne ciągi znaków) w celu obejścia ograniczeń.

Publiczny szablon URL

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

Get Account ID from public API Gateway URL

Podobnie jak w przypadku S3 buckets, Data Exchange i Lambda URLs gateways, możliwe jest znalezienie ID konta, wykorzystując aws:ResourceAccount Policy Condition Key z publicznego API Gateway URL. Odbywa się to poprzez znajdowanie ID konta znak po znaku, wykorzystując wildcardy w sekcji aws:ResourceAccount polityki. Ta technika pozwala również uzyskać wartości tagów, jeśli znasz klucz tagu (istnieją pewne domyślne interesujące).

Więcej informacji znajdziesz w oryginalnym badaniu oraz narzędziu conditional-love do automatyzacji tej eksploatacji.

Wspieraj HackTricks

Last updated