AWS - API Gateway Post Exploitation
API Gateway
Pour plus d'informations, consultez :
AWS - API Gateway EnumAccéder aux APIs non exposées
Vous pouvez créer un endpoint dans https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint avec le service com.amazonaws.us-east-1.execute-api
, exposer l'endpoint dans un réseau où vous avez accès (potentiellement via une machine EC2) et assigner un groupe de sécurité permettant toutes les connexions.
Ensuite, depuis la machine EC2, vous pourrez accéder à l'endpoint et donc appeler l'API gateway qui n'était pas exposée auparavant.
Contourner le passage du corps de la requête
Cette technique a été trouvée dans ce writeup de 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, passera la requête au back end sans transformation.
Par conséquent, dans le CTF, l'API Gateway avait un modèle d'intégration qui empêchait l'exfiltration du drapeau 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 ne permettait 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
:
Usage Plans DoS
Dans la section Enumeration, 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 de l'API.
Besoin de test
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 avec les permissions 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 de l'API.
Besoin de tests
apigateway:UpdateRestApi
, apigateway:CreateDeployment
apigateway:UpdateRestApi
, apigateway:CreateDeployment
Un attaquant avec les permissions 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, ce qui peut potentiellement affaiblir la sécurité de l'API.
Impact Potentiel : Affaiblissement de la sécurité de l'API, pouvant potentiellement permettre un accès non autorisé ou exposer 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, contournant les contrôles de sécurité.
Besoin de tests
Last updated