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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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:
{
"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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.