AWS - API Gateway Unauthenticated Enum

Aprenda hacking na AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Bypass de Invocação da API

De acordo com a palestra Vetores de Ataque para APIs Usando Autorizadores Lambda do AWS API Gateway - Alexandre & Leonardo, os Autorizadores Lambda podem ser configurados usando a sintaxe do IAM para conceder permissões para invocar pontos de extremidade da API. Isso é retirado da documentação:

{
"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 maneira de conceder permissões para invocar endpoints é que o "*" implica "qualquer coisa" e não há mais suporte para sintaxe de regex.

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} também lhes dará acesso a outras rotas como /admin/dashboard/createAdmin, por exemplo.

Observe que o "*" não para de se expandir com barras, portanto, se você usar "*" no api-id, por exemplo, também poderia indicar "qualquer estágio" ou "qualquer método" desde que a regex final ainda seja válida. Então arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/* Pode validar uma solicitação POST para testar o estágio no caminho /prod/GET/dashboard/admin, por exemplo.

Você sempre deve ter claro o que deseja permitir o acesso e então verificar se outros cenários são possíveis com as permissões concedidas.

Para mais informações, além da documentação, você pode encontrar código para implementar autorizadores no github oficial da aws.

Injeção de Política IAM

Na mesma palestra é exposto o fato de 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 lá com o objetivo de burlar restrições.

Modelo de URL Pública

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

Obter ID da Conta a partir de URL pública da API Gateway

Assim como com buckets S3, Data Exchange e URLs de gateways Lambda, é possível encontrar o ID da conta de uma conta abusando da Chave de Condição de Política aws:ResourceAccount de uma URL pública da API Gateway. Isso é feito encontrando o ID da conta um caractere de cada vez abusando de curingas na seção aws:ResourceAccount da política. Essa técnica também permite obter valores de tags se você conhecer a chave da tag (existem algumas padrão interessantes).

Você pode encontrar mais informações na pesquisa original e na ferramenta conditional-love para automatizar essa exploração.

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Última actualización