Eğer bazı IAM kimlik bilgilerini elde etmeyi başardıysanız, web konsoluna erişmek için aşağıdaki araçları kullanmakla ilgilenebilirsiniz.
Kullanıcı/rolün sts:GetFederationToken iznine sahip olması gerektiğini unutmayın.
Özel script
Aşağıdaki script, varsayılan profili ve varsayılan bir AWS konumunu (gov değil ve cn değil) kullanarak, web konsoluna giriş yapmak için kullanabileceğiniz imzalı bir URL verecektir:
# 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
IAM kullanıcısının sts:GetFederationToken iznine sahip olduğundan emin olun veya üstlenilecek bir rol sağlayın.
aws-vault
aws-vault AWS kimlik bilgilerini güvenli bir şekilde depolamak ve erişmek için bir geliştirme ortamında kullanılan bir araçtır.
aws-vaultlistaws-vaultexecjonsmith--awss3ls# Execute aws cli with jonsmith credsaws-vaultloginjonsmith# Open a browser logged as jonsmith
Ayrıca aws-vault kullanarak bir tarayıcı konsol oturumu alabilirsiniz.
Python'dan User-Agent kısıtlamalarını aşma
Eğer kullanılan user agent'a dayalı olarak belirli eylemleri gerçekleştirme kısıtlaması varsa (örneğin, user agent'a dayalı olarak python boto3 kütüphanesinin kullanımını kısıtlama) önceki tekniği kullanarak tarayıcı aracılığıyla web konsoluna bağlanmak mümkündür veya doğrudan boto3 user-agent'ını şu şekilde değiştirebilirsiniz:
# Shared by ex16x41# Create a clientsession=boto3.Session(profile_name="lab6")client=session.client("secretsmanager",region_name="us-east-1")# Change user agent of the clientclient.meta.events.register('before-call.secretsmanager.GetSecretValue',lambdaparams,**kwargs:params['headers'].update({'User-Agent': 'my-custom-tool'}) )# Perform the actionresponse=client.get_secret_value(SecretId="flag_secret") print(response['SecretString'])