AWS - API Gateway Unauthenticated Enum

Reading time: 4 minutes

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें

API Invoke bypass

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

json
{
"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"
]
}
]
}

इस तरीके से एंडपॉइंट्स को इनवोक करने के लिए अनुमति देने की समस्या यह है कि "*" का अर्थ "कुछ भी" है और कोई और regex सिंटैक्स समर्थित नहीं है

कुछ उदाहरण:

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

warning

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

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

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

IAM नीति इंजेक्शन

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

सार्वजनिक URL टेम्पलेट

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

सार्वजनिक API गेटवे URL से खाता आईडी प्राप्त करें

S3 बकेट, डेटा एक्सचेंज और लैम्ब्डा URL गेटवे की तरह, एक सार्वजनिक API गेटवे URL से aws:ResourceAccount पॉलिसी कंडीशन की का दुरुपयोग करके एक खाते की खाता आईडी ढूंढना संभव है। यह पॉलिसी के aws:ResourceAccount अनुभाग में वाइल्डकार्ड का दुरुपयोग करके एक बार में एक अक्षर खाता आईडी खोजकर किया जाता है।
यह तकनीक आपको टैग के मान प्राप्त करने की भी अनुमति देती है यदि आप टैग कुंजी जानते हैं (कुछ डिफ़ॉल्ट दिलचस्प होते हैं)।

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

tip

AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE) Azure हैकिंग सीखें और अभ्यास करें: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks का समर्थन करें