AWS - IAM & STS Unauthenticated Enum
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 teknik artık çalışmıyor çünkü rol var olsa da olmasa da her zaman bu hatayı alırsınız:
An error occurred (AccessDenied) when calling the AssumeRole operation: User: arn:aws:iam::947247140022:user/testenv is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::429217632764:role/account-balanceasdas
Bunu şu komutla test edebilirsiniz:
aws sts assume-role --role-arn arn:aws:iam::412345678909:role/superadmin --role-session-name s3-access-example
Gerekli izinler olmadan bir rolü varsayılamaya çalışmak, bir AWS hata mesajı tetikler. Örneğin, yetkisizse, AWS şu yanıtı verebilir:
Bu mesaj, rolün varlığını onaylar ancak onun üstlenme rolü politikasının sizin üstlenmenize izin vermediğini belirtir. Aksine, var olmayan bir rolü üstlenmeye çalışmak farklı bir hataya yol açar:
İlginç bir şekilde, mevcut ve mevcut olmayan roller arasında ayırt etme yöntemi, farklı AWS hesapları arasında bile geçerlidir. Geçerli bir AWS hesap kimliği ve hedeflenen bir kelime listesi ile, hesapta bulunan rolleri herhangi bir iç sınırlama ile karşılaşmadan listeleyebilirsiniz.
Bu sorunu kötüye kullanarak potansiyel ilkeleri listelemek için bu scripti kullanabilirsiniz.
Bir IAM rolünün güven politikasını yapılandırmak veya güncellemek, hangi AWS kaynaklarının veya hizmetlerinin o rolü üstlenmesine izin verileceğini tanımlamayı içerir ve geçici kimlik bilgileri alır. Politika içinde belirtilen kaynak varsa, güven politikası başarıyla kaydedilir. Ancak, kaynak yoksa, geçersiz bir ilke sağlandığını belirten bir hata üretilir.
Bu kaynakta bir çapraz hesap rolü veya kullanıcı belirtebileceğinizi unutmayın:
arn:aws:iam::acc_id:role/role_name
arn:aws:iam::acc_id:user/user_name
Bu bir politika örneğidir:
Kullanmadığınız bir rol varsa, bu hata ile karşılaşacaksınız. Eğer rol varsa, politika hatasız bir şekilde kaydedilecektir. (Hata güncelleme içindir, ancak oluşturma sırasında da çalışır)
You can automate this process with https://github.com/carlospolop/aws_tools
bash unauth_iam.sh -t user -i 316584767888 -r TestRole -w ./unauth_wordlist.txt
Our using Pacu:
run iam__enum_users --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
run iam__enum_roles --role-name admin --account-id 229736458923 --word-list /tmp/names.txt
The admin
role used in the example is a role in your account to by impersonated by pacu to create the policies it needs to create for the enumeration
Rol kötü yapılandırılmışsa ve herkesin onu üstlenmesine izin veriyorsa:
Saldırgan bunu varsayabilir.
Bir Github Actions iş akışı okuyabildiğinizi hayal edin, bu iş akışı AWS içindeki bir role erişiyor. Bu güven, aşağıdaki güven politikası ile bir role erişim sağlayabilir:
Bu güven politikası doğru olabilir, ancak daha fazla koşulun olmaması buna güvenmemeniz gerektiğini göstermelidir. Bu, önceki rolün Github Actions'tan HERHANGİ BİRİ tarafından üstlenilebileceği anlamına gelir! Koşullarda ayrıca org adı, repo adı, env, brach gibi diğer şeyleri de belirtmelisiniz...
Bir diğer potansiyel yanlış yapılandırma, aşağıdaki gibi bir koşul eklemektir:
Not edin ki joker karakter (*) nokta (:) öncesindedir. org_name1 gibi bir organizasyon oluşturabilir ve bir Github Action'dan rolü üstlenebilirsiniz.
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)