AWS - API Gateway Unauthenticated Enum
API Invoke bypass
Secondo la conferenza Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, i Lambda Authorizers possono essere configurati usando la sintassi IAM per concedere permessi di invocare endpoint API. Questo è preso dalla documentazione:
Il problema con questo modo di dare permessi per invocare endpoint è che il "*" implica "qualsiasi cosa" e non c'è nessuna sintassi regex supportata.
Alcuni esempi:
Una regola come
arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/*
per dare a ogni utente accesso a/dashboard/user/{username}
darà loro accesso ad altre rotte 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 stage" o "qualsiasi metodo" finché il regex finale è ancora valido.
Quindi arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Può validare una richiesta post a test stage al percorso /prod/GET/dashboard/admin
per esempio.
Dovresti sempre avere chiaro cosa vuoi permettere di accedere e poi verificare se altri scenari sono possibili con i permessi concessi.
Per maggiori informazioni, oltre ai docs, puoi trovare codice per implementare authorizers in questo github ufficiale aws.
IAM Policy Injection
Nella stessa talk è esposto il fatto che se il codice sta usando input utente per generare le IAM policies, i caratteri jolly (e altri come "." o stringhe specifiche) possono essere inclusi lì con l'obiettivo di bypassare le restrizioni.
Public URL template
Ottenere l'ID dell'account dall'URL pubblico di API Gateway
Proprio come con i bucket S3, Data Exchange e gli URL di Lambda, è possibile trovare l'ID dell'account abusando del aws:ResourceAccount
Policy Condition Key da un URL pubblico di 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 dei tag se si conosce la chiave del tag (ce ne sono alcuni predefiniti interessanti).
Puoi trovare maggiori informazioni nella ricerca originale e lo strumento conditional-love per automatizzare questa exploitazione.
Last updated