AWS - API Gateway Neautentifikovana Enumeracija

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Zaobilaženje API poziva

Prema predavanju Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, Lambda Authorizers se mogu konfigurisati koristeći IAM sintaksu da bi se dodelile dozvole za pozivanje API krajnjih tačaka. Ovo je preuzeto iz dokumentacije:

json
{
"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 sa ovim načinom davanja dozvola za pozivanje krajnjih tačaka je to što "*" podrazumeva "bilo šta" i nema više podržane regex sintakse.

Neki primeri:

  • Pravilo kao što je arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/* kako bi se svakom korisniku omogućio pristup /dashboard/user/{username} će im omogućiti pristup i drugim rutama kao što je /admin/dashboard/createAdmin, na primer.

warning

Imajte na umu da "*" ne prestaje da se širi sa kosim crticama, stoga, ako koristite "*" u api-id, na primer, to može takođe značiti "bilo koja faza" ili "bilo koja metoda" sve dok je konačni regex još uvek validan.
Tako arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Može validirati post zahtev za test fazu na putanji /prod/GET/dashboard/admin, na primer.

Uvek treba jasno imati šta želite da dozvolite za pristup i zatim proveriti da li su drugi scenariji mogući sa dodeljenim dozvolama.

Za više informacija, osim docs, možete pronaći kod za implementaciju autorizatora u this official aws github.

IAM Policy Injection

U istoj talk izložena je činjenica da ako kod koristi korisnički unos za generisanje IAM politika, džokeri (i drugi kao što su "." ili specifične stringove) mogu biti uključeni sa ciljem obiđanja ograničenja.

Public URL template

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

Dobijanje ID-a naloga sa javnog API Gateway URL-a

Baš kao i kod S3 kanti, Data Exchange i Lambda URL-ova, moguće je pronaći ID naloga koristeći aws:ResourceAccount Policy Condition Key iz javnog API Gateway URL-a. To se radi pronalaženjem ID-a naloga jedan po jedan karakter koristeći džoker znakove u aws:ResourceAccount sekciji politike.
Ova tehnika takođe omogućava dobijanje vrednosti oznaka ako znate ključ oznake (ima nekoliko podrazumevanih zanimljivih).

Možete pronaći više informacija u originalnom istraživanju i alatu conditional-love za automatizaciju ove eksploatacije.

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks