AWS - Step Functions Privesc
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
Bu AWS hizmeti hakkında daha fazla bilgi için kontrol edin:
Bu ayrıcalık yükseltme teknikleri, istenen ayrıcalık yükseltme eylemlerini gerçekleştirmek için bazı AWS step function kaynaklarını kullanmayı gerektirecektir.
Tüm olası eylemleri kontrol etmek için kendi AWS hesabınıza gidip kullanmak istediğiniz eylemi seçebilir ve kullandığı parametreleri görebilirsiniz, örneğin:
Ya da API AWS belgelerine gidip her eylem belgesini kontrol edebilirsiniz:
states:TestState
& iam:PassRole
states:TestState
& iam:PassRole
izinlerine sahip bir saldırgan, mevcut bir durum makinesi oluşturmadan veya güncellemeden herhangi bir durumu test edebilir ve ona herhangi bir IAM rolü geçirebilir, bu da diğer AWS hizmetlerine rol izinleriyle yetkisiz erişim sağlar. Birleştiğinde, bu izinler, veri manipülasyonundan veri ihlallerine, kaynak manipülasyonuna ve ayrıcalık yükseltmeye kadar geniş yetkisiz eylemlere yol açabilir.
Aşağıdaki örnekler, bu izinleri ve AWS ortamının izinli rolünü kullanarak admin
kullanıcısı için bir erişim anahtarı oluşturan bir durumu test etmenin nasıl yapılacağını göstermektedir. Bu izinli rol, duruma iam:CreateAccessKey
eylemini gerçekleştirme izni veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin arn:aws:iam::aws:policy/AdministratorAccess
):
stateDefinition.json:
Yetki Yükseltme gerçekleştirmek için yürütülen Komut:
Olası Etki: Yetkisiz yürütme ve iş akışlarının manipülasyonu ile hassas kaynaklara erişim, bu da önemli güvenlik ihlallerine yol açabilir.
states:CreateStateMachine
& iam:PassRole
& (states:StartExecution
| states:StartSyncExecution
)states:CreateStateMachine
& iam:PassRole
yetkisine sahip bir saldırgan, bir durum makinesi oluşturabilir ve ona herhangi bir IAM rolü verebilir, bu da diğer AWS hizmetlerine rol izinleri ile yetkisiz erişim sağlar. Önceki yetki yükseltme tekniği ile karşılaştırıldığında (states:TestState
& iam:PassRole
), bu teknik kendiliğinden çalışmaz, ayrıca states:StartExecution
veya states:StartSyncExecution
izinlerine de sahip olmanız gerekir (states:StartSyncExecution
standart iş akışları için mevcut değildir, sadece durum makinelerini ifade etmek için) durum makinesi üzerinde bir yürütme başlatmak için.
Aşağıdaki örnekler, admin
kullanıcısı için bir erişim anahtarı oluşturan ve bu erişim anahtarını bir saldırgan kontrolündeki S3 bucket'ına sızdıran bir durum makinesi oluşturmanın nasıl yapılacağını göstermektedir. Bu izinleri ve AWS ortamının izin verici rolünü kullanarak. Bu izin verici rol, durum makinesinin iam:CreateAccessKey
ve s3:putObject
eylemlerini gerçekleştirmesine izin veren herhangi bir yüksek ayrıcalıklı politika ile ilişkilendirilmelidir (örneğin arn:aws:iam::aws:policy/AdministratorAccess
).
stateMachineDefinition.json:
Durum makinesi oluşturmak için komut:
Daha önce oluşturulan durum makinesinin çalıştırılmasını başlatmak için yürütülen komut:
Saldırgan kontrolündeki S3 bucket, mağdur hesabından s3:PutObject eylemini kabul etmek için izinlere sahip olmalıdır.
Potansiyel Etki: Yetkisiz yürütme ve iş akışlarının manipülasyonu ile hassas kaynaklara erişim, bu da önemli güvenlik ihlallerine yol açabilir.
states:UpdateStateMachine
& (her zaman gerekli değil) iam:PassRole
states:UpdateStateMachine
iznine sahip bir saldırgan, bir durum makinesinin tanımını değiştirebilir ve ayrıcalık yükseltmesine yol açabilecek ekstra gizli durumlar ekleyebilir. Bu şekilde, meşru bir kullanıcı durum makinesinin yürütmesini başlattığında, bu yeni kötü niyetli gizli durum yürütülecek ve ayrıcalık yükseltmesi başarılı olacaktır.
Durum makinesi ile ilişkili IAM Rolü ne kadar izin verici olursa olsun, bir saldırgan 2 durumla karşılaşabilir:
İzin Verici IAM Rolü: Eğer durum makinesi ile ilişkili IAM Rolü zaten izin verici ise (örneğin, arn:aws:iam::aws:policy/AdministratorAccess
politikası eklenmişse), o zaman ayrıcalıkları yükseltmek için iam:PassRole
izni gerekli olmayacaktır çünkü IAM Rolünü güncellemek de gerekli olmayacak, durum makinesi tanımını güncellemek yeterlidir.
İzin Vermeyen IAM Rolü: Önceki durumun aksine, burada bir saldırgan ayrıca iam:PassRole
iznine ihtiyaç duyacaktır çünkü durum makinesine izin verici bir IAM Rolü ilişkilendirmek ve durum makinesi tanımını değiştirmek gerekecektir.
Aşağıdaki örnekler, sadece bir HelloWorld Lambda fonksiyonunu çağıran meşru bir durum makinesini güncelleyerek, kullanıcı unprivilegedUser
'ı administrator
IAM Grubuna ekleyen ek bir durum eklemeyi göstermektedir. Bu şekilde, meşru bir kullanıcı güncellenmiş durum makinesinin bir yürütmesini başlattığında, bu yeni kötü niyetli gizli durum çalıştırılacak ve ayrıcalık yükseltme başarılı olacaktır.
Eğer durum makinesi ile ilişkili bir izinli IAM Rolü yoksa, izinli bir IAM Rolü ile ilişkilendirmek için iam:PassRole
izni de gerekecektir (örneğin, arn:aws:iam::aws:policy/AdministratorAccess
politikası eklenmiş bir rol).
Geçerli durum makinesini güncellemek için çalıştırılan komut:
Potansiyel Etki: Yetkisiz yürütme ve iş akışlarının manipülasyonu ile hassas kaynaklara erişim, bu da önemli güvenlik ihlallerine yol açabilir.
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)