AWS - API Gateway Unauthenticated Enum

Support HackTricks

API Invoke bypass

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

{
"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 उदाहरण के लिए।

ध्यान दें कि "*" स्लैश के साथ विस्तारित होना बंद नहीं होता, इसलिए, यदि आप उदाहरण के लिए 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 से खाता ID प्राप्त करें

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

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

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

Last updated