AWS - API Gateway Post Exploitation
API Gateway
Para más información revisa:
AWS - API Gateway EnumAcceder a APIs no expuestas
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 donde 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 antes.
Eludir el paso del cuerpo de la solicitud
Esta técnica se encontró 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 back end sin transformación.
Por lo tanto, en el CTF el API Gateway tenía una plantilla de integración que impedía 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
, fue posible enviar una consulta arbitraria a dynamoDB sin ningún límite enviando una solicitud POST con la consulta en el cuerpo y usando el encabezado X-HTTP-Method-Override: GET
:
Usage Plans DoS
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 header HTTP llamado x-api-key
.
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
apigateway:UpdateGatewayResponse
, apigateway:CreateDeployment
Un atacante con los permisos apigateway:UpdateGatewayResponse
y apigateway:CreateDeployment
puede modificar una Respuesta de Gateway existente para incluir headers personalizados o plantillas de respuesta que filtren información sensible o ejecuten scripts maliciosos.
Impacto Potencial: Fuga de información sensible, ejecución de scripts maliciosos o acceso no autorizado a recursos de la API.
Necesita pruebas
apigateway:UpdateStage
, apigateway:CreateDeployment
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
apigateway:PutMethodResponse
, apigateway:CreateDeployment
Un atacante con los permisos apigateway:PutMethodResponse
y apigateway:CreateDeployment
puede modificar la respuesta del método de una API Gateway REST API existente para incluir encabezados personalizados o plantillas de respuesta que filtren información sensible o ejecuten scripts maliciosos.
Impacto Potencial: Fuga de información sensible, ejecución de scripts maliciosos o acceso no autorizado a recursos de API.
Necesita pruebas
apigateway:UpdateRestApi
, apigateway:CreateDeployment
apigateway:UpdateRestApi
, apigateway:CreateDeployment
Un atacante con los permisos apigateway:UpdateRestApi
y apigateway:CreateDeployment
puede modificar la configuración de API Gateway REST API para deshabilitar el registro o cambiar la versión mínima de TLS, potencialmente debilitando la seguridad de la API.
Impacto Potencial: Debilitar la seguridad del API, permitiendo potencialmente el acceso no autorizado o exponiendo información sensible.
Necesita pruebas
apigateway:CreateApiKey
, apigateway:UpdateApiKey
, apigateway:CreateUsagePlan
, apigateway:CreateUsagePlanKey
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 a APIs sin autorización.
Impacto Potencial: Acceso no autorizado a recursos de API, eludiendo controles de seguridad.
Necesita pruebas
Last updated