Se você conseguiu obter algumas credenciais IAM, pode estar interessado em acessar o console web usando as seguintes ferramentas.
Observe que o usuário/papel deve ter a permissão sts:GetFederationToken.
Script personalizado
O script a seguir usará o perfil padrão e uma localização AWS padrão (não gov e não cn) para fornecer uma URL assinada que você pode usar para fazer login no console web:
# 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
Certifique-se de que o usuário IAM tenha permissão sts:GetFederationToken, ou forneça um papel para assumir.
aws-vault
aws-vault é uma ferramenta para armazenar e acessar credenciais AWS de forma segura em um ambiente de desenvolvimento.
aws-vaultlistaws-vaultexecjonsmith--awss3ls# Execute aws cli with jonsmith credsaws-vaultloginjonsmith# Open a browser logged as jonsmith
Você também pode usar aws-vault para obter uma sessão de console do navegador
Do Console para Credenciais IAM
Originalmente descoberto neste post, se você conseguir comprometer algum acesso a um console web (talvez você tenha roubado cookies e não conseguiu acessar a pasta .aws), você pode obter algumas credenciais de token IAM para esse usuário através do CloudShell.
CloudShell expõe credenciais IAM via um endpoint não documentado na porta 1338. Após carregar os cookies de sessão da vítima no seu navegador, você pode navegar até o CloudShell e emitir os seguintes comandos para obter credenciais IAM.