AWS - IAM Post Exploitation

htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

IAM

IAM erişimi hakkında daha fazla bilgi için:

Karmaşık Vekil Sorunu

Eğer harici bir hesabın (A) hesabınızda bir rolü erişime izin verirseniz, büyük olasılıkla bu harici hesaba kimin tam olarak erişebileceğini göremezsiniz. Bu bir sorundur, çünkü başka bir harici hesap (B), harici hesap (A)'ya erişebiliyorsa, B'nin aynı zamanda hesabınıza da erişebilmesi mümkündür.

Bu nedenle, harici bir hesabın hesabınızdaki bir role erişmesine izin verirken, bir ExternalId belirtmek mümkündür. Bu, harici hesabın (A) kuruluşunuzdaki role erişmek için belirtmesi gereken "gizli" bir dizedir. Harici hesap B bu dizesi bilmediği için, A'ya erişimi olsa bile rolünüze erişemez.

Ancak, bu ExternalId "gizli" dizesinin gerçekte bir sır olmadığını, IAM rolü kabul etme politikasını okuyabilen herkesin görebileceğini unutmayın. Ancak, harici hesap A bunu bildiği sürece, harici hesap B bilmediği için, B'nin A'yı kötüye kullanarak rolünüze erişmesini engeller.

Örnek:

{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}

Bir saldırganın bir confused deputy'yi sömürmesi için, mevcut hesabın prensiplerinin diğer hesaplardaki rolleri taklit edebilip edemeyeceğini bir şekilde bulması gerekecektir.

Beklenmeyen Güvenlik İlişkileri

Prensip olarak joker karakteri kullanma

{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" },
}

Bu politika, rolü tüm AWS'nin üstlenebilmesine izin verir.

Hizmet olarak temsilci

{
"Action": "lambda:InvokeFunction",
"Effect": "Allow",
"Principal": { "Service": "apigateway.amazonaws.com" },
"Resource": "arn:aws:lambda:000000000000:function:foo"
}

Bu politika, herhangi bir hesabın apigateway'ini bu Lambda'yı çağırmak için yapılandırmasına izin verir.

Ana olarak S3

"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}

Eğer bir S3 kovası birincil olarak verilirse, çünkü S3 kovalarının bir Hesap Kimliği yoktur, eğer kovayı sildiyseniz ve saldırgan kendi hesabında oluşturduysa, bunu istismar edebilirler.

Desteklenmiyor

{
"Effect": "Allow",
"Principal": {"Service": "cloudtrail.amazonaws.com"},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}

Confused Deputy sorunlarını önlemenin yaygın bir yolu, köken ARN'sini kontrol etmek için AWS:SourceArn ile bir koşul kullanmaktır. Ancak, bazı hizmetler bunu desteklemeyebilir (örneğin, bazı kaynaklara göre CloudTrail).

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated