AWS - API Gateway Post Exploitation
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Para más información consulta:
Puedes crear un endpoint en https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint con el servicio com.amazonaws.us-east-1.execute-api
, exponer el endpoint en una red a la que tengas acceso (potencialmente a través de una máquina EC2) y asignar un grupo de seguridad que permita todas las conexiones.
Luego, desde la máquina EC2 podrás acceder al endpoint y, por lo tanto, llamar a la API del gateway que no estaba expuesta anteriormente.
Esta técnica fue encontrada en este writeup de CTF.
Como se indica en la documentación de AWS en la sección PassthroughBehavior
, por defecto, el valor WHEN_NO_MATCH
, al verificar el encabezado Content-Type de la solicitud, pasará la solicitud al backend sin transformación.
Por lo tanto, en el CTF, el API Gateway tenía una plantilla de integración que estaba impidiendo que la bandera fuera exfiltrada en una respuesta cuando se enviaba una solicitud con Content-Type: application/json
:
Sin embargo, enviar una solicitud con Content-type: text/json
evitaría ese filtro.
Finalmente, como el API Gateway solo permitía Get
y Options
, era posible enviar una consulta arbitraria de dynamoDB sin ningún límite enviando una solicitud POST con la consulta en el cuerpo y utilizando el encabezado X-HTTP-Method-Override: GET
:
En la sección de Enumeración puedes ver cómo obtener el plan de uso de las claves. Si tienes la clave y está limitada a X usos por mes, podrías simplemente usarla y causar un DoS.
La API Key solo necesita ser incluida dentro de un encabezado HTTP llamado x-api-key
.
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
Un atacante con los permisos apigateway:UpdateGatewayResponse
y apigateway:CreateDeployment
puede modificar una respuesta de Gateway existente para incluir encabezados personalizados o plantillas de respuesta que filtren información sensible o ejecuten scripts maliciosos.
Impacto Potencial: Filtración de información sensible, ejecución de scripts maliciosos o acceso no autorizado a recursos de API.
Necesita pruebas
apigateway:UpdateStage
, apigateway:CreateDeployment
Un atacante con los permisos apigateway:UpdateStage
y apigateway:CreateDeployment
puede modificar una etapa existente de API Gateway para redirigir el tráfico a una etapa diferente o cambiar la configuración de caché para obtener acceso no autorizado a datos en caché.
Impacto Potencial: Acceso no autorizado a datos en caché, interrumpiendo o interceptando el tráfico de la API.
Necesita pruebas
apigateway:PutMethodResponse
, apigateway:CreateDeployment
Un atacante con los permisos apigateway:PutMethodResponse
y apigateway:CreateDeployment
puede modificar la respuesta del método de un método de API Gateway REST existente para incluir encabezados personalizados o plantillas de respuesta que filtren información sensible o ejecuten scripts maliciosos.
Impacto Potencial: Filtración de información sensible, ejecución de scripts maliciosos o acceso no autorizado a recursos de API.
Necesita pruebas
apigateway:UpdateRestApi
, apigateway:CreateDeployment
Un atacante con los permisos apigateway:UpdateRestApi
y apigateway:CreateDeployment
puede modificar la configuración de la API REST de API Gateway para deshabilitar el registro o cambiar la versión mínima de TLS, debilitando potencialmente la seguridad de la API.
Impacto Potencial: Debilitar la seguridad de la API, permitiendo potencialmente el acceso no autorizado o exponiendo información sensible.
Necesita pruebas
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
Un atacante con permisos apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
y apigateway:CreateUsagePlanKey
puede crear nuevas claves de API, asociarlas con planes de uso y luego usar estas claves para acceder no autorizado a las APIs.
Impacto Potencial: Acceso no autorizado a recursos de API, eludiendo controles de seguridad.
Necesita pruebas
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)