AWS - API Gateway Unauthenticated Enum

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

API Invoke bypass

De acordo com a palestra Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo, Lambda Authorizers podem ser configurados usando sintaxe IAM para conceder permissÔes para invocar API endpoints. Isso foi retirado from the docs:

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

O problema com essa forma de conceder permissĂ”es para invocar endpoints Ă© que o “*” implica “qualquer coisa” e nĂŁo hĂĄ mais sintaxe de regex suportada.

Alguns exemplos:

  • Uma regra como arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/* para dar a cada usuĂĄrio acesso a /dashboard/user/{username} darĂĄ a eles acesso a outras rotas como /admin/dashboard/createAdmin, por exemplo.

Warning

Observe que “*” nĂŁo para de se expandir com barras, portanto, se vocĂȘ usar “*” em api-id por exemplo, isso tambĂ©m pode indicar “qualquer etapa” ou “qualquer mĂ©todo” desde que o regex final ainda seja vĂĄlido.
So arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/*
Pode validar uma requisição POST para o stage test no caminho /prod/GET/dashboard/admin, por exemplo.

VocĂȘ deve sempre ter claro o que quer permitir acessar e entĂŁo verificar se outros cenĂĄrios sĂŁo possĂ­veis com as permissĂ”es concedidas.

Para mais informaçÔes, alĂ©m da docs, vocĂȘ pode encontrar cĂłdigo para implementar authorizers em this official aws github.

IAM Policy Injection

No mesmo talk Ă© mostrado que se o cĂłdigo estiver usando entrada do usuĂĄrio para gerar as polĂ­ticas IAM, curingas (e outros como “.” ou strings especĂ­ficas) podem ser incluĂ­dos ali com o objetivo de contornar restriçÔes.

Modelo de URL pĂșblica

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

Obter o ID da conta a partir de uma URL pĂșblica do API Gateway

Assim como com S3 buckets, Data Exchange e Lambda URLs, Ă© possĂ­vel descobrir o ID da conta abusando da aws:ResourceAccount Policy Condition Key a partir de uma URL pĂșblica do API Gateway. Isto Ă© feito encontrando o ID da conta caractere por caractere, abusando de wildcards na seção aws:ResourceAccount da policy.
Esta tĂ©cnica tambĂ©m permite obter valores das tags se vocĂȘ souber a tag key (hĂĄ algumas padrĂŁo interessantes).

VocĂȘ pode encontrar mais informaçÔes na original research e na ferramenta conditional-love para automatizar essa exploração.

Tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks