Se você conseguiu obter algumas credenciais IAM, pode estar interessado em acessar o console da web usando as seguintes ferramentas.
Observe que o usuário/papel deve ter a permissão sts:GetFederationToken.
Script personalizado
O seguinte script usará o perfil padrão e uma localização padrão da AWS (não gov e não cn) para lhe fornecer uma URL assinada que você pode usar para fazer login no console da 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 com segurança as credenciais da AWS 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
Descoberto originalmente 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 através de um endpoint não documentado na porta 1338. Após carregar os cookies de sessão da vítima em seu navegador, você pode navegar até o CloudShell e emitir os seguintes comandos para obter credenciais IAM.