AWS - STS Enum

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

STS

AWS Security Token Service (STS) esas olarak geçici, sınırlı ayrıcalıklı kimlik bilgileri vermek için tasarlanmıştır. Bu kimlik bilgileri, AWS Identity and Access Management (IAM) kullanıcıları veya kimliği doğrulanmış kullanıcılar (federated users) için talep edilebilir.

STS’nin amacı kimlik taklidi için kimlik bilgileri vermek olduğundan, bu hizmet ayrıcalıkları artırmak ve sürekliliği sağlamak için son derece değerlidir, ancak geniş bir seçenek yelpazesine sahip olmayabilir.

Assume Role Impersonation

AWS STS tarafından sağlanan AssumeRole eylemi, bir ilkenin başka bir ilke için kimlik bilgileri almasına izin verdiğinden kritik öneme sahiptir; bu, esasen onları taklit etmektir. Çağrıldığında, belirtilen ARN ile ilişkili bir erişim anahtar kimliği, bir gizli anahtar ve bir oturum belirteci ile yanıt verir.

Penetrasyon Testi yapanlar veya Kırmızı Takım üyeleri için bu teknik, ayrıcalık artırma için önemlidir (detaylar burada açıklanmıştır). Ancak, bu tekniğin oldukça belirgin olduğunu ve bir saldırganı hazırlıksız yakalamayabileceğini belirtmek gerekir.

Assume Role Logic

Aynı hesapta bir rolü üstlenmek için, üstlenilecek rolün belirli bir rol ARN’sine izin vermesi durumunda:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:role/priv-role"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Bu durumda priv-role rolünün o rolü üstlenmesi için özellikle izin verilmesine gerek yoktur (bu izin yeterlidir).

Ancak, bir rolun bir hesabın onu üstlenmesine izin vermesi durumunda, şöyle:

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<acc_id>:root"
},
"Action": "sts:AssumeRole",
"Condition": {}
}
]
}

Rolü üstlenmeye çalışan, o rol üzerinde belirli bir sts:AssumeRole iznine ihtiyaç duyacaktır onu üstlenmek için.

Eğer farklı bir hesap üzerinden bir rol üstlenmeye çalışırsanız, üstlenilen rol bunu izin vermelidir (rolün ARN’sini veya harici hesabı belirterek) ve diğerini üstlenmeye çalışan rolün onu üstlenmek için izinlere sahip olması GEREKİR (bu durumda, üstlenilen rol bir ARN belirtiyor olsa bile bu isteğe bağlı değildir).

Enumeration

# Get basic info of the creds
aws sts get-caller-identity
aws sts get-access-key-info --access-key-id <AccessKeyID>

# Get CLI a session token with current creds
## Using CLI creds
## You cannot get session creds using session creds
aws sts get-session-token
## MFA
aws sts get-session-token --serial-number <arn_device> --token-code <otp_code>

Privesc

Aşağıdaki sayfada STS izinlerini kötüye kullanarak ayrıcalıkları artırma yöntemini kontrol edebilirsiniz:

AWS - STS Privesc

Post Exploitation

AWS - STS Post Exploitation

Persistence

AWS - STS Persistence

References

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin