AWS - API Gateway Post Exploitation
API Gateway
Para mais informações, confira:
AWS - API Gateway EnumAcessar APIs não expostas
Você pode criar um endpoint em https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint com o serviço com.amazonaws.us-east-1.execute-api
, expor o endpoint em uma rede onde você tenha acesso (potencialmente via uma máquina EC2) e atribuir um grupo de segurança permitindo todas as conexões.
Então, a partir da máquina EC2, você poderá acessar o endpoint e, portanto, chamar a API do gateway que não estava exposta antes.
Bypass Request body passthrough
Esta técnica foi encontrada neste writeup de CTF.
Conforme indicado na documentação da AWS na seção PassthroughBehavior
, por padrão, o valor WHEN_NO_MATCH
, ao verificar o cabeçalho Content-Type da solicitação, passará a solicitação para o back end sem transformação.
Portanto, no CTF, o API Gateway tinha um template de integração que estava impedindo que a flag fosse exfiltrada em uma resposta quando uma solicitação era enviada com Content-Type: application/json
:
No entanto, enviar uma solicitação com Content-type: text/json
impediria esse filtro.
Finalmente, como o API Gateway estava permitindo apenas Get
e Options
, foi possível enviar uma consulta dynamoDB arbitrária sem qualquer limite enviando uma solicitação POST com a consulta no corpo e usando o cabeçalho X-HTTP-Method-Override: GET
:
Usage Plans DoS
Na seção de Enumeração você pode ver como obter o plano de uso das chaves. Se você tiver a chave e ela estiver limitada a X usos por mês, você pode simplesmente usá-la e causar um DoS.
A API Key só precisa ser incluída dentro de um cabeçalho HTTP chamado x-api-key
.
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
Um atacante com as permissões apigateway:UpdateGatewayResponse
e apigateway:CreateDeployment
pode modificar uma Resposta do Gateway existente para incluir cabeçalhos personalizados ou modelos de resposta que vazem informações sensíveis ou executem scripts maliciosos.
Impacto Potencial: Vazamento de informações sensíveis, execução de scripts maliciosos ou acesso não autorizado a recursos da API.
Necessita de testes
apigateway:UpdateStage
, apigateway:CreateDeployment
apigateway:UpdateStage
, apigateway:CreateDeployment
Um atacante com as permissões apigateway:UpdateStage
e apigateway:CreateDeployment
pode modificar um estágio existente do API Gateway para redirecionar o tráfego para um estágio diferente ou alterar as configurações de cache para obter acesso não autorizado a dados em cache.
Impacto Potencial: Acesso não autorizado a dados em cache, interrompendo ou interceptando o tráfego da API.
Necessita de testes
apigateway:PutMethodResponse
, apigateway:CreateDeployment
apigateway:PutMethodResponse
, apigateway:CreateDeployment
Um atacante com as permissões apigateway:PutMethodResponse
e apigateway:CreateDeployment
pode modificar a resposta do método de um método existente do API Gateway REST API para incluir cabeçalhos personalizados ou modelos de resposta que vazem informações sensíveis ou executem scripts maliciosos.
Potencial Impacto: Vazamento de informações sensíveis, execução de scripts maliciosos ou acesso não autorizado a recursos da API.
Necessário teste
apigateway:UpdateRestApi
, apigateway:CreateDeployment
apigateway:UpdateRestApi
, apigateway:CreateDeployment
Um atacante com as permissões apigateway:UpdateRestApi
e apigateway:CreateDeployment
pode modificar as configurações da API Gateway REST API para desativar o registro de logs ou alterar a versão mínima do TLS, potencialmente enfraquecendo a segurança da API.
Impacto Potencial: Enfraquecimento da segurança da API, potencialmente permitindo acesso não autorizado ou expondo informações sensíveis.
Necessário teste
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
Um atacante com permissões apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
e apigateway:CreateUsagePlanKey
pode criar novas chaves de API, associá-las a planos de uso e, em seguida, usar essas chaves para acesso não autorizado a APIs.
Impacto Potencial: Acesso não autorizado a recursos da API, contornando controles de segurança.
Necessário testar
Last updated