AWS - API Gateway Post Exploitation
API Gateway
Pour plus d'informations, consultez :
AWS - API Gateway EnumAccé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 auquel vous avez accès (potentiellement via une machine EC2) et attribuer un groupe de sécurité permettant toutes les connexions.
Ensuite, depuis la machine EC2, vous pourrez accéder au point de terminaison et donc appeler l'API de la passerelle qui n'était pas exposée auparavant.
Contourner le passage du corps de la requête
Cette technique a été trouvée dans ce rapport CTF.
Comme indiqué dans la documentation AWS dans la section PassthroughBehavior
, par défaut, la valeur WHEN_NO_MATCH
, lors de la vérification de l'en-tête Content-Type de la requête, transmettra la requête au backend sans transformation.
Par conséquent, dans le CTF, la passerelle API avait un modèle d'intégration qui empêchait le drapeau d'être exfiltré dans une réponse lorsqu'une requête était envoyée avec Content-Type: application/json
:
Cependant, envoyer une requête avec Content-type: text/json
empêcherait ce filtre.
Enfin, comme l'API Gateway n'autorisait que Get
et Options
, il était possible d'envoyer une requête dynamoDB arbitraire sans aucune limite en envoyant une requête POST avec la requête dans le corps et en utilisant l'en-tête X-HTTP-Method-Override: GET
:
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
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
Un attaquant avec les permissions 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.
Impact potentiel : Fuite d'informations sensibles, exécution de scripts malveillants ou accès non autorisé aux ressources API.
Besoin de tests
apigateway:UpdateStage
, apigateway:CreateDeployment
apigateway:UpdateStage
, apigateway:CreateDeployment
Un attaquant avec les permissions apigateway:UpdateStage
et apigateway:CreateDeployment
peut modifier une étape existante de l'API Gateway pour rediriger le trafic vers une autre étape ou changer les paramètres de mise en cache pour obtenir un accès non autorisé aux données mises en cache.
Impact potentiel : Accès non autorisé aux données mises en cache, perturbation ou interception du trafic API.
Besoin de tests
apigateway:PutMethodResponse
, apigateway:CreateDeployment
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 API 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.
Impact potentiel : Fuite d'informations sensibles, exécution de scripts malveillants ou accès non autorisé aux ressources API.
Besoin de tests
apigateway:UpdateRestApi
, apigateway:CreateDeployment
apigateway:UpdateRestApi
, apigateway:CreateDeployment
Un attaquant disposant des autorisations apigateway:UpdateRestApi
et apigateway:CreateDeployment
peut modifier les paramètres de l'API Gateway REST API pour désactiver la journalisation ou changer la version minimale de TLS, affaiblissant potentiellement la sécurité de l'API.
Impact potentiel : Affaiblissement de la sécurité de l'API, permettant potentiellement un accès non autorisé ou exposant des informations sensibles.
Besoin de tests
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
Un attaquant avec les permissions 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 un accès non autorisé aux APIs.
Impact potentiel : Accès non autorisé aux ressources API, contournement des contrôles de sécurité.
Besoin de tests
Last updated