AWS - API Gateway Post Exploitation

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Brama API

Aby uzyskać więcej informacji, sprawdź:

pageAWS - API Gateway Enum

Dostęp do nieujawnionych interfejsów API

Możesz utworzyć punkt końcowy w https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint z usługą com.amazonaws.us-east-1.execute-api, odsłonić punkt końcowy w sieci, do której masz dostęp (potencjalnie za pośrednictwem maszyny EC2) i przypisać grupę zabezpieczeń zezwalającą na wszystkie połączenia. Następnie z maszyny EC2 będziesz mógł uzyskać dostęp do punktu końcowego i w ten sposób wywołać bramę API, która wcześniej nie była ujawniona.

Atak DoS na plany użytkowania

W sekcji Wyliczanie możesz zobaczyć, jak uzyskać plan użytkowania kluczy. Jeśli masz klucz i jest on ograniczony do X użycia miesięcznie, możesz go po prostu użyć i spowodować atak DoS.

Klucz API musi być dołączony wewnątrz nagłówka HTTP o nazwie x-api-key.

apigateway:UpdateGatewayResponse, apigateway:CreateDeployment

Atakujący posiadający uprawnienia apigateway:UpdateGatewayResponse i apigateway:CreateDeployment może modyfikować istniejącą odpowiedź bramy, aby zawierała niestandardowe nagłówki lub szablony odpowiedzi, które ujawniają poufne informacje lub wykonują złośliwe skrypty.

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

Potencjalny wpływ: Wyciek poufnych informacji, wykonywanie złośliwych skryptów lub nieautoryzowany dostęp do zasobów interfejsu API.

Potrzebne testowanie

apigateway:UpdateStage, apigateway:CreateDeployment

Atakujący posiadający uprawnienia apigateway:UpdateStage i apigateway:CreateDeployment może modyfikować istniejący etap bramy API Gateway w celu przekierowania ruchu do innego etapu lub zmiany ustawień buforowania w celu uzyskania nieautoryzowanego dostępu do danych buforowanych.

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

Potencjalny wpływ: Nieautoryzowany dostęp do danych z pamięci podręcznej, zakłócenie lub przechwycenie ruchu API.

Potrzebne testowanie

apigateway:PutMethodResponse, apigateway:CreateDeployment

Atakujący posiadający uprawnienia apigateway:PutMethodResponse i apigateway:CreateDeployment może zmodyfikować odpowiedź metody istniejącej metody interfejsu API Gateway REST w celu dodania niestandardowych nagłówków lub szablonów odpowiedzi, które ujawnią poufne informacje lub wykonają złośliwe skrypty.

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

Potencjalny wpływ: Wyciek poufnych informacji, wykonywanie złośliwych skryptów lub nieautoryzowany dostęp do zasobów interfejsu API.

Potrzebne testowanie

apigateway:UpdateRestApi, apigateway:CreateDeployment

Atakujący posiadający uprawnienia apigateway:UpdateRestApi i apigateway:CreateDeployment może modyfikować ustawienia interfejsu API Gateway REST w celu wyłączenia logowania lub zmiany minimalnej wersji TLS, co potencjalnie osłabia bezpieczeństwo interfejsu 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

Potencjalny wpływ: Oslabienie bezpieczeństwa interfejsu API, potencjalnie umożliwiające nieautoryzowany dostęp lub ujawnienie poufnych informacji.

Potrzebne testowanie

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

Atakujący posiadający uprawnienia apigateway:CreateApiKey, apigateway:UpdateApiKey, apigateway:CreateUsagePlan i apigateway:CreateUsagePlanKey może tworzyć nowe klucze API, powiązywać je z planami użycia, a następnie używać tych kluczy do nieautoryzowanego dostępu do interfejsów 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

Potencjalny wpływ: Nieautoryzowany dostęp do zasobów interfejsu API, obejście kontroli bezpieczeństwa.

Potrzebne testowanie

Zacznij od zera i stań się ekspertem w hakowaniu AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated