AWS - API Gateway Unauthenticated Enum
Last updated
Last updated
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Secondo il talk Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, i Lambda Authorizers possono essere configurati utilizzando la sintassi IAM per dare permessi di invocare gli endpoint API. Questo è preso dalla documentazione:
Il problema con questo modo di dare permessi per invocare gli endpoint è che il "*" implica "qualsiasi" e non c'è più sintassi regex supportata.
Alcuni esempi:
Una regola come arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
per dare a ciascun utente accesso a /dashboard/user/{username}
darà loro accesso ad altri percorsi come /admin/dashboard/createAdmin
, per esempio.
Nota che "*" non smette di espandersi con le barre; quindi, se usi "*" in api-id, per esempio, potrebbe anche indicare "qualsiasi fase" o "qualsiasi metodo" purché la regex finale sia ancora valida.
Quindi arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Può convalidare una richiesta post per testare la fase al percorso /prod/GET/dashboard/admin
, per esempio.
Dovresti sempre avere chiaro cosa vuoi permettere di accedere e poi controllare se altri scenari sono possibili con i permessi concessi.
Per ulteriori informazioni, oltre alla docs, puoi trovare codice per implementare autorizzatori in questo github ufficiale aws.
Nella stessa talk è esposto il fatto che se il codice utilizza input dell'utente per generare le politiche IAM, i caratteri jolly (e altri come "." o stringhe specifiche) possono essere inclusi con l'obiettivo di bypassare le restrizioni.
Proprio come con i bucket S3, i gateway Data Exchange e Lambda URLs, è possibile trovare l'ID dell'account di un account abusando della aws:ResourceAccount
Policy Condition Key da un URL pubblico dell'API Gateway. Questo viene fatto trovando l'ID dell'account un carattere alla volta abusando dei caratteri jolly nella sezione aws:ResourceAccount
della policy.
Questa tecnica consente anche di ottenere valori di tag se conosci la chiave del tag (ce ne sono alcune di default interessanti).
Puoi trovare ulteriori informazioni nella ricerca originale e nello strumento conditional-love per automatizzare questa sfruttamento.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)