AWS - API Gateway Unauthenticated Enum

HackTricks को समर्थन दें

API Invoke बाईपास

Attack Vectors for APIs Using AWS API Gateway Lambda Authorizers - Alexandre & Leonardo टॉक के अनुसार, Lambda Authorizers को IAM सिंटैक्स का उपयोग करके API एंडपॉइंट्स को इनवोक करने की अनुमति देने के लिए कॉन्फ़िगर किया जा सकता है। यह डॉक्स से लिया गया है:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Permission",
"Action": [
"execute-api:Execution-operation"
],
"Resource": [
"arn:aws:execute-api:region:account-id:api-id/stage/METHOD_HTTP_VERB/Resource-path"
]
}
]
}

इस तरीके से endpoints को invoke करने की permissions देने में समस्या यह है कि "*" का मतलब "कुछ भी" होता है और कोई और regex syntax समर्थित नहीं है

कुछ उदाहरण:

  • एक नियम जैसे arn:aws:execute-apis:sa-east-1:accid:api-id/prod/*/dashboard/* प्रत्येक उपयोगकर्ता को /dashboard/user/{username} तक पहुंच देने के लिए, उन्हें अन्य मार्गों जैसे /admin/dashboard/createAdmin तक पहुंच देगा।

ध्यान दें कि "*" स्लैश के साथ विस्तार करना बंद नहीं करता, इसलिए, यदि आप api-id में "*" का उपयोग करते हैं, तो यह "कोई भी stage" या "कोई भी method" भी इंगित कर सकता है जब तक कि अंतिम regex अभी भी मान्य है। तो arn:aws:execute-apis:sa-east-1:accid:*/prod/GET/dashboard/* उदाहरण के लिए, /prod/GET/dashboard/admin पथ पर test stage के लिए एक post request को मान्य कर सकता है।

आपको हमेशा स्पष्ट होना चाहिए कि आप किसे एक्सेस की अनुमति देना चाहते हैं और फिर जांचें कि दी गई permissions के साथ अन्य परिदृश्य संभव हैं या नहीं।

अधिक जानकारी के लिए, docs के अलावा, आप इस आधिकारिक aws github में authorizers को लागू करने के लिए कोड पा सकते हैं।

IAM Policy Injection

उसी talk में यह तथ्य उजागर किया गया है कि यदि कोड user input का उपयोग करके IAM policies उत्पन्न कर रहा है, तो wildcards (और अन्य जैसे "." या विशिष्ट strings) को वहां शामिल किया जा सकता है प्रतिबंधों को बायपास करने के लक्ष्य के साथ।

Public URL template

https://{random_id}.execute-api.{region}.amazonaws.com/{user_provided}

Get Account ID from public API Gateway URL

S3 buckets, Data Exchange और Lambda URLs gateways की तरह, एक public API Gateway URL से aws:ResourceAccount Policy Condition Key का दुरुपयोग करके एक account का account ID ढूंढना संभव है। यह aws:ResourceAccount पॉलिसी के सेक्शन में वाइल्डकार्ड्स का दुरुपयोग करके एक समय में एक अक्षर से account ID ढूंढने से किया जाता है। यह तकनीक आपको टैग्स के मान प्राप्त करने की भी अनुमति देती है यदि आप टैग कुंजी जानते हैं (कुछ डिफ़ॉल्ट दिलचस्प हैं)।

आप अधिक जानकारी मूल शोध और इस शोषण को स्वचालित करने के लिए टूल conditional-love में पा सकते हैं।

HackTricks को समर्थन दें

Last updated