AWS - API Gateway Unauthenticated Enum

Impara l'hacking AWS da zero a esperto con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Bypass di Invoke API

Secondo la presentazione Vettori di attacco per le API utilizzando gli Autorizzatori Lambda di AWS API Gateway - Alexandre & Leonardo, gli Autorizzatori Lambda possono essere configurati utilizzando la sintassi IAM per concedere autorizzazioni per invocare i punti finali delle API. Questo è preso dalla documentazione:

{
"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"
]
}
]
}

Il problema di questo modo di concedere autorizzazioni per invocare i punti di accesso è che il "*" implica "qualsiasi cosa" e non è più supportata la sintassi regex.

Alcuni esempi:

  • Una regola come arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/* per dare a ciascun utente l'accesso a /dashboard/user/{username} darà loro accesso ad altre route come /admin/dashboard/createAdmin, ad esempio.

Nota che il "*" non si ferma ad espandersi con le barre, quindi, se si utilizza "*" ad esempio in api-id, potrebbe anche indicare "qualsiasi stage" 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 allo stage di test al percorso /prod/GET/dashboard/admin, ad esempio.

Dovresti sempre avere chiaro ciò a cui desideri consentire l'accesso e quindi verificare se sono possibili altri scenari con le autorizzazioni concesse.

Per ulteriori informazioni, oltre alla documentazione, puoi trovare del codice per implementare autorizzatori in questo repository ufficiale aws su GitHub.

Iniezione di Policy IAM

Nella stessa presentazione viene esposto il fatto che se il codice utilizza input utente per generare le policy IAM, i caratteri jolly (e altri come "." o stringhe specifiche) possono essere inclusi al fine di eludere le restrizioni.

Modello di URL pubblico

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

Ottenere l'ID dell'account da un URL pubblico dell'API Gateway

Proprio come con i bucket S3, Data Exchange e gli URL dei gateway Lambda, è possibile trovare l'ID dell'account di un account abusando della chiave di condizione di policy aws:ResourceAccount da un URL pubblico dell'API Gateway. Ciò 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).

È possibile trovare ulteriori informazioni nella ricerca originale e nello strumento conditional-love per automatizzare questa tecnica di sfruttamento.

Impara l'hacking AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated