AWS - API Gateway Post Exploitation
API Gateway
Für weitere Informationen siehe:
AWS - API Gateway EnumZugriff auf nicht freigegebene APIs
Du kannst einen Endpunkt unter https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint mit dem Dienst com.amazonaws.us-east-1.execute-api
erstellen, den Endpunkt in einem Netzwerk freigeben, auf das du Zugriff hast (möglicherweise über eine EC2-Maschine), und eine Sicherheitsgruppe zuweisen, die alle Verbindungen zulässt.
Dann kannst du von der EC2-Maschine aus auf den Endpunkt zugreifen und somit die Gateway-API aufrufen, die zuvor nicht freigegeben war.
Umgehung der Request-Body-Passthrough
Diese Technik wurde in diesem CTF-Writeup gefunden.
Wie in der AWS-Dokumentation im Abschnitt PassthroughBehavior
angegeben, wird standardmäßig der Wert WHEN_NO_MATCH
beim Überprüfen des Content-Type Headers der Anfrage die Anfrage ohne Transformation an das Backend weiterleiten.
Daher hatte im CTF das API Gateway eine Integrationstemplate, das verhinderte, dass die Flagge in einer Antwort exfiltriert wurde, wenn eine Anfrage mit Content-Type: application/json
gesendet wurde:
Das Senden einer Anfrage mit Content-type: text/json
würde diesen Filter jedoch umgehen.
Da das API Gateway nur Get
und Options
erlaubte, war es schließlich möglich, eine beliebige dynamoDB-Abfrage ohne Einschränkung zu senden, indem eine POST-Anfrage mit der Abfrage im Body gesendet und der Header X-HTTP-Method-Override: GET
verwendet wurde:
Usage Plans DoS
Im Abschnitt Enumeration kannst du sehen, wie man den Nutzungsplan der Schlüssel erhält. Wenn du den Schlüssel hast und er auf X Nutzungen pro Monat begrenzt ist, könntest du ihn einfach verwenden und einen DoS verursachen.
Der API Key muss einfach in einem HTTP-Header namens x-api-key
enthalten sein.
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
Ein Angreifer mit den Berechtigungen apigateway:UpdateGatewayResponse
und apigateway:CreateDeployment
kann eine bestehende Gateway-Antwort modifizieren, um benutzerdefinierte Header oder Antwortvorlagen einzufügen, die sensible Informationen leaken oder bösartige Skripte ausführen.
Potenzielle Auswirkungen: Leckage von sensiblen Informationen, Ausführung bösartiger Skripte oder unbefugter Zugriff auf API-Ressourcen.
Muss getestet werden
apigateway:UpdateStage
, apigateway:CreateDeployment
apigateway:UpdateStage
, apigateway:CreateDeployment
Ein Angreifer mit den Berechtigungen apigateway:UpdateStage
und apigateway:CreateDeployment
kann eine bestehende API Gateway-Stufe modifizieren, um den Datenverkehr zu einer anderen Stufe umzuleiten oder die Cache-Einstellungen zu ändern, um unbefugten Zugriff auf zwischengespeicherte Daten zu erhalten.
Potentieller Einfluss: Unbefugter Zugriff auf zwischengespeicherte Daten, Störung oder Abfangen von API-Verkehr.
Test erforderlich
apigateway:PutMethodResponse
, apigateway:CreateDeployment
apigateway:PutMethodResponse
, apigateway:CreateDeployment
Ein Angreifer mit den Berechtigungen apigateway:PutMethodResponse
und apigateway:CreateDeployment
kann die Methodenantwort einer bestehenden API Gateway REST API Methode ändern, um benutzerdefinierte Header oder Antwortvorlagen einzufügen, die sensible Informationen leaken oder bösartige Skripte ausführen.
Potentieller Einfluss: Leckage von sensiblen Informationen, Ausführung bösartiger Skripte oder unbefugter Zugriff auf API-Ressourcen.
Testen erforderlich
apigateway:UpdateRestApi
, apigateway:CreateDeployment
apigateway:UpdateRestApi
, apigateway:CreateDeployment
Ein Angreifer mit den Berechtigungen apigateway:UpdateRestApi
und apigateway:CreateDeployment
kann die API Gateway REST API-Einstellungen ändern, um das Logging zu deaktivieren oder die minimale TLS-Version zu ändern, was die Sicherheit der API potenziell schwächen kann.
Potentieller Einfluss: Schwächung der Sicherheit der API, was möglicherweise unbefugten Zugriff oder die Offenlegung sensibler Informationen ermöglicht.
Test erforderlich
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
Ein Angreifer mit den Berechtigungen apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
und apigateway:CreateUsagePlanKey
kann neue API-Schlüssel erstellen, sie mit Nutzungsplänen verknüpfen und diese Schlüssel dann für unbefugten Zugriff auf APIs verwenden.
Potentieller Einfluss: Unbefugter Zugriff auf API-Ressourcen, Umgehung von Sicherheitskontrollen.
Muss getestet werden
Last updated